发布时间:2022-09-09 09:30
在单片机执行任务过程中,可能会遇到其他任务需要优先执行,此时就需要引入中断。中断是广泛应用于51或ARM单片机里用于优先执行部分代码的重要功能,下图是中断过程示意图
我们结合此图对中断系统进行介绍。根据图片可以看出,与中断有关的寄存器有TCON、IE、IP(RX和TX这里不加赘述)
TCON:
TF1(TF0):定时计数器溢出标志位,当定时计数器记满时会自动置1,可通过if(TF1==1)或while语句来判断是否溢出,并执行下一步操作。
TR1(TR0):定时计数器的启动控制位,启动时软件编程置1
IE1(IE0):外部中断请求标志位
IT1(IT0):外部中断触发选择位,若为1,则为下降沿触发,若为0,则为低电平触发
IE:
EA:总中断开关,使用任何中断前要先使EA置1
ET2:52系列T2中断允许位
ES:置1时开放串行口中断
ET1(ET0):定时计数器T1(T0)溢出中断允许位,使用定时计数器时需要使其置1
EX1(EX0):外部中断INT1(INT0)允许位,使用外部中断前要使其置1
中断优先级寄存器IP:
51单片机有五个中断源,但只有两个优先级,必然会有几个中断请求源处于同样的优先级。当CPU同时接收到几个同优先级中断请求时,其内部会有一个硬件查询逻辑,将根据中断查询逻辑的自然优先顺序来查询。
51单片机自然优先级为:
外部中断0>定时器0>外部中断1>定时器1>串口中断>定时器2
51单片机的CPU在每一个周期都顺序查询每一个中断源,在机器周期的S5P2状态采样并按照优先级处理所有被激活的中断请求。但是在出现以下情况时,将不会处理中断请求:
①CPU正在处理更高级或同级中断
②现在的机器周期不是所执行指令的最后一个机器周期
③正在执行的指令是RETI或正在访问IE或IP
CPU响应中断时,首先会置位相应的优先级状态触发器,以阻断同级或低级触发请求。之后会自动清除响应的中断标志,并自动保护断电程序,将pc内容压入堆栈,并把中断源对应的矢量单元地址装入pc
zookeeper代替eureka与springcloud整合
Angular InjectionToken APP_INITIALIZER multi 标志位不同值的情况讨论
openCV项目实战-信用卡数字识别PyCharm版(唐宇迪)
全链路跟踪之线程上下文Thread Local实战(完整源码)
【论文笔记】Video Transformer Network
Python+Selenium使用Page Object实现页面自动化测试
到底什么是数据湖?全面解读数据湖的缘起、特征、技术、案例和趋势
Python爬取AES加密的m3u8视频流的小视频并转换成mp4