电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
关于51单片机串口中断的问题 RI TI寄存器设置
已解决
73482
个问题
已帮助
5993
位优秀工程师
关于51单片机串口中断的问题 RI TI寄存器设置
1209a6b76f22a509
2020-07-07
浏览量:1739
各位大佬好,我是新人
最近学51单片机有一个问题一直困惑着我,就是关于串口中断函数何时进入的问题,如下面代码
void Usart() interrupt 4
{
u8 receiveData;
receiveData=SBUF;
RI = 0;
SBUF=receiveData;
while(!TI);
TI=0;
}
复制代码
上面的串口中断函数应该是在RI或TI置一的时候进入,上面的中断函数初次进入是RI=1,但是运行到SBUF=receiveData的时候,此时TI应该置0,等待TI置1,那假如在这个程序中,TI在中断程序中变成1,那中断程序是直接运行到末尾还是重新从头运行,毕竟TI=1触发了中断,应该重头再次运行。
显示全部
单片机
关注问题
写回答
0
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
SunnyPlus
只能说你这个代码不严谨,一般来说串口中断代码应该先判断是RI的还是TI触发的中断,然后分别进行接收或发送,处理完成后要清相应的中断标志,如果在中断中产生了新的中断,并且已经清除了中断标志,那退出中断后,不会再入这次新产生的中断了。
发布于
2020-07-09
举报
评论 0
0
0
其他答案
数量:
2
莱克迷KW
这里涉及到了中断的嵌套了,中断嵌套时,会根据中断的优先级来判断,先运行高优先级的,运行完了再回到之间的中断函数中运行的。
发布于
2020-07-08
举报
评论 0
0
0
chen0000009
你在中断里面弄个while判断,这里有问题的
发布于
2020-07-22
举报
评论 0
0
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
关于51单片机串口中断的问题 RI TI寄存器设置
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: