运城学院微机原理与接口技术课件第4章 中断系统.pptVIP

运城学院微机原理与接口技术课件第4章 中断系统.ppt

  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文档。上传文档
查看更多
* 例如,中断请求源IR1*与IR4*、IR6*同时发出中断请求的情况下,GS*端为低电平,向INT1*发出中断请求,同时A2~A0端仅输出中断优先级最高的编码“001”,当单片机响应该中断请求信号后,进入INT1*中断服务子程序,然后读入从P1.3~P1.1输入的编码“001”,从而去响应IR1*的中断请求。 为了使程序转向各中断源的中断服务子程序,必须在AT89S52的INT1*的中断服务程序中编写如下引导程序: * * 74LS148的输入端“7”(即IR0*端)具有最高优先权,输入端“0”( IR7*即端)优先权最低,这相当于给图中的8个外部中断请求源安排了一个中断优先级顺序。因此,当同时有多个中断源提出中断申请时,AT89S52只响应优先权最高的那个中断源的中断申请。 上述电路结构简单,价格低廉,但该电路无法实现中断嵌套。即当一个中断申请正在被执行时,单片机不能响应别的中断源的中断申请(仅指IR0*~IR7*)。 由于所扩展的外中断源都是向AT89S52提出中断申请,因此,这些外中断源在使用时应注意以下三个问题。 * (1)中断响应时间 AT89S52的外中断响应时间在3~8个机器周期内,由于AT89S52在真正为所扩展的外中断源(IR0*~IR7*)服务之前需执行一段引导程序,因此对所扩展的外中断源而言,中断响应时间还要把执行引导程序所需的时间算在内。 (2)中断申请信号低电平的宽度 扩展的外部中断源,中断请求信号的低电平要有足够宽度,应一直保持到AT89S52将74LS148提供的编码取走为止,否则会出现错误。AT89S52读取这个编码要执行4条指令,需7个机器周期,若系统时钟频率为12MHz,则外中断请求信号低电平的宽度至少要大于15μs。 * (3)堆栈深度的问题 由于AT89S52的堆栈只能设在片内RAM,字节有限,每次响应中断时都要把断点、现场的内容压入堆栈内,如果发生中断服务子程序中又调用子程序,则极容易发生堆栈溢出或侵占其它片内RAM内容,从而造成程序混乱,在使用中要特别注意。 除上述3种方法外,还可采用可编程中断控制器接口芯片8259A来进行外部中断源的扩展,限于篇幅,不作介绍,读者可查阅相关资料。 * 中断响应的过程: 首先由硬件自动生成一条长调用指令“LCALL addr16”。就是程序存储区中相应的中断入口地址。 例如,对于外部中断1的响应,硬件自动生成的长调用指令为 LCALL 0013H 首先将程序计数器PC的内容压入堆栈以保护断点,再将中断入口地址装入PC,使程序转向响应中断请求的中断入口地址。 各中断源服务程序的入口地址(也称中断矢量)是固定的 ,如表4-2所示。 * * 两个中断入口间只相隔8字节,难以安放一个完整的中断服务程序。因此,通常在中断入口地址处放置一条无条件转移指令,使程序执行转向中断服务程序入口。 * * 中断响应是有条件的,当遇到下列三种情况之一时,中断响应被封锁: (1)CPU正在处理同级或更高优先级的中断。 (2)所查询的机器周期不是当前正在执行指令的最后一个机器周期。只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令执行的完整性。 (3)正在执行的指令是RETI或是访问IE或IP的指令。因为按照AT89S52中断系统的规定,在执行完这些指令后,需要再执行完一条指令,才能响应新的中断请求。 如果存在上述三种情况之一,CPU将丢弃中断查询结果,不能对中断进行响应。 * * 4.5 外部中断的响应时间 使用外部中断时,需考虑从外部中断请求到转向中断入口地址所需的时间。 外部中断的最短响应时间为3个机器周期。其中中断请求标志位查询占1个机器周期,而这个机器周期恰好处于指令的最后一个机器周期。在这个机器周期结束后,中断即被响应,CPU接着执行一条硬件子程序调用指令LCALL到相应中断服务程序入口,需要2个机器周期。 外部中断响应的最长时间为8个机器周期。在CPU进行中断标志查询时,刚好才开始执行RETI或访问IE或IP的指令,需执行完指令再继续执行一条指令后,才响应中断。 * * 执行RETI或访问IE或IP的指令,最长需要2个机器周期。 接着再执行一条指令,最长指令(乘法指令MUL和除法指令DIV)来算,也只有4个机器周期。再加上硬件子程序调用指令LCALL的执行,需要2个机器周期,所以,外部中断响应的最长时间为8个机器周期。 如果已经在处理同级或更高级中断,外部中断请求的响应时间取决于正在执行的中断服务程序的处理时间,这种情况下,响应时间就无法计算了。 这样,在一个单一中断的系统里,AT89S52单片机对外部中断

文档评论(0)

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

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

1亿VIP精品文档

相关文档