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

51单片机里面串口通信有个发送和接收中断,这两个中断的向量号都是一样的,如果我只想在程序中写一个接收中断,也就是说我的中断子程序只会在接收中断的时候运行,而发送中断产生不... 51单片机里面串口通信有个发送和接收中断,这两个中断的向量号都是一样的,如果我只想在程序中写一个接收中断,也就是说我的中断子程序只会在接收中断的时候运行,而发送中断产生不运行,怎么去设置啊?IE寄存器里面有个ES只能控制接收/发送这个中断位啊,两个不能分开么?没分了~~就这么点了,帮帮忙吧 展开
 我来答
tx_bird
推荐于2018-05-14 · TA获得超过1842个赞
知道小有建树答主
回答量:738
采纳率:75%
帮助的人:674万
展开全部
在程序中检测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
zhxiufan
2012-06-19 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38387
国家科技进步奖

向TA提问 私信TA
展开全部
要想发送不产生中断也不是不可以,你可以这样处理,发送前,屏蔽中断,发送完后再打开。
如下:
SENDCOM:
CLR ES
CLR TI
MOV SBUF,A
JNB TI,$
CLR TI
SETB ES
RET
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式