6.1中断系统器_第1页
6.1中断系统器_第2页
6.1中断系统器_第3页
6.1中断系统器_第4页
6.1中断系统器_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中断的基本概念80C51中断源中断控制寄存器中断处理过程中断优先控制和中断嵌套中断系统的应用80C51定时/计数器控制寄存器定时/计数器操作方式定时/计数器的应用,第6章中断系统和提高CPU生产率具有实时处理功能的故障处理功能的时分操作、6.1.1中断的概要、中断是什么? 中断功能的强弱是计算机性能优劣的重要标志,中断源中断申请开放中断保护现场中断服务的恢复现场中断关闭,在中断相关的几个环节中,CPU在每个机械周期的S5P2期间自动查找各中断申请标志,设置某个标志由CPU识别中断请求的根据:INT0:外部中断0以及中断请求信号由P3.2输入。 从P3.3输入INT1:外部中断1、中断请求信号。

2、 T0:时序/计数器0溢出中断,外部脉冲计数从P3.4输入。 T1:时序/计数器1溢出中断,外部脉冲计数从P3.5输入。 串行中断:包括串行接收中断RI与串行传输中断TI。 6.1.2中断源和中断控制寄存器、中断源、中断源是指可以发出中断请求引起中断的装置或事件。 80C51单片机的中断源共有5个,其中2个是外部中断源,3个是内部中断源:中断请求:时序和外部中断控制寄存器TCON串行控制寄存器SCON; 中断许可控制寄存器IE; 中断优先级控制寄存器IP。 中断控制寄存器、80C51单片机中与中断控制相关的3个方面4个特殊功能寄存器:INT0、INT1、T0、T1中断请求标志设置在TCON中的

3、串行中断请求标志设置在SCON中。 另外,中断请求控制寄存器、TCON的配置、位名称、位地址和功能的数目变为:在存在TCON位功能: TF1 T1溢出中断请求标志T1的计数之后,存在TF1=1 TF0 T0溢出中断请求标志T0的计数IE1外中断请求标志P3.3端子信号有效时,IE1=1 IE0外中断请求标志P3.2端子信号有效时,IE0=1 IE0/IE1:外部中断请求标志位:=0:无外部中断请求=1:有外部中断请求。 IT1外部中断触发方式控制位IT1=1、边缘触发方式IT1=0、电平触发方式。 IT0外中断触发方式控制比特的含义和功能与IT1相似。 IT0/IT1:外部中断请求的触发方式选

4、择位:=0:在IT0/IT1侧请求中断的信号低电平有效=1:在IT0/IT1侧请求中断的信号负跳跃有效。 TI串行端口发送中断请求标志RI串行端口接收中断请求标志、80C51中断源的开/关由中断许可控制寄存器IE控制。 中断许可控制寄存器IE、IE的构成、位名和位地址如下:EA CPU中断许可控制位(总开关) EA=1、CPU on中EA=0、CPU为函数中,掩蔽全部5个中断源。 EX0外中断INT0中断许可控制位EX0=1,INT0打开中; EX0=0,在INT0关中。 EX1外中断INT1中断许可控制位EX1=1,INT1打开中; EX1=0,INT1函数中。 ET0定时/计数器T0中断许

5、可控制位ET0=1,T0开始中; ET0=0,T0关中。 ET1定时/计数器T1中断许可控制位ET1=1,T1打开中。 ET1=0,T1关中。 ES串行端口中断(包含串行发送、串行接收)允许控制位ES=1、串行端口启动中ES=0、串行端口函数中。 说明: 80C51对中断执行2阶段控制,总控制位为EA,每个中断源都有各自的控制位。 首先需要EA=1,其次需要自身的控制位置“1”。、例如:要打开INT0(其侑关中),执行以下命令: MOV IE,#1000000lB; 或: SETB EA; SETB EX0; 中断许可控制寄存器IE、PX0 :INT0中断优先控制位。 PX0=1、高优先级PX

