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

如果是一次中断完成的,是连续4次取SBUF的值吗?

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

如果超级中断上输入4个字符,点击回车后,那单片机这四次中断中间就不应该时间间隙了吧,应该连续产生四次中断吧?

追答

时间间隙是客观存在的,串口信号传输也是需要传输的。
举例来说,115200波特率,8位1停止位无奇偶校验,那么一帧的传输时间也有87个μs,即便对于51单片机来说也并非“没有间隙”。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-04
4次传输就是4次中断,一次中断读取一次SBUF。
第2个回答  2012-12-02
(注:以下不是程序,只是说明原理!)单片机怎么接收不知道,但如果是单片机发送时,我的想法是:
***dat[4]={0x00,0x01,0x02,0x03};//待发的4个数据
for(a=0;a<4;a++)
{
SBUF=dat[a];while(!TI);TI=0;
**(适当延时)**;
}
***
祝成功。追问

我是说接收,比如超级中断和51的串口通信,在终端上输入abcd四个字符。单片机分几次中断接收。如果是4次,连续的两次中断之间没有时间间隔吧。

追答

感觉应该没有间隔的,我用串口助手发送试过,单片机LCD显示的很正常,超级终端没玩过,不敢瞎说。

本回答被网友采纳
第3个回答  2012-12-02
别的不知道,但是51单片机明显用的是rs232串口,多数是1字节传送和接收,你要保证每次发送或接收一字节后就要产生一次中断,然后向寄存器读写数据,开始下一个字节的传送和接收,如果你用cpu轮询方式循环判断控制寄存器,那也和中断的做法一样。
玩不中断会用吧,51好像总共是两个外部中断信号,
第4个回答  2012-12-02
一个中断接收一个字节,如果下一个字节来了,上一个字节还没接收,就被覆盖了。
相似回答