第21-22讲.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档