- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第21讲
5.1.3中断优先级控制及中断嵌套
中断优先级:89C51单片机有两个中断优先级,可实现两级中断嵌套。每个中断源的优先级别是由中断优先级寄存器IP中的相应位的状态控制的。使用软件将IP的某位置1,则相应的中断源为高优先级,若将IP的某位清0,则相应的中断源为低优先级。
IP(B8H) BCH BBH BAH B9H B8H
-- -- -- PS PT1 PX1 PT0 PX0 PS: 串行口中断优先级控制位。
PT1:定时器T1的中断优先级控制位。
PX1:外部中断1的中断优先级控制位。
PT0:定时器T0的中断优先级控制位。
PX0:外部中断0的中断优先级控制位。
例如,指令MOV IP,#03H((IP)),将把外部中断0、定时器T0置为高优先级,其它中断源为低优先级。
当同时有两个或两个以上相同优先级的中断请求时,则由中断查询顺序确定该响应哪个中断请求,中断查询顺序为:
外部中断0→定时器T0→外部中断1→定时器T1→串行口中断
中断嵌套:当CPU正在执行中断服务程序时,出现了更高优先级的中断请求,CPU将暂停正在运行的中断服务程序,自动保存当前的断点地址后,转去响应更高优先级的中断请求,并运行其中断服务程序,服务结束后,再恢复运行被中断的中断服务程序。该过程称为中断嵌套。中断嵌套的过程如图5-3所示。
复位后,(IP)=00H,所有中断源均被设置为低优先级,故也可以使用位操作指令设定高优先级的中断,如指令SETB PX0将把外部中断0设为高级中断。
中断优先级原则:当多个中断请求同时有效时,响应原则为
优先响应高优先级的中断请求,同级的按查询顺序响应;
高级中断可以中断正在运行的低级中断服务程序,形成中断嵌套。
同级的或低级的中断请求不能中断正在运行的中断服务程序。
为实现上述原则,中断系统内设有两个优先级状态触发器,CPU响应某一级别的中断请求时,将相应的优先级状态触发器置1,它将阻断之后发生的同级或低级中断请求。中断返回时自动清除该标志。
例5-2 设89C51的外部中断为高优先级,内部中断为低优先级。如何设置IP的值。
解 只要置PX1=1,PX0=1,即(05H)送入IP即可。
字节操作:MOV IP,#05H
位操作: SETB PX0
SETB PX1
5.1.4中断处理过程
中断处理过程可分为:中断响应、中断处理和中断返回三个阶段。
中断响应条件和时间
中断响应条件
有中断源发出中断请求(相应的中断标志为1)。
CPU开中断(EA=1,相应的中断允许位为1)。
当前正在执行的程序不是同级或更高级的中断服务程序。
必须执行完当前指令。
若当前正在执行RET、RETI或访问IP、IE指令,则必须再执行下面一条指令后才可以响应中断。
上述条件均满足时,CPU才响应中断。中断响应过程如下:
由硬件自动生成一条LCALL addr16指令,其中addr16是五个中断服务程序的入口地址(也称为中断向量),具体是:
外部中断0 0003H
定时器 T0 000BH
外部中断1 0013H
定时器 T1 001BH
串行口中断 0023H
CPU将当前PC值(断点地址)压栈,再将中断入口地址装入PC,使程序转向中断服务程序。置中断优先级状态触发器。
中断响应时间:从CPU查到中断请求到执行中断服务程序之间所需的“交接”时间,称为中断响应时间。对于无嵌套的单级中断,一般需要3~8个机器周期,如果中断响应过程受阻,就要等待更长时间。在某些精确定时控制的场合,应考虑中断响应时间。
中断处理:执行中断服务程序。
中断返回:中断服务程序的最后一条指令必须是中断返回指令RETI。执行RETI指令可实现的操作是:
从堆栈中弹出断点地址给PC,继续执行被中断的程序。
将相应的中断优先级状态触发器清0(此点与RET指令不同)。
第22讲
5.2 中断系统的编程和应用举例
关于中断服务程序:编写中断服务程序需注意以下几点。
各中断源的入口地址仅相隔8个单元,容纳不下中断服务程序,故应在入口地址处存放一条LJMP指令,转移至中断服务程序存放的实际地址去。
保护现场与恢复现场。
保护现场:中断服务程序经常用到ACC、PSW、B、R0~R7等,为使被中断的程序在上述寄存器中的数据不被破坏,应在进行中断服务之前将其内容保护起来,即保护现场。一般专用寄存器的内容采用进栈的方法保护,工作寄存器的内容采用换区的方法进行保护。
恢复现场:中断服务结束后,在中断返回之前,要恢复现场。当初保护现场时进栈的数据要如数恢复,即PUSH和POP指令必须成对出现,否则无法正确返回断
原创力文档


文档评论(0)