|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
采用的时c51编写程序
问题1:两个51单片机之间采用串口异步单工通信,其中的一片(甲机)用导线接TXD端另一片(乙机)接RXD端,采用相同的波特率通信,在甲机的SBUF中写入数据后,此时在TXD端开始一位一位的向乙机发送
则发送一位(0或1)二进制数所用的时间是波特率的倒数(用u表示),我想知道当甲机经过u秒后在导线上就发送了一位二进制数,此时乙机是在这相同的u内就接受到这一位二进制数(这个过程可以描述为瞬间完成)呢?
还是这一位二进制数会在导线上传输一定时间后,再到达了乙机,然后乙机在经过u秒后把这位二进制数接收到SBUF中呢?
问题2:当某一个单片机作为串行异步通信的接收端时,在SBUF中接收完一帧数据时,RI置1,允许中断,在中断程序中处理SBUF中的数据,在进入中断服务程序后第一条指令是将RI清零,然后再提去SBUF中的数据,后面继续
执行其他的指令,直到退出中断,在这个过程中数据的发送端一直处于发送数据的状态,我想知道是否是在中断服务程序中第一条指令执行后,将RI清零后才开始接受下一帧的数据?如果是:那当SBUF又接收完一帧数据时,又
将RI置1,但此时cpu还执行中断服务程序,因为发送端在不停的发送数据,此时的SBUF的数据会被覆盖掉吗?如果会,SBUF中的数据是一位一位的被覆盖掉,还是接收完一帧同时被覆盖掉呢?
求熟悉51单片机的大佬解惑,刚学51单片机不久,最近学到串口通信这儿,以上是我困惑的地方,求解答。 |
|