单片机中断系统

上传人:博****1 文档编号:571007578 上传时间:2024-08-08 格式:PPT 页数:47 大小:388.50KB
返回 下载 相关 举报
单片机中断系统_第1页
第1页 / 共47页
单片机中断系统_第2页
第2页 / 共47页
单片机中断系统_第3页
第3页 / 共47页
单片机中断系统_第4页
第4页 / 共47页
单片机中断系统_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《单片机中断系统》由会员分享,可在线阅读,更多相关《单片机中断系统(47页珍藏版)》请在金锄头文库上搜索。

1、第七章第七章 中断系统中断系统主要内容:主要内容:7.17.1中断概述中断概述7.27.2中断源和中断控制寄存器中断源和中断控制寄存器7.3 7.3 中断处理过程中断处理过程7.1 7.1 中断概述中断概述 1.什么叫中断 CPU暂时中止其正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,等处理完毕后再返回执行原来中止的程序, 叫做中断。7.17.1中断概述中断概述一、 什么叫中断?7.1 7.1 中断概述中断概述 2. 中断与调用子程序,不同的是: 子程序嵌套是在程序中事先按排好的;中断嵌套是随机发生的。 子程序嵌套无次序限制,中断嵌套只允许高优先级“中断”低优先级。7.1 7.1

2、 中断概述中断概述 二、 为什么要设置中断? 提高CPU工作效率 具有实时处理功能 具有故障处理功能 实现分时操作中断功能强弱是计算机性能优劣中断功能强弱是计算机性能优劣的重要标志的重要标志7.1 7.1 中断概述中断概述 中断源中断源 中断申请中断申请开放中断开放中断保护现场保护现场中断服务中断服务恢复现场恢复现场中断返回中断返回三、中断涉及的几个环节7.1 7.1 中断概述中断概述 CPU 在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。四、CPU识别中断申请的依据:7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器一、中断源一、

3、中断源 中断源是指能发出中断请求,引起中断的装置或事件。 80C51单片机的中断源共有5个,其中2个为外部中断源,3个为内部中断源:7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器 INT0:外部中断0,中断请求信号由P3.2输入。 INT1:外部中断1,中断请求信号由P3.3输入。 T0:定时/计数器0溢出中断,对外部脉冲计数由P3.4输入。 T1:定时/计数器1溢出中断,对外部脉冲计数由P3.5输入。 串行中断:包括串行接收中断RI和串行发送中断TI。7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器中断请求:定时和外中断控制寄存器TCON; 串行控制寄存器SCON;

4、中断允许控制寄存器IE;中断优先级控制寄存器IP。 二、二、 中断控制寄存器中断控制寄存器 8080C51C51单片机中涉及中断控制的有单片机中涉及中断控制的有3 3个方面个方面4 4个特殊功能寄个特殊功能寄存器存器:7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器INT0INT0、INT1INT1、T0T0、T1T1中断请求标志放在中断请求标志放在TCONTCON中中串行中断请求标志放在串行中断请求标志放在SCONSCON中。中。1. 中断请求控制寄存器TCONTCON8 8FHFH8 8EHEH8 8DHDH8 8CHCH8 8BHBH8 8AHAH8989H H8888H H

5、位名称位名称TF1TF1TF0TF0IE1IE1IT1IT1IE0IE0IT0IT0功能功能 T1T1 中断中断标志标志T0T0中断中断标志标志 中断中断标志标志 触发触发方式方式 中断中断标志标志触发触发方式方式(1 1)TCONTCON的结构、位名称、位地址和功能如下:的结构、位名称、位地址和功能如下:7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器 TCON位功能: TF1 T1溢出中断请求标志 T1计数溢出后,TF1=1 TF0 T0溢出中断请求标志 T0计数溢出后,TF0=1TF0/TF1:定时器溢出中断申请标志位: =0:定时器未溢出; =1:定时器溢出申请中断,进中断

6、后自动清零。7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器 IE1 外中断中断请求标志 当P3.3引脚信号有效时,IE1=1 IE0 外中断中断请求标志 当P3.2引脚信号有效时,IE0=1IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器 IT1 外中断触发方式控制位 IT1=1,边沿触发方式; IT1=0,电平触发方式。 IT0 外中断触发方式控制位 其意义和功能与IT1相似。IT0/IT1:外部中断请求的触发方式选择位: =0:在INT0/INT1端申请中断的信号低电平有效; =