6、0=0、低优先级PX1 :INT1中断优先控制比特。 控制方法相同。 PT0 :T0中断优先级控制位。 控制方法相同。 PT1 :T1中断优先级控制位。 控制方法相同。 PS :串行端口中断优先级控制位。 控制方法相同。 中断优先级控制发射机IP 80C51有5个中断源,分为高优先级和低优先级两个中断优先级。 IP的结构、位名和位地址如下:例如:int1,将串行端口设定为高优先级,将其套用中断源设定为低优先级,执行以下命令: MOV IP,#00010100B; 此外,如果将5个中断源全部设为高优先级,则不论优先级。 中断优先级控制寄存器IP, 6.1.3中断处理过程、中断处理过程大致分为中断

7、请求、中断应答、中断服务、中断恢复从中断请求中断源发出中断请求信号,将中断请求标志(中断许可控制寄存器IE中)设为“1” 中断响应条件:中断已经“开中”CPU此时没有对同等以上的中断进行响应处于当前正在执行的命令的最后的机器周期中正在执行的命令不是访问RETI、IE、IP的命令。 否则,在响应之前必须执行其他命令。 中断应答操作CPU应答中断后,执行以下操作:中断点地址的保护删除该中断源的中断请求标志关闭兄弟中断将相应的中断入口地址发送到80C51个中断入口地址: int 0 T0:000BH; INT1:0013H; T1:001BH; 串行端口: 0023H,运行中断服务程序的中断服务程序

8、应该包括以下部分:保护现场执行中断服务程序主体,完成相应操作,现场中断在中断服务程序的最后关闭,中断恢复指令打开兄弟中断,允许兄弟中断源请求中断。 6.1.4中断响应等待时间如果排除CPU应答等级以上的中断的状况,则中断响应等待时间为: 38机器周期6.1.5中断请求的撤除中断源发出中断请求,与此相应中断请求标志为“1”。 CPU响应中断后,需要清除中断请求“1”标志。 一旦中断响应关闭,就会再次进入该中断,引起死循环错误。 对于定时/计数器T0、T1中断、外部中断边缘触发方式,如果CPU响应中断,则对应的中断请求标志由硬件自动清除。 外部中断等级的触发方式需要以软硬结合的方式解决结果。 如果

9、是串行端口中断,用户必须使用串行中断服务程序通过软件清除TI或RI。 例如、硬件电路如图所示。 当从外部装置发出中断请求时,中断请求信号被反转,并且中断请求信号作为CP脉冲被加到锁存器CP侧。 d端子接地为0,q端子输出低,因此触发INT0发生中断。 CPU对中断进行应答后,在该中断服务程序中排列CLR P10: SETB P10这两个命令,取消引起反复中断的INT0低电平信号。 因此,为了将INT0、INTl中断到外部,需要尽量采用边缘触发方式,简化硬件电路和软件程序。 6.1.6中断优先控制和中断嵌套中断优先控制80C51中断优先控制首先基于中断优先级,并且规定了相同的中断优先级之间的中断

10、优先级。 按从高到低的顺序是INT0、T0、INT1、T1、串行端口。 中断优先级是可编程的,但是中断优先级是固定的,不能设定。 仅用于对等中断源同时请求中断时的优先级。80C51中断优先控制的基本原则:高优先中断可以中断响应中的低优先中断,反之亦然。 相同优先级的中断不能相互中断。 以相同的中断优先级,如果多个中断源同时请求中断,则CPU先响应于较高优先级的中断,然后响应于较低优先级的中断。中断嵌套、CPU正在运行中断服务程序时,如果发生高级别的中断源请求中断,则CPU可以“中断”正在运行的低优先中断,并对高级别的中断进行响应。 这就是中断嵌套。 中断嵌套只具有优先级高的“中断”低的优先级,

11、不具有优先级低的“中断”高的优先级,也不能以相同的优先级相互“中断”。 中断嵌套结构类似于调用子例程嵌套,但子例程嵌套在程序中是预先排列的,中断嵌套是随机发生的。 子程序嵌套没有顺序限制,中断嵌套只允许高优先级的“中断”低优先级。 6.1.7中断系统的应用中断初始化设定栈指针SP中断优先级定义外中断触发方式开放中断调度定义中断等待或中断发生前主程序应完成的操作内容。 中断服务主中断服务子程序的内容请求:在中断服务入口地址中设定跳转命令,迁移到中断服务程序的实际入口。 必要时保护现场。 中断源请求中断服务请求的操作。 恢复现场。 应对保护现场,注意先进先出、后进先出的操作原则。 中断返回,最后一

