《最新AT89C51单片机中断系统.doc》由会员分享,可在线阅读,更多相关《最新AT89C51单片机中断系统.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品资料AT89C51单片机中断系统.第 5 章 AT89C51单片机中断系统U 难点 中断优先级控制原则 中断响应过程 要求 掌握: 中断控制的专用寄存器 中断响应过程 了解: 中断的概念 单片机的单步执行方式 5.1 中断的基本概念 在CPU 与外设交换信息时,存在着一个快速的 CPU 与慢速的外设之间的矛盾。为解决这个问题,发展了中断的概念。 单片机在某一时刻只能处理一个任务,当多个任务同时要求单片机处理时,这一要求应该怎么实现呢?通过中断可以实现多个任务的资源共享。 中断现象在现实生活中也会经常遇到,例如,你在看书手机响了你在书上作个记号你接通电话和对方聊天谈话结束从书上的记号处继续看
2、书。这就是一个中断过程。通过中断,你一个人在一特定的时刻,同时完成了看书和打电话两件事情。用计算机语言来描述,所谓的中断就是,当 CPU 正在处理某项事务的时候,如果外界或者内部发生了紧急事件,要求 CPU 暂停正在处理工作而去处理这个紧急事件,待处理完后,再回到原来中断的地方,继续执行原来被中断的程序,这个过程称作中断。 从中断的定义我们可以看到中断应具备中断源、中断响应、中断返回这样三个要素。中断源发出中断请求,单片机对中断请求进行响应,当中断响应完成后应进行中断返回,返回被中断的地方继续执行原来被中断的程序。5.2 MCS-51单片机的中断系统5.2.1 MCS-51单片机的中断源 MC
3、S-51单片机的中断源共有两类,它们分别是:外部中断和内部中断1. 外部中断源 l 外部中断0( ):来自 P3.2 引脚,采集到低电平或者下降沿时,产生中断请求。l 外部中断1( ):来自 P3.3 引脚,采集到低电平或者下降沿时,产生中断请求。2. 内部中断源 l 定时器计数器0( T0 ):定时功能时,计数脉冲来自片内;计数功能时,计数脉冲来自片外 P3.4 引脚。发生溢出时,产生中断请求。l 定时器计数器1( T1 ):定时功能时,计数脉冲来自片内;计数功能时,计数脉冲来自片外 P3.5 引脚。发生溢出时,产生中断请求。l 串行口:为完成串行数据传送而设置。单片机完成接受或发送一组数据
4、时,产生中断请求。5.2.2 中断控制的专用寄存器 MCS-51单片机为用户提供了四个专用寄存器,来控制单片机的中断系统。1. 定时器控制寄存器(TCON) 该寄存器用于保存外部中断请求以及定时器的计数溢出。进行字节操作时,寄存器地址为88H。按位操作时,各位的地址为88H8FH。寄存器的内容及位地址表示如下:位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 l IT0 和IT1外部中断请求触发方式控制位IT0 (IT1)1 脉冲触发方式,下降沿有效IT0 (IT1)0 电平触发方式,低电平有效l I
5、E0和IE1外中断请求标志位 当CPU采样到 (或 )端出现有效中断请求时,IE0(IE1)位由硬件置“1”。当中断响应完成转向中断服务程序时,由硬件把IE (或IE )清零。l TR0 和TR1定时器运行控制位TR0 (TR1 )0 定时器/计数器不工作TR0 (TR1 )1 定时器/计数器开始工作l TF0和TF1计数溢出标志位 当计数器产生计数溢出时,相应的溢出标志位由硬件置“1”。当转向中断服务时,再由硬件自动清“0”。计数溢出标志位的使用有两种情况:采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用。2. 串行口控制寄存器(SCON) 进行字节操作时,寄存器地
6、址为98H。按位操作时,各位的地址为98H9FH。寄存器的内容及位地址表示如下: 位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H 位符号 SM0 SM1 SM2 R EN TB8 RB8 TIRI其中与中断有关的控制位共2位:l TI串行口发送中断请求标志位当发送完一帧串行数据后,由硬件置“1”;在转向中断服务程序后,用软件清“0”。l RI串行口接收中断请求标志位 当接收完一帧串行数据后,由硬件置“1”;在转向中断服务程序后,用软件清“0”。串行中断请求由TI和RI的逻辑或得到。就是说,无论是发送标志还是接收标志,都会产生串行中断请求。3. 中断允许控制寄存器(IE)
7、 进行字节操作时,寄存器地址为0A8H。按位操作时,各位的地址为0A8H0AFH。寄存器的内容及位地址表示如下:位地址 0AFH 0AEH 0ADH 0ACH 0ABH 0AAH 0A9H 0A8H 位符号 EA / / ES ET1 EX1 ET0 EX0 其中与中断有关的控制位共6位:l EA中断允许总控制位EA0 中断总禁止,禁止所有中断EA1 中断总允许,总允许后中断的禁止或允许由各中断源的中断允许控制位进行设置。l EX0和EX1外部中断允许控制位EX0(EX1)0 禁止外部中断EX0(EX1)1 允许外部中断l ET0和ET1定时器/计数器中断允许控制位ET0(ET1)0 禁止定时
8、器/计数器中断ET0(ET1)0 允许定时器/计数器中断l ES串行中断允许控制位ES=0 禁止串行中断ES=1 允许串行中断可见,MCS-51单片机通过中断允许控制寄存器对中断的允许(开放)实行两级控制。即以EA位作为总控制位,以各中断源的中断允许位作为分控制位。当总控制位为禁止时,关闭整个中断系统,不管分控制为状态如何,整个中断系统为禁止状态;当总控制位为允许时,开放中断系统,这时才能由各分控制位设置各自中断的允许与禁止。MCS-51单片机复位后(IE)00H,因此中断系统处于禁止状态。单片机在中断响应后不会自动关闭中断。因此在转中断服务程序后,应根据需要使用有关指令禁止中断,即以软件方式
9、关闭中断。4. 中断优先级控制寄存器(IP) MCS-51单片机的中断优先级控制比较简单,因为系统只定义了高、低2个优先级。高优先级用“1”表示,低优先级用“0”表示。各中断源的优先级由中断优先级寄存器(IP)进行设定。IP寄存器地址0B8H,位地址为0BFH0B8H。寄存器的内容及位地址表示如下:位地址 0BFH 0BEH 0BDH 0BCH 0BBH 0BAH 0B9H 0B8H 位符号 / / / PS PT1 PX1 PT0 PX0 其中: PX0外部中断0优先级设定位;PT0定时中断0优先级设定位;PX1外部中断1优先级设定位;PT1定时中断1优先级设定位;PS串行中断优先级设定位。
10、以上各位设置为“0”时,则相应的中断源为低优先级;设置为“1”时,则相应的中断源为高优先级。优先级的控制原则是:l 低优先级中断请求不能打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服务,从而实现中断嵌套。l 如果一个中断请求已被响应,则同级的其它中断服务将被禁止。即同级不能嵌套。l 如果同级的多个中断同时出现,则按CPU查询次序确定哪个中断请求被响应。其查询次序为:外部中断0定时中断外部中断定时中断串行中断。 中断优先级控制,除了中断优先级控制寄存器之外,还有两个不可寻址的优先级状态触发器。其中一个用于指示某一高优先级中断正在进行服务,从而屏蔽其它高优先级中断;另一个用于指
11、示某一低优先级中断正在进行服务,从而屏蔽其它低优先级中断,但不能屏蔽高优先级的中断。此外,对于同级的多个中断请求查询的次序安排,也是通过专门的内部逻辑实现的。上述四个专用寄存器的用途可以用图5.1说明。图5.1 MCS-51中断系统 5.2.4 中断响应过程中断响应过程为,中断源发出中断请求对中断请求进行响应执行中断服务程序返回主程序。这个过程可分为三个阶段来完成。1. 中断采样 对于外部中断请求,中断请求信号来自于单片机外部,计算机要想知道有没有中断请求发生,必须对信号进行采样。 电平触发方式的外中断请求(IT0/IT10)采样到高电平时,表明没有中断请求,IE0或IE1继续为“0”。采样到
12、低电平时,IE0/IE1由硬件自动置“1”,表明有外中断请求发生。 脉冲触发式的外中断请求(IT0/IT11)在相邻的机器周期采样到的电平由高电平变为低电平时,则IE0/IE1由硬件自动置“1”,否则为“0”。2. 中断查询 由CPU测试TCON和SCON中的各个中断标志位的状态,确定有那个中断源发生请求,查询时按优先级顺序进行查询,即先查询高优先级再查询低优先级。如果同级,按以下顺序查询: S如果查询到有标志位为“1”,表明有中断请求发生,接着就从相邻的下一机器周期开始进行中断响应。3. 中断响应 当CPU查询到中断请求时,由硬件自动产生一条LCALL指令,LCALL指令执行时,首先将PC内
13、容压入堆栈进行断点保护,再把中断入口地址装入PC,使程序转向相应的中断区入口地址。LCALL指令的形式如下:LCALL addr16 ;addr16:中断入口地址入口地址已由系统设定,如下: 中断源 入口地址 0003H T0 000BH 0013H T1 001BH S 0023H 从表中可以看出,每个中断区只有8个单元,很难安排下一个中断程序,一般是在中断入口地址处加一条跳转指令,跳转到用户的服务程序入口。编写中断服务程序的格式一般如下:ORG 0000HSJMP MAINORG 0003HAJMP 1NJERRVPMAIN: HERE: SJMP HERE1NJERRVP: ;中断响应程
14、序RETI并不是所有的请求都被响应,当遇到下列情况之一时不响应这些中断请求:(1)CPU正在处理一个同级或者高级的中断服务(2)当前指令还没有执行完毕(3)当前指令是RET、RETI或者是访问IP、IE的指令,执行完这些指令后,还必须再执行一条指令,才响应中断请求。 注意:MCS-51单片机对中断查询结果不作记忆,当有新的查询结果出现时,因为以上原因而被拖延的查询结果将不复存在,其中断请求也就不能再被响应了。5.2.5 中断请求的撤销 中断响应后,TCON和SCON的中断请求标志位应及时撤销。否则意味着中断请求仍然存在,有可能造成中断的重复查询和响应,因此需要在中断响应完成后,撤销其中断标志。
15、1. 定时中断请求的撤销 硬件自动把TF0(TF1)清0,不需要用户参与。2. 串行中断请求的撤销 需要软件清零。3. 外部中断请求的撤销 (1)脉冲触发方式的外中断请求撤销中断标志位的清零是自动的,脉冲信号过后就不存在了,因此其撤销是自动的。(2)电平触发方式的外中断请求撤销中断标志位的清零是自动的,但是如果低电平持续存在,在以后的机器周期采样时,又会把中断请求标志位(IE 0 /IE 1)置位。为此,需要外加电路,把中断请求信号从低电平强制为高电平。电路如图5.2所示:图5.2 电平触发方式的外中断请求撤销 通过直接置位端 使中断请求信号强制从低电平变为高电平,要实现此功能需要在中断入口地
16、址处加入如下两条指令: ORL P1, #01H ANL P1, #0FEH5.2.6 MCS-51单步执行工作方式所谓单步执行就是按一次键,CPU执行一条指令。假设利用外部中断0实现。需要做两项准备工作。 (1)建立单步执行的外部电路,不按键时产生低电平,按键时产生高电平。 (2)设置 为电平触发方式。 编写 的中断服务程序 ORG0000H SJMPMAIN ORG0003H WAIT1:JNBP3.2 , WAIT1;若P3.2为低电平,则原地踏步WAIT2:JB P3.2 , WAIT2;若P3.2为高电平,则原地踏步 RETI MAIN: MOVIE, #81H CLR IT0 5.
17、3 中断系统的应用举例 【例6-3】使用外部中断0,当每次响应中断时,P1口依次输出高电平,使8个发光二极管依次循环熄灭闪烁。 1) 电路设计2) 程序设计 ORG 0000H LJMP MAIN ;转主程序 ORG 0003H ;外部中断0入口地址 LJMP EXTER ;转中断程序 ORG 1000H MAIN: SETB IT0 ;外部中断0下降沿有效 SETB EX0 ;外部中断0允许 SETB EA ;总中断允许 LOOP: AJMP LOOP ;等待中断 ORG 1050H ;中断程序入口 EXTER: MOV R2, #0FFH ;置循环次数 MOV A, #01H ;灯亮初值 FLASH: RR A ;右移一位 MOV R7, #0FFH ;定时 LOOP1: MOV R6, #0FFH LOOP2: NOP NOP DJNZ R6, LOOP2 DJNZ R7, LOOP1 MOV P1, A ;控制灯的亮灭 DJNZ R2, FLASH ;循环 RETI ;中断返回 END*