两个单片机直接电平通信行吗?

我想把AVR作为主机。51为从机,用AVR发送电平来控制51,在原理上是可以的,我想问一下各位,这样在实际里实用吗?会不会有什么影响?有什么解决方式。
还想问,两类单片机如果想实现在数据传输,可以用哪种总线啊或其他解决方案。如果答案很好,我一定一定加分。

简单,一跟时钟一跟数据就可以一个发数据一个收数据
软件模拟就可以
#include<reg52.h>
sbit date=P2^0; //数据线为接收AVR的数据
sbit sck =P2^1; //时钟线给AVR发送时钟用

unsigned char c,temp=0; //51接数据

for(c=0;c<8;c++)
{
sck = 1; //发送一个1给AVR告诉AVR发数据 数据发送端高位在前
delay(); //等待一下

if(date) temp|=(0x80>>c) //接受AVR发来的数据

sck = 0; //为下次接收数据做准备
}

#include<iom16v.h>
#define sck portx //时钟线为接收51时钟信号
#define data portx //数据线给51发送数据用

void write(unsigned char temp) //发8位数据
{
unsigned char c;

for(c=0;c<8;c++)
{
if(sck) //AVR接收到51的时钟发来一个1就发送一位数据
{
if(temp&0x80) data=1;
else data=0;

temp<<=1; while(sck==1); //等待51接收完数据
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-24
可以直接通信,只要IO口的输入输出设置好了就没关系,没有影响的
可用的通信方式可多了
AVR就自带SPI,UART,TWI(I2C)等,当然51只有UART,要用其它方式通信,你还要用IO口模拟出这些总线的时序,比较麻烦。最简单的方式是直接八位并行通行,或者用UART串口
第2个回答  2009-08-24
用串行通信吧,如果距离很远的话,可能不大好
相似回答