单片机串口通信的问题

2019-07-15 16:49发布

本帖最后由 music_mc 于 2015-6-17 22:55 编辑
  1. P0=0xf0;
  2. S2BUF=0xfc;       
  3. P0=S2BUF; //为什么这里P0=0X00???
  4. while(!(S2CON & S2ti));
  5. S2CON &= ~S2TI;
复制代码双机通信
单片机相同是STC15F60s2
波特率相同,误差%0为什么P0会是0x00?中断里面什么都没
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
Aidaohuakai
1楼-- · 2019-07-16 10:03
music_mc 发表于 2015-6-18 18:02
这个有道理,S2BUF是2个寄存器,同个地址,收发相同地址,只是,应该如何印证确实是这样的呢

名字相同的缓冲器S2BUF,为什么能实现双机通信(发送和接收)?
名字相同地址不同啊,就相当于有2个缓冲器!
能实现发送和接收已经证明名称相同地址不同。
lgs9857
2楼-- · 2019-07-16 11:02
确定P0=0X00么?     P0=0Xfc
music_mc
3楼-- · 2019-07-16 11:26
Aidaohuakai 发表于 2015-6-18 20:15
名字相同的缓冲器S2BUF,为什么能实现双机通信(发送和接收)?
名字相同地址不同啊,就相当于有2个缓冲器!
能实现发送和接收已经证明名称相同地址不同。

不是的,手册说到,S2BUF是 发送缓存器和接收缓存器,是2个不同寄存器,但他们共用1个地址,共用1个名字,由CPU自己判断
music_mc
4楼-- · 2019-07-16 13:23
 精彩回答 2  元偷偷看……
Aidaohuakai
5楼-- · 2019-07-16 18:38
music_mc 发表于 2015-6-19 00:32
不是的,手册说到,S2BUF是 发送缓存器和接收缓存器,是2个不同寄存器,但他们共用1个地址,共用1个名字,由CPU自己判断

既然有2个寄存器,就有2个地址,只是入口地址一样,但并不代表2个寄存器的地址就一样,如果一样的话,CPU就无法判断。
Aidaohuakai
6楼-- · 2019-07-16 22:56
楼主用串口肯定遇到了问题,何必拐弯抹角?不妨直接说出来!

一周热门 更多>