中断响应与中断服务:

来自:旭
3年前
已收藏
收藏
阅读数
386
回复数
0

中断处理过程分为3个阶段:中断响应、中断处理和中断返回。 1.中断响应: 中断响应是接受中断源提出的中断请求。中断响应是满足CPU的中断响应条件后,CPU对中断源中断请求的回答。CPU响应中断的条件有:有中断源发出中断请求,CPU开始中断,申请中断的中断源没有被关闭,无同级或更高级中断正在被服务,当前指令周期已结束。 2.中断响应过程及返回: CPU要在以下三个条件同时具备的情况下才有可能响应中断:第一是中断源有中断请求;第二是CPU的中断允许位EA(IE.7)被置位;第三是某个中断源相应的中断允许位被置位。后两条可通过编程来设置。 MCS-51单片机中断系统有两个不可编程的“优先级生效”触发器:一个“高优先级生效”触发器;一个“低优先级生效”触发器;前者指示某高优先级的中断正在执行,所以后来的中断都将被阻止;后者指示某低优先级的中断正在执行,所有同级中断都将被阻止,但不阻止优先级较高的中断。CPU在每个机器周期对各中断源采样,设置相应的中断标志位,并在下一个机器周期按优先级顺序查询各中断标志,如查询某个中断标志为1,将在下一个


机器周期按优先级进行中断处理。单片机一旦响应中断,先置位相应的中断“优先级生效”触发器,然后由硬件执行长调用指令( LCALL),PC值压栈保护(即保护现场),再将中断服务程序的入口地址送入PC,于是CPU接着从中断服务程序的入口处开始执行。中断源入口地址如表1-10所示。
单片机的两个相邻中断源中断服务程序入口地址相距只有8个单元,一般中断服务程序容纳不下,因此在该中断的入口地址处放一条长跳转指令(LJMP),这样就可以转到64kB的任何可用区域了。在2kB范围内转移可用短跳转AJMP指令。 一般情况下,中断处理包括两部分内容:一是保护现场,即进入中断服务程序前保存PSW、工作寄存器和SFR等的内容;二是中断源服务。 中断服务程序开始执行,直到返回指令(RETI)为止。RETI指令表示该中断服务程序执行完毕,把压入堆栈的断点地址弹出,并装入PC(即恢复现场),使程序返回到被中断的程序断点处继续执行。 在中断服务程序中,PUSH指令和POP指令必须成对使用,否则不会正确恢复现场。 3.中断请求的撤除。 CPU响应中断请求后,在中断返回前,中断请求信号必须撤除,否则会引起另一次中断。 般在使用中断时需要对中断进行初始化设置,设置步骤如下。 ①开中断:中断总允许位(EA)置“1”,相应中断源中断允许位置“1”。 ②对外部中断应选定中断触发方式,确定电平触发或负边沿触发。 ③对多个中断源,需设定中断优先级。

上一篇下一篇
参与回答(0条评论)
用户头像
上传
用户头像
{{item.nickname}}{{item.pubtime}}回复
回复图片
用户头像
上传
用户头像
{{item1.nickname}}回复 {{item1.othername}} {{item1.pubtime}} 回复
回复图片
用户头像
上传
查看全部回复{{item.replylist_count}}条 查看全部
收起回复 收起全部
{{isLoadList==1?'加载中...':(isLoadList==2&&(list.length <=3||(list.length>3&&!is_hidden))?'没有更多内容了':'查看更多回答')}}
返回顶部

返回顶部