打印

2个单片机全双工通信一定要握手协议吗?

[复制链接]
2812|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangxxyuan|  楼主 | 2010-5-18 16:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhangxxyuan 于 2010-5-18 18:56 编辑

1,2个单片机全双工通信一定要握手协议吗?我可不可以这样:用主机的定时器定一个较长的时间,时间到了后先往SBUF里赋值发送数据,然后等待接收从机给主机发送的数据;而从机也按照这样的方法,从而使这2个单片机完成不需要握手协议也可以进行全双工通信的目的?但是主机接收到的数据也在SBUF里放着,这样会不会导致发送与接收冲突?
2,单片机发送的数据在SBUF里,接收到的数据放在哪里?我收到数据了,在proteus仿真却发现SBUF里没有数据?
3,在keic51里,
我定义了一个字符数组char data[7]和
data2[0]=0xA5;
data2[1]=0x88;
data2[2]=0xC6 ;
data2[3]=0xF7;
上面4个数据相加溢出结果为0x62,但是下面的几条语句有问题
data2[5]=data2[0]+data2[1]+data2[2]+data2[3];//编译错误
data2[4]=(data2[0])+(data2[1])+(data2[2])+(data2[3]);//可以编译但是结果不是0x62?
data2[4]=0xA5+data2[1]+0xC6+0xF7;结果为0x62

相关帖子

沙发
ayb_ice| | 2010-5-18 16:50 | 只看该作者
本来随时都可以双向通信
当你要完成一定的实际功能时才需要协议,协议只是应用层的东东

使用特权

评论回复
板凳
zq1987731| | 2010-5-19 10:07 | 只看该作者
SBUF有2个,收发各一,根据你实际指令区分的,不管你何时发起通讯,对方何时应答甚至双方同时发起通讯都没影响,这就是全双工的好处。
另外LZ可以试试
data2[5]=(char)(data2[0]+data2[1]+data2[2]+data2[3]);
这个应该是编译器问题

使用特权

评论回复
地板
myic200610| | 2011-6-21 23:20 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

15

帖子

1

粉丝