51单片机串口接收多个字符(假如是4字节),是分4次中断传输的,还是一次中断完成的?

如果是一次中断完成的,是连续4次取SBUF的值吗?
2024-11-07 16:39:27
推荐回答(5个)
回答1:

对于51而言,每帧产生一次中断。接收4个字节是分4次中断接收完成的。
51的UART模块从串行移位寄存器接收完成后是直接放入接收缓冲的,而且接收缓冲只有一个单元。

回答2:

4次传输就是4次中断,一次中断读取一次SBUF。

回答3:

(注:以下不是程序,只是说明原理!)单片机怎么接收不知道,但如果是单片机发送时,我的想法是:
***dat[4]={0x00,0x01,0x02,0x03};//待发的4个数据
for(a=0;a<4;a++)
{
SBUF=dat[a];while(!TI);TI=0;
**(适当延时)**;
}
***
祝成功。

回答4:

别的不知道,但是51单片机明显用的是rs232串口,多数是1字节传送和接收,你要保证每次发送或接收一字节后就要产生一次中断,然后向寄存器读写数据,开始下一个字节的传送和接收,如果你用cpu轮询方式循环判断控制寄存器,那也和中断的做法一样。
玩不中断会用吧,51好像总共是两个外部中断信号,

回答5:

一个中断接收一个字节,如果下一个字节来了,上一个字节还没接收,就被覆盖了。