永发信息网

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

答案:5  悬赏:0  手机版
解决时间 2021-01-23 04:46
  • 提问者网友:遁入空寂
  • 2021-01-22 19:13
51单片机串口接收多个字符(假如是4字节),是分4次中断传输的,还是一次中断完成的?
最佳答案
  • 五星知识达人网友:孤独的牧羊人
  • 2021-01-22 20:46
对于51而言,每帧产生一次中断。接收4个字节是分4次中断接收完成的。
51的UART模块从串行移位寄存器接收完成后是直接放入接收缓冲的,而且接收缓冲只有一个单元。追问如果超级中断上输入4个字符,点击回车后,那单片机这四次中断中间就不应该时间间隙了吧,应该连续产生四次中断吧?追答时间间隙是客观存在的,串口信号传输也是需要传输的。
举例来说,115200波特率,8位1停止位无奇偶校验,那么一帧的传输时间也有87个μs,即便对于51单片机来说也并非“没有间隙”。
全部回答
  • 1楼网友:玩世
  • 2021-01-23 01:00
一个中断接收一个字节,如果下一个字节来了,上一个字节还没接收,就被覆盖了。
  • 2楼网友:罪歌
  • 2021-01-22 23:33
别的不知道,但是51单片机明显用的是rs232串口,多数是1字节传送和接收,你要保证每次发送或接收一字节后就要产生一次中断,然后向寄存器读写数据,开始下一个字节的传送和接收,如果你用cpu轮询方式循环判断控制寄存器,那也和中断的做法一样。
玩不中断会用吧,51好像总共是两个外部中断信号,
  • 3楼网友:话散在刀尖上
  • 2021-01-22 23:26
4次传输就是4次中断,一次中断读取一次SBUF。
  • 4楼网友:煞尾
  • 2021-01-22 22:03
(注:以下不是程序,只是说明原理!)单片机怎么接收不知道,但如果是单片机发送时,我的想法是:
***dat[4]={0x00,0x01,0x02,0x03};//待发的4个数据
for(a=0;a<4;a++)
{
SBUF=dat[a];while(!TI);TI=0;
**(适当延时)**;
}
***
祝成功。追问我是说接收,比如超级中断和51的串口通信,在终端上输入abcd四个字符。单片机分几次中断接收。如果是4次,连续的两次中断之间没有时间间隔吧。追答感觉应该没有间隔的,我用串口助手发送试过,单片机LCD显示的很正常,超级终端没玩过,不敢瞎说。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