51单片机的串口通信中接收中断和发送中断的问题。

51单片机里面串口通信有个发送和接收中断,这两个中断的向量号都是一样的,如果我只想在程序中写一个接收中断,也就是说我的中断子程序只会在接收中断的时候运行,而发送中断产生不运行,怎么去设置啊?IE寄存器里面有个ES只能控制接收/发送这个中断位啊,两个不能分开么?没分了~~就这么点了,帮帮忙吧

在程序中检测RI和TI,RI表示接收中断,TI表示发送中断,如果只要在接收中断时运行,可以如下设置:
......
JNB RI,EXIT
......
CLR RI
......
EXIT:
RETI追问

嗯,就是中断标志位置一的话就直接跳转到中断子程序去了啊,我不能再主程序里面检测想跳哪跳哪吧?

追答

我用的是“RETI”啊,就是说是在中断直接处理的啊,假设:中断程序名为COMM,那么:

COMM:
PUSH A
JNB RI,EXIT ;如果不是接收中断,那么直接跳到“EXIT”标号出
CLR RI ;如果是接收中断,那么就执行中断处理
......
;这里写你需要的,接收中断的处理过程
......
EXIT: ;跳出中断,返回主程序
POP A
RETI

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-19
要想发送不产生中断也不是不可以,你可以这样处理,发送前,屏蔽中断,发送完后再打开。
如下:
SENDCOM:
CLR ES
CLR TI
MOV SBUF,A
JNB TI,$
CLR TI
SETB ES
RET本回答被网友采纳

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

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

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

51单片机串口发送数据时会产生中断吗
如果开了串口中断,接收,发送都会产生中断。建议,都用中断方式。串口接收到数据后,如果没有读出来,又接收到数据了,前面的一个数据就丢掉了。特别是当你接收到字符串的时候,你关中断,或者用查询方式,就容易掉数据。

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

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

C51 串口 TI发送中断标志位的问题?
在发送数据时,如果数据已经完全发送出去,即发送缓冲区为空,那么TI会被置为1,表示可以发送新的数据。此时,如果单片机检测到TI为1,就会产生一个中断请求,通知单片机可以继续进行下一次串口发送操作。需要注意的是,TI标志位只用于指示串口发送缓冲区是否为空,而不能直接用于控制串口发送操作。因此,...

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

51单片机串口通信,下面的何时发生中断?为什么要加一个flag=1?有什么...
这里我给你解释一下 flag = 1;的作用, 比如串口调试助手,发送数据单片机自动开启接收中断,接收RI = 1; 当单片机接收数据完成后,必须软件进行清零RI = 0,说明接收结束,至于flag = 1; 是一个标志,是用来切换接收和发送,如果不用flag 的话单片机只能接收,程序里面单片机接收数据完成后。软件...

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

相似回答