51单片机串口接收中断疑问

当51单品机在发送到第8位数据的时候硬件将TI置1,系统进入中端,在中断中必须将TI清零。但是如果在接受中断中且将TI清零后,我再通过串口发送一数据,也就是说我又在串口接收中断中发送数据,请问程序会继续重新进入串口中断函数中吗?

1、不会打断正在进行的中断,因为同一中断不能嵌套;
2、假如你的中断函数足够长的话,本次中断结束后,会再一次进入中断;
3、假如你的中断函数足够长的话,因为在中断中需要读取sbuf的数据,而你在本次中断结束之前发送了字符,改变了sbuf的值,必定会发生错误;
4、一般情况下中断函数不会很长,所以上述2、3情况一般不会发生,放心大胆的向串口发送数据吧。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-07
51单片机有好多种的,具体的厂家可能不完全遵守标准8051标准。
不过从你所述来说,应该是指发送完成中断。
这时你在中断中发送,当发送完成时,是会置发送完成标志位的。
如果在发送完成时,已从中断退出,和平时中断一样,再次进入中断。
如果在发送完成时,还未退出此次中断,因为新的中断和现在中断优先级一样,所以不会打断现在的中断程序,会直到现在的中断退出后才重新进入中断。
第2个回答  2011-12-07
必须会
串口发送数据的时间会远长于指令执行时长,如果在接收或发送中断中一直执行代码(再发)到发送完成还未退出,且退出前未将再次置位的标志位清除,在退出后会再次进入中断程序。
第3个回答  2011-12-09
中断不能嵌套,就是不会!

51单片机串口通信中断的问题
肯定不会运行while(TI==0);下面的程序的,因为你的中断开着,程序跳到中断服务程序里面了,然后中断处理结束了之后,TI自动清零了,所以一直在while(TI==0);无限循环。程序里面,既然开通了中断功能,那你就一直使用中断功能,为什么你还要使用查询功能呢?甚至有时把中断给禁止了,这里面容易出现问题哈...

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

51单片机串口接收中断连续接收字符串,中断一直占有CPU时间直到字符串...
1楼的说法明显不对,串口接收时有标志位RI,当串口接收到一个字符(8位)时,RI会自动被置1,此时CPU会从主程序转去执行串行中断,普通单串口51单片机一般为 interrupt 4 子程序,当执行完时会自动回到主程序继续执行,因此自 interrupt 4子程序结尾要把RI清零,以接受下一个中断,否则无法再接收下一...

看了51单片机的串口通信,有一些疑问??
所以在串口中断服务中,不能有太多的程序去处理,因为处理这数据时,串口被中断占用就不能接收数据。通常将需要处理的数据放到主程序中,因为前面说了,主程序和串口接收是可以同时运行的。如果在串口中断服务中,程序较多,占去太多时间,正如你说的,那就会丢帧而出错,这是不允许的。

51单片机的串口通信中接收中断和发送中断的问题。
在程序中检测RI和TI,RI表示接收中断,TI表示发送中断,如果只要在接收中断时运行,可以如下设置:...JNB RI,EXIT ...CLR RI ...EXIT:RETI

51单片机串口通信问题
一个一个问题回答:1、是在一个字节接收成功或一个字节发送成功以后进入中断程序(不过,一般在发送时是将中断关闭的,也就不进入中断了)。此时,定时器的作用就是为了设定串口速率,因为单片机的速度和串口的速度不是一个数量级的,所以一定要有个变速箱。2、数据的接收是由硬件控制的,其实,数据的...

51单片机串口接收中断怎么触发?
如果你都已经配置好了,那么下降沿+有效起始位就能触发串口接收中断。

51单片机在什么情况下会产生串口中断
而串口中断是一种内部中断,所谓内部中断,是单片机执行内部程序,由内部定时器或其他中断源触发的,通常要生成串行中断或其他中断,首先必须有中断和总中断。例如:串行中断EA=1;//ES总中断量=1;//串行中断},那么只有在中断源事件发生时,你指的是串行中断,是当串口发送或接收完成TI和RI中断...

请问51单片机如何解决多字节串口接收问题
串口的收发可以用查询和中断两个办法来实现。1、查询方法更适合于半双工机制,编写的思路简单,程序结构简单,在全双工通信中易出问题。2、中断方法则更高效。你的程序把两种方法混搭使用,容易出错。以你的程序为例,一旦收到首个23H字符,就停止在中断服务中for循环里面等待5个剩余字符。假设传感器只发...

两个51单片机485串口通信接收数据出错原因?大概发送三、五次会有一次...
1.有人在发送数据之前,先关闭了串口中断!等待发送完毕后,再打开串口中断。这样,在发送数据的等待期间内,如果收到了数据,将不能进入中断函数,也就不会保存的这个新收到的数据。这种处理方法,就会遗漏收到的数据。2.有人在发送数据之前,并没有关闭串口中断,当 TI = 1 时,是可以进入中断...

相似回答
大家正在搜