51单片机的串口通信中接收中断和发送中断的问题。
51单片机里面串口通信有个发送和接收中断,这两个中断的向量号都是一样的,如果我只想在程序中写一个接收中断,也就是说我的中断子程序只会在接收中断的时候运行,而发送中断产生不...
51单片机里面串口通信有个发送和接收中断,这两个中断的向量号都是一样的,如果我只想在程序中写一个接收中断,也就是说我的中断子程序只会在接收中断的时候运行,而发送中断产生不运行,怎么去设置啊?IE寄存器里面有个ES只能控制接收/发送这个中断位啊,两个不能分开么?没分了~~就这么点了,帮帮忙吧
展开
2个回答
展开全部
在程序中检测RI和TI,RI表示接收中断,TI表示发送中断,如果只要在接收中断时运行,可以如下设置:
......
JNB RI,EXIT
......
CLR RI
......
EXIT:
RETI
......
JNB RI,EXIT
......
CLR RI
......
EXIT:
RETI
追问
嗯,就是中断标志位置一的话就直接跳转到中断子程序去了啊,我不能再主程序里面检测想跳哪跳哪吧?
追答
我用的是“RETI”啊,就是说是在中断直接处理的啊,假设:中断程序名为COMM,那么:
COMM:
PUSH A
JNB RI,EXIT ;如果不是接收中断,那么直接跳到“EXIT”标号出
CLR RI ;如果是接收中断,那么就执行中断处理
......
;这里写你需要的,接收中断的处理过程
......
EXIT: ;跳出中断,返回主程序
POP A
RETI
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询