12、个命令必须是RETI。 中断初始化、堆栈指针SP的设置中断与断点PC地址的保护和现场数据的保护有关,要在堆栈中进行保护,请设定适当的堆栈深度。 深度要求不高,未使用工作寄存器组13时,可维持复位时的状态: SP=07H、深度24B(20H2FH为位地址区域)。 如果需要一定的深度,SP=60H或50H,深度可分别设定为32B和48B。 中断优先级的定义根据中断源的优先顺序,分为高优先级和低优先级。 通过MOV IP、#XXH或SETB XX命令进行设定。 另外,定义外部中断触发方式时,优选定义边缘触发方式。 当外部中断信号不适用边缘触发方式,必须采用电平触发方式时,采取在硬件电路上和中断服务程

13、序上去除中断请求信号的措施。 开放中断注意开放中断必须同时开放EA和需要开放中断的中断允许控制位的二次控制。 既可通过MOV IE、#XXH指令进行设定,也可通过SETB EA和SETB XX位操作指令进行设定。 在发生中断或中断之前,安排主程序应该完成的操作内容。 中断服务主站中断服务子例程的内容请求:在中断服务入口地址中设置跳转命令,迁移到中断服务程序的实际入口。 由于80C51的相邻的两个中断入口地址之间只有8B的空间,所以8B只能容纳具有38条指令的非常短的程序,一般情况下,由于中断服务程序都大大超过了8B的长度,因此在其它合适的地址空间中存在跳跃由于跳转指令可以使用SJMP、AJMP

14、或LJMP指令,并且SJMP和AJMP都会受到跳转范围的影响,因此建议使用LJMP指令可以将真正的中断服务程序无限制地放置在64KB的任何位置。 根据需要保护现场。 保护站点不是中断服务流程所必需的部分。 通常保护Acc、PSW、DPTR等特殊功能寄存器的内容。 如果中断服务程序不包括Acc、PSW或DPTR,则无需保护或恢复。 例如,累加器a是最普通的特殊功能寄存器, 另一方面,中断发生是随机的,正好操作a,a中的数据还能使用的时候可能会进入中断,如果进入中断服务程序改变a中的内容的话, 中断服务程序在操作a之前保护原来的a中的数据,中断完成后恢复a的原始数据,中断源请求中断服务请求的操作。

15、如果是外部中断电平触发方式,则需要中断信号撤除操作。 串行收发中断时,需要RI、TI清0指令。 恢复现场。 应对保护现场,注意先进先出、后进先出的操作原则。 (6)中断恢复,最后的命令必须是RETI。 【例6-1】出租车计程表的计程方法是,车轮每旋转一周就产生负脉冲,从外面中断INT0(P3.2)销的输入,将行驶距离作为轮胎周长的运转数,将轮胎周长作为2m,实时修正出租车行驶距离(单位米) 复位地址LJMP STAT; 初始化ORG 0003H的中断入口地址LJMP INT; 中断服务程序,ORG 0100H; 初始化程序起始地址STAT: MOV SP,#60H; 堆栈指针SETB IT0;

16、 置位边缘触发方式MOV IP,#01H; 优先级高的MOV IE、#81H; 开中MOV 30H,#0; 行走距离计数器清0 MOV 31H、#0; MOV 32H、#0; ljmp主机; 转动主程序,等待ORG 0200H的中断。 中断服务子例程起始地址int :推式ACC; 保护现场推压PSW; MOV A、30H; 读取低位8位计数器ADD A、#2。 低位8位计数器加2m MOV 30H、a; 回存CLR A。 ADDC A、31H; 中8位计数器进位MOV 31H、a; 回存CLR A。 ADDC A、32H; 前8位计数器进位MOV 32H、a; 保存推式电源。 修复现场推送ACC; RETI; 中断返回、主程序可以处理循环显示等任务。 【例6-3】现有的5个外部中断源EX1、EX20、EX21、EX22和EX23在高电平时请求中断,请求执行相应的中断服务程序,试制程序。 解: ORG0000H; 复位地址LJMPMAIN; 主程序ORG0003H; 中断入口地址LJMPPINT0; 中断服务程序ORG0013H中断入口地址LJMPPINT1; 中断服务程序,ORG0100H; 主程序起始地址MA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论