7、1:在INT0/INT1端申请中断的信号负跳变有效.7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TIRI中断源中断源中断标志位中断标志位7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器(2 2)串行控制寄存器)串行控制寄存器SCONSCONTCONTCON9999H H9898H H位名称位名称TITIRIRI功能功能 串行发送串行发送中断标志中断标志串行接收串行接收中断标志中断标志 TITI 串行口发送中断请求标志串行口发送中断请求标志 RIRI 串行口接收中断请求标志串行口接收中断请求标志7.2 7

8、.2 中断源和中断控制寄存器中断源和中断控制寄存器 8080C51C51对中断源的开放或关闭由中断允许控制寄存器对中断源的开放或关闭由中断允许控制寄存器IEIE控制。控制。2.2.中断允许控制寄存器中断允许控制寄存器IEIEIEIE的结构、位名称和位地址如下:的结构、位名称和位地址如下:IEIEAFHAFHACHACHABHABHAAHAAHA9HA9HA8HA8H位名称位名称EAEAESESET1ET1EX1EX1ET0ET0EX0EX0中断源中断源CPUCPU串行口串行口T1T1T0T07.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器 EA EA CPUCPU中断允许控制位中断

9、允许控制位( (总开关)总开关) EA=1EA=1,CPUCPU开中;开中; EA=0EA=0,CPUCPU关中,且屏蔽所有关中,且屏蔽所有5 5个中断源。个中断源。 EX0 EX0 外中断外中断INT0INT0中断允许控制位中断允许控制位 EX0=1EX0=1,INT0INT0开中;开中;EX0=0EX0=0,INT0INT0关中。关中。 EX1 EX1 外中断外中断INT1INT1中断允许控制位中断允许控制位 EX1=1EX1=1,INT1INT1开中;开中;EX1=0EX1=0,INT1INT1关中。关中。 ET0 ET0 定时定时/ /计数器计数器T0T0中断允许控制位中断允许控制位

10、ET0=1ET0=1,T0T0开中;开中;ET0=0ET0=0,T0T0关中。关中。 ET1 - ET1 - 定时定时/ /计数器计数器T1T1中断允许控制位中断允许控制位 ET1=1ET1=1,T1T1开中;开中;ET1=0ET1=0,T1T1关中。关中。 ES ES 串行口中断串行口中断( (包括串发、串收包括串发、串收) )允许控制位允许控制位 ES=1ES=1,串行口开中;串行口开中;ES=0ES=0,串行口关中串行口关中7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器说明说明: : 80 80C51C51对中断实行对中断实行两级两级控制,控制,总控制位是总控制位是EAEA

11、,每一中断每一中断源还有各自的控制位。源还有各自的控制位。首先首先要要EA=1EA=1,其次其次还要自身的控制位还要自身的控制位置置“1 1”。7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器3.3.中断优先级控制寄存器中断优先级控制寄存器IPIP 80C51有5个中断源,划分为2个中断优先级:高优先级和低优先级。 (1)IP的结构、位名称和位地址如下:IEIEBCHBCHBBHBBHBAHBAHB9HB9HB8HB8H位名称位名称PSPSPT1PT1PX1PX1PT0PT0PX0PX0中断源中断源串行口串行口T1T1INT1INT1T0T0INT0INT07.2 7.2 中断源和

12、中断控制寄存器中断源和中断控制寄存器 PX0 :INT0中断优先级控制位。PX0=1,为高优先级; PX0=0,为低优先级; PX1 :INT1中断优先级控制位。控制方法同上。 PT0 :T0中断优先级控制位。控制方法同上。 PT1 :T1中断优先级控制位。控制方法同上。 PS :串行口中断优先级控制位。控制方法同上。 7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器(2)中断优先级的控制原则:1.低优先级中断请求不能打断高优先级的中断服务,反之可以;2.一个中断一但响应,与它同级的中断请求不能中断它。3.如果同级的多个中断请求同时出现,则按CPU的查询次序。CPU的查询次序:外部

13、中断0定时/计数器0外部中断1定时/计数器1串行中断7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器(3)(3)中断嵌套中断嵌套 当CPU正在执行某个中断服务程序时,如果发生更高一级的中断源请求中断,CPU可以“中断”正在执行的低优先级中断,转而响应更高一级的中断,这就是中断嵌套。 中断嵌套只能高优先级“中断”低优先级,低优先级不能“中断”高优先级,同一优先级也不能相互“中断”。7.2 7.2 中断源和中断控制寄存器中断源和中断控制寄存器7.3 7.3 中断处理过程中断处理过程 中断处理过程大致可分为四步: 中断请求、中断响应、中断服务、中断返回一、中断响应的条件 CPU查询(检测

14、)到某中断标志为“1”,在满足中断响应条件下,响应中断。 1.中断响应条件: 首先要有中断源发出中断申请 中断总开关打开EA=1 请求中断已经也打开7.3 7.3 中断处理过程中断处理过程 2.中断受阻的可能: CPU正在执行同级或更高级的中断; 当前的机器周期不是正在执行的指令的最后一个机器周期; 正在执行的指令是RETI或者是访向IE、IP的指令, 则执行完该指令后,必须再另外执行一条指令后才能响应。 7.3 7.3 中断处理过程中断处理过程 3. 中断响应操作 CPU响应中断后,进行下列操作: 保护断点地址; 将相应中断的入口地址送入PC; 撤除该中断源的中断请求标志; 关闭同级中断 8

15、0C51五个中断入口地址: INT0:0003H; T0:000BH; INT1:0013H; T1:001BH; 串行口:0023H7.3 7.3 中断处理过程中断处理过程4. 中断请求的撤除 CPU响应中断后,必须清除中断请求“1”标志。否则中断响应返回后,将再次进入该中断,引起死循环出错。7.3 7.3 中断处理过程中断处理过程对定时/计数器T0、T1中断,外中断边沿触发方式,CPU响应中断时就用硬件自动清除了相应的中断请求标志。对外中断电平触发方式,需要采取软硬结合的方法消除后果。对串行口中断,用户应在串行中断服务程序中用软件清除TI或RI7.3 7.3 中断处理过程中断处理过程例:例

16、:硬件电路如图所示。当外部设备有中断请求时,中断请求信号经反相,加到锁存器CP端,作为CP脉冲。由于D端接地为0,Q端输出低点平,触发 INT0生中断。当CPU响应中断后,应在该中断服务程序中按排两条指令: CLR P1CLR P10 0: SETB P1 SETB P10 0 从而撤消引起重复中断的INT0低电平信号。 因此一般来说,对外中断INT0、INTl,应尽量采用边沿触发方式,以简化硬件电路和软件程序。 7.3 7.3 中断处理过程中断处理过程5.5.中断响应等待时间中断响应等待时间 若排除若排除CPUCPU正在响应同级或更高级的中断情况,正在响应同级或更高级的中断情况,中断响应等待

17、时间为中断响应等待时间为: : 3 38 8个机器周期个机器周期7.3 7.3 中断处理过程中断处理过程7.3 7.3 中断处理过程中断处理过程二、 执行中断服务程序 中断服务程序应包含以下几部分: 保护现场 执行中断服务程序主体,完成相应操作 恢复现场三、中断返回 在中断服务程序最后,必须安排一条中断返回指令RETI,当CPU执行RETI指令后,自动完成下列操作: 恢复断点地址。 7.4 7.4 中断系统的应用中断系统的应用一、一、 中断主程序初始化中断主程序初始化 1.设置堆栈指针SP 2.定义中断优先级 3.定义外中断触发方式 4.开放中断 5.安排好等待中断或中断发生前主程序应完成的操

18、作内容。二、二、 中断服务子程序中断服务子程序 中断服务子程序内容要求: 1.在中断服务入口地址设置一条跳转指令,转移到中断服务程序的实际入口处。7.4 7.4 中断系统的应用中断系统的应用 由于80C51相邻两个中断入口地址间只有8B的空间,8B只能容纳一个有38条指令的极短程序,一般情况中断服务程序均大大超出8B长度。因此,必须跳转到其他合适的地址空间。跳转指令可用SJMP、AJMP或LJMP指令,SJMP、AJMP均受跳转范围影响,建议用LJMP指令,则可将真正的中断服务程序不受限制地安排在64KB任何地方。 7.4 7.4 中断系统的应用中断系统的应用2. 根据需要保护现场。 保护现场

19、不是中断服务程序的必需部分。通常是保护Acc、PSW和DPTR等特殊功能寄存器中的内容。若中断服务程序中不涉及Acc、PSW,DPTR,则不需保护,也不需恢复。例如:累加器A是最常用的特殊功能寄存器,主程序中不可能不用到A。而发生中断又是随机的,可能正好发生在对A进行操作、A中的数据还有用时进入中断,而在中断服务程序中又涉及到A,改变了A中的内容,则在进入中断服务程序对A操作前应对原A中数据进行保护,以便中断返回后恢复A中原来数据 需要指出的是,保护现场数据越少越好,数据保护越多,堆栈负担越重,堆栈深度设置应越深。7.4 7.4 中断系统的应用中断系统的应用3.中断源请求中断服务要求的操作。

20、4. 恢复现场。与保护现场相对应,注意先进后出、后进先出操作原则。 5.中断返回,最后一条指令必须是RETI。7.4 7.4 中断系统的应用中断系统的应用【例【例7-17-1】 利用定时器T0定时,在P1.0端输出一方波,方波周期为20ms,已知晶振为12MHZ。主程序: ORG 0000H LJMP 2000HT0的中断服务程序 ORG 000BH AJMP 70H7.4 7.4 中断系统的应用中断系统的应用ORG 70HMOV TL0,#0F0HMOV TH0,#0D8HCPL P1.0RETI ORG 2000HMOV TMOD ,#01HMOV TL0,#0F0HMOV TH0,#0D

21、8HMOV IE,#82HSETB TR0HERE:SJMP HERE7.4 7.4 中断系统的应用中断系统的应用【例6-2】 出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断INT0(P3.2)引脚输入,行驶里程为轮胎周长运转圈数,设轮胎周长为2m,试实时计算出租车行驶里程(单位米),数据存32H、31H、30H。 解:编程如下: ORG 0000H;复位地址 LJMP STAT;转初始化 ORG 0003H;中断入口地址 LJMP INT;转中断服务程序7.4 7.4 中断系统的应用中断系统的应用 ORG 0100HORG 0100H; ;初始化程序首地址初始化程序首地址STA

22、T: MOV SP,#60HSTAT: MOV SP,#60H; ;置堆栈指针置堆栈指针 SETB IT0SETB IT0; ;置边沿触发方式置边沿触发方式 MOV IP,#01HMOV IP,#01H; ;置高优先级置高优先级 MOV IE,#81HMOV IE,#81H; ;开中开中 MOV 30H,#0MOV 30H,#0; ;里程计数器清里程计数器清0 0 MOV 31H,#0MOV 31H,#0; ; MOV 32H,#0 MOV 32H,#0; ; LJMP MAIN LJMP MAIN; ;转主程序转主程序, ,并等待中断并等待中断 ORG 0200HORG 0200H; ;中断

23、服务子程序首地址中断服务子程序首地址INT: PUSH AccINT: PUSH Acc; ;保护现场保护现场 PUSH PSWPUSH PSW; ; MOV A,30H MOV A,30H; ;读低读低8 8位计数器位计数器 ADD A,#2ADD A,#2; ;低低8 8位计数器加位计数器加2 2m m MOV 30H,A MOV 30H,A; ;回存回存 CLR ACLR A; ; ADDC A,31H ADDC A,31H; ;中中8 8位计数器加进位位计数器加进位 MOV 31H,AMOV 31H,A; ;回存回存 CLR ACLR A; ; ADDC A,32H ADDC A,32

24、H; ;高高8 8位计数器加进位位计数器加进位 MOV 32H,AMOV 32H,A; ;回存回存 PUSH PSWPUSH PSW; ;恢复现场恢复现场 PUSH Acc PUSH Acc ; ; RETI RETI; ;中断返回中断返回MAIN主程序可以处理主程序可以处理循环显示等任务。循环显示等任务。7.4 7.4 中断系统的应用中断系统的应用【例6-3】现有5个外中断源EX1、EX20、EX21、EX22和EX23,高电平时表示请求中断,要求执行相应中断服务程序,试编制程序。 解:ORG0000H ;复位地址LJMPMAIN;转主程序ORG0003H ;中断入口地址LJMPPINT0

25、;转中断服务程序ORG0013H ;中断入口地址LJMPPINT1 ;转中断服务程序7.4 7.4 中断系统的应用中断系统的应用 ORGORG0100H0100H ; ;主程序首地址主程序首地址MAIN: MOVMAIN: MOVSP,#60HSP,#60H ; ;置堆栈指针置堆栈指针 ORLORLTCON,#05HTCON,#05H; ;置置INT0INT0、INT1INT1为边沿触发方式为边沿触发方式 SETBSETBPX0 PX0 ; ;置为高优先级置为高优先级 MOVMOVIE,#0FFHIE,#0FFH; ;全部开中全部开中 ; ;主程序内容主程序内容 ORG 1000HORG 10

26、00H; ;中断服务程序首地址中断服务程序首地址 PINT0: PUSHPINT0: PUSHAccAcc; ;中断中断, ,保护现场保护现场 LCALL WORK1LCALL WORK1; ;调用调用EX1EX1服务子程序服务子程序 POPPOPAccAcc; ;恢复现场恢复现场 RETIRETI; ;中断返回中断返回 ORGORG 2000H 2000H ; ;中断服务程序首地址中断服务程序首地址PINT1: CLRPINT1: CLR EA EA ;CPU;CPU禁中禁中 PUSHPUSH Acc Acc ; ;中断保护现场中断保护现场 PUSHPUSH DPH DPH ; ; PUSH

27、 PUSH DPL DPL ; ; SETB SETB EA EA ;CPU;CPU开中开中7.4 7.4 中断系统的应用中断系统的应用 JB P1.0,JB P1.0,LWK20LWK20;P1.0=1,EX20;P1.0=1,EX20请求中断请求中断 JB P1.1,JB P1.1,LWK21LWK21;P1.1=1,EX21;P1.1=1,EX21请求中断请求中断 JB P1.2,JB P1.2,LWK22LWK22;P1.2=1,EX22;P1.2=1,EX22请求中断请求中断 LCALL WORK23 LCALL WORK23 ;P1.3=1,;P1.3=1,调用调用EX23EX23

28、服务子服务子LRET:LRET: CLR CLR EA EA;CPU;CPU禁中禁中 POPPOP DPL DPL; ;恢复现场恢复现场 POPPOP DPH DPH; ; POP POP Acc Acc; ; SETB SETB EA EA;CPU;CPU开中开中 RETIRETI; ;中断返回中断返回LWK20LWK20: LCALL WORK20: LCALL WORK20;P1.0 = 1,;P1.0 = 1,调用调用EX20EX20服务子程序服务子程序 SJMP LRET SJMP LRET ; ;转中断返回转中断返回LWK21LWK21: LCALL WORK21 : LCALL

29、WORK21 ;P1.1 = 1,;P1.1 = 1,调用调用EX21EX21服务子程序服务子程序 SJMP LRETSJMP LRET; ;转中断返回转中断返回LWK22LWK22: LCALL WORK22 : LCALL WORK22 ;P1.2 = 1,;P1.2 = 1,调用调用EX22EX22服务子程序服务子程序 SJMP LRETSJMP LRET; ;转中断返回转中断返回7.4 7.4 中断系统的应用中断系统的应用7.4 7.4 中断系统的应用中断系统的应用【例7-4】通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。已知: (B)=01h,要求采用边沿触发,低优先级。

30、此例的实际意义:在此例的实际意义:在INT1INT1引脚接一个引脚接一个按钮开关按钮开关到地,每按一下按钮到地,每按一下按钮就申请一次中断,中断服务则是:就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。依次点亮八盏灯中的一盏。 P1.0P1.0P1.7P1.7INT1INT1300 7.4 7.4 中断系统的应用中断系统的应用 ORG 0000HORG 0000H LJMP LJMP MAINMAIN ORG 0013H ;ORG 0013H ;中断矢量中断矢量 LJMP LJMP INTINTMAINMAIN:SETB EA ;SETB EA ;开总中断允许开总中断允许“开关开关” S

31、ETB EX1 ;SETB EX1 ;开分中断允许开分中断允许“开关开关” ” CLR PX1 ;0 CLR PX1 ;0 优先级(也可不要此句)优先级(也可不要此句) SETB IT1 ;SETB IT1 ;边沿触发边沿触发 MOV B,#01H ;MOV B,#01H ;给给 B B 寄存器赋初值寄存器赋初值HEREHERE:SJMP SJMP HEREHERE ; ;原地等待中断申请原地等待中断申请INTINT:MOV AMOV A,B ;B ;自自B B寄存器中寄存器中取数取数 RL A ;RL A ;左环移一次左环移一次 MOV BMOV B,A ;A ;存回存回B,B,备下次取用备下次取用 MOV P1MOV P1,A ;A ;输出到输出到P1P1口口 RETI ;RETI ;中断返回中断返回中断服中断服 务程序务程序

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号