北京邮电大学出版|C51单片机中断处理有哪几个阶段?
【北京邮电大学出版|C51单片机中断处理有哪几个阶段?】中断处理可分为三个阶段,即中断响应?中断处理和中断返回?
1.中断响应
C51单片机的CPU在每一个机器周期内顺序查询每一个中断源?当有中断源申请中断时,先将这些中断请求锁存在各自的中断标志位中,在下一个机器周期这些被置位的中断标志位将会被查到?如果中断允许总控制位EA为1,申请中断的中断源所对应的分允许控制位也为1,中断系统先判断其中断优先级高低;然后修改程序计数器PC的当前值,CPU转入执行相应的中断服务程序?但下列三个条件中的任何一个都能封锁CPU对中断的响应?
(1)CPU正在处理同级的或高一级的中断?
(2)当前指令未执行完?
(3)当前正在执行的指令是中断返回指令或是对IE或IP寄存器进行读/写的指令?上述三个条件中,第二条是保证把当前指令执行完;第三条是保证,如果正在执行的是中断返回指令或是对IE?IP访问的指令时,必须至少再执行完一条指令之后才会响应中断?
2.中断处理
如果一个中断被响应,则按下列过程进行处理?
(1)置相应的优先级触发器状态为1,以封锁同级和低级的中断请求,但是允许高级的中断请求?
(2)在硬件控制下,将被中断的程序的断点地址(PC的当前值)压入堆栈进行保护,即保护断点,以便从中断服务程序返回时能继续执行该程序?
(3)根据中断源的类别,在硬件的控制下,程序的执行转到相应的中断入口地址,即将被响应的中断入口地址送入PC中,开始执行中断服务程序,并清除中断源的中断请求标志(TI和RI必须由指令清除)?与各中断源对应的中断入口地址见表?
由于这5个中断源的中断入口地址之间,相互仅间隔8字节单元?一般情况下,8字节单元是不足以存放一个中断服务程序的?因此,通常在中断入口处安排一条跳转指令,以跳转到存放在其他地址空间的中断服务程序入口处?3.中断返回
中断服务程序的最后一条指令必须是中断返回指令?在CPU执行中断返回指令时,对响应中断时所置位的优先级状态触发器清零,然后从堆栈中弹出栈顶上的2字节到PC中,恢复断点,CPU从断点处重新执行被中断的程序?如果进行中断处理需要保护现场,那么应该在中断服务程序的开头部分用指令把有关存储单元的内容压入堆栈,在中断返回前,再用指令从堆栈中弹出相应存储单元的内容,以完成恢复现场操作?
中断源的入口地址
文章图片
推荐阅读
- haoenyiqi|盐水喷雾测试机
- 北京日报客户端|互动动感单车、智能健身仓……西二环边新增运动休闲好去处
- 梅花之快乐|上层阶级如何产生?耶鲁大学老鼠阶级实验告诉你
- IT之家|CEO 任正非访问南京大学:不拘一格培养创新人才,华为
- 坤轮网|2020年支付行业的生存挑战
- 产业气象站|点赞“中国芯里的南大智慧”!华为公司CEO任正非一行访问南京大学
- 丹东云播|“剁手党”注意了!支付宝迎来重大改变...
- 技术联盟|任正非3天拜访3所国内一流大学:为华为争取更多资源
- 科技蜂向标|黑鲨3S体验:你是时候买一台游戏手机了
- 一坨麦顶顶|为什么要给网店定位?