第5章 MCS-51单片机中断系统_第1页
第5章 MCS-51单片机中断系统_第2页
第5章 MCS-51单片机中断系统_第3页
第5章 MCS-51单片机中断系统_第4页
第5章 MCS-51单片机中断系统_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

1、第第5章章 中断系统中断系统5.1中断的概念中断的概念5.2MCS-51单片机的中断流程单片机的中断流程5.3MCS-51的中断响应条件和中断处理的中断响应条件和中断处理5.4中断程序编程举例中断程序编程举例5.1 中断的概念中断的概念 当当CPU正在处理某事件的时候,外部发正在处理某事件的时候,外部发生的某一事件请求生的某一事件请求CPU迅速去处理,于是迅速去处理,于是CPU暂时中止当前的工作,转去处理所发生暂时中止当前的工作,转去处理所发生的事件。中断服务处理完该事件后,再返回的事件。中断服务处理完该事件后,再返回到原来被中止的地方继续原来的工作,这样到原来被中止的地方继续原来的工作,这样

2、的过程称为的过程称为中断中断。处理文档电话铃响暂停文档文档中作暂停记号电话交谈找出暂停记号位置继续处理文档执行主程序(日常事务程序)中断申请信号有效(中断请求)暂停执行主程序响应中断当前PC及寄存器入栈(保护现场)处理外设要求(中断服务)寄存器及PC出栈(恢复现场及中断返回)继续执行主程序中断源、中断允许控制、中断优先级处理、中断源、中断允许控制、中断优先级处理、中断响应过程中断响应过程中断服务程序中断服务程序1中断服务程序中断服务程序 2中断事件中断事件1中断事件中断事件 25.2 MCS-51单片机的中断流程单片机的中断流程主程序主程序单片机中断的应用举例单片机中断的应用举例例例1 假设某

3、消防队坐落在道路的一边,正常情况下,假设某消防队坐落在道路的一边,正常情况下,交通红绿灯以交通红绿灯以30s的间隔轮流点亮,当有消防任务的间隔轮流点亮,当有消防任务时,消防官兵只需要按一下设置在路边的时,消防官兵只需要按一下设置在路边的消防紧急消防紧急按钮按钮,则道路交通灯就会变成红灯并持续,则道路交通灯就会变成红灯并持续10s时间,时间,禁止其他车辆通行,使消防车可以顺利通过,禁止其他车辆通行,使消防车可以顺利通过, 10s后自动返回红绿灯轮流点亮的正常状态,用后自动返回红绿灯轮流点亮的正常状态,用51单片单片机的中断可以实现上述功能。机的中断可以实现上述功能。例例2 在工业应用场合经常利用

4、中断电路来实现系统的在工业应用场合经常利用中断电路来实现系统的故障显示故障显示。假设有四个终端设备和主控室相连接,。假设有四个终端设备和主控室相连接,主控室可以采用声音报警或指示灯等方式表示终端主控室可以采用声音报警或指示灯等方式表示终端设备是否正常工作。当终端设备正常工作时,主控设备是否正常工作。当终端设备正常工作时,主控室指示灯灭,当终端设备工作异常时,主控室对应室指示灯灭,当终端设备工作异常时,主控室对应指示灯亮,用单片机中断电路可以实现。指示灯亮,用单片机中断电路可以实现。 总结:单片机的中断能实现哪些功能?总结:单片机的中断能实现哪些功能?P82 解决快速CPU和慢速外设之间的矛盾,

5、使CPU和外设可以并行工作。 具备故障处理能力,提高机器自身的可靠性。 中断方式消除了CPU在查询方式中的等待现象,大大提高了CPU的工作效率。 及时采集、实时控制。将现场采集的数据通过中断方式及时传送给CPU,经过处理后立即做出反应,实现现场控制。中断和子程序调用的区别中断和子程序调用的区别 P82中断中断子程序调用子程序调用中断产生是随机的中断产生是随机的程序事先安排的程序事先安排的可为外设和单片机内部可为外设和单片机内部事件服务事件服务为主程序服务,与外设为主程序服务,与外设无关无关主程序主程序 MOV A,3AH MOV A,3AH LCALL DELAYLCALL DELAY MOV

6、 B,A MOV B,A LCALL DELAYLCALL DELAY MOV A,B MOV A,BDELAYDELAY子程序子程序DELAY:MOV R0,30HDELAY:MOV R0,30H RETRET子程序调用子程序调用中断服务程序中断服务程序1中断服务程序中断服务程序 2中断事件中断事件1中断事件中断事件 2中断流程中断流程主程序主程序中断和子程序调用的区别中断和子程序调用的区别 P82中断中断子程序调用子程序调用中断产生是随机的中断产生是随机的程序事先安排的程序事先安排的可为外设和单片机内部可为外设和单片机内部事件服务事件服务为主程序服务,与外设为主程序服务,与外设无关无关中断

7、程序和主程序的关系中断程序和主程序的关系ORG 0000HLJMP MAINORG 0003H ;外部中断;外部中断0的中断入口地址的中断入口地址LJMP INT_EX0ORG 0030HMAIN: SETB IT0 ;外部中断;外部中断0下降沿触发方式下降沿触发方式 SETB EX0 ;外部中断;外部中断0允许控制允许控制 SETB EA ;单片机中断允许控制;单片机中断允许控制LOOP: SETB P1.0 ;绿灯被点亮;绿灯被点亮 LCALL DELAY1S ;延时延时1s CLR P1.0 ;绿灯熄灭;绿灯熄灭 SETB P1.1 ;红灯被点亮;红灯被点亮 LCALL DELAY1S

8、;延时;延时1s CLR P1.1 ;红灯熄灭;红灯熄灭 LJMP LOOPINT_EX0:SETB P1.1 ;红灯被点亮;红灯被点亮 CLR P1.0 ;绿灯熄灭;绿灯熄灭 LCALL DELAY1S ;延时;延时1s RETI 中断初始中断初始化程序化程序51中断系统的五个中断源中断系统的五个中断源 P831、INT0外部中断外部中断0。 中断请求通过中断请求通过P3.2引脚输入。引脚输入。2、INT1外部中断外部中断1 中断请求通过中断请求通过P3.3引脚输入。引脚输入。3、T0定时器定时器/计数器计数器0溢出中断溢出中断4、T1定时器定时器/计数器计数器1溢出中断溢出中断5、TX/R

9、X串行口中断。串行口中断。P3口第二功能口第二功能 (P20)7 . 36 . 35 . 34 . 33 . 32 . 31 . 30 . 3PPPPPPPP口线口线读选通读选通外部外部写选通写选通外部外部计数输入计数输入计数器计数器定时器定时器计数输入计数输入计数器计数器定时器定时器申请申请外部中断外部中断申请申请外部中断外部中断串行数据发送串行数据发送串行数据接收串行数据接收功能含义功能含义RAMRAM1/0/10RDWRTTINTINTRXDTXD1010第二功能第二功能51中断系统的五个中断源中断系统的五个中断源 P831、INT0外部中断外部中断0。 中断请求通过中断请求通过P3.2

10、引脚输入。引脚输入。2、INT1外部中断外部中断1 中断请求通过中断请求通过P3.3引脚输入。引脚输入。3、T0定时器定时器/计数器计数器0溢出中断溢出中断4、T1定时器定时器/计数器计数器1溢出中断溢出中断5、TX/RX串行口中断。串行口中断。 当串行口完成一帧数据的发送或接收时,当串行口完成一帧数据的发送或接收时, 便自动请求中断。便自动请求中断。溢出时自动请求中断溢出时自动请求中断P3口第二功能口第二功能 (P20)7 . 36 . 35 . 34 . 33 . 32 . 31 . 30 . 3PPPPPPPP口线口线读选通读选通外部外部写选通写选通外部外部计数输入计数输入计数器计数器定

11、时器定时器计数输入计数输入计数器计数器定时器定时器申请申请外部中断外部中断申请申请外部中断外部中断串行数据发送串行数据发送串行数据接收串行数据接收功能含义功能含义RAMRAM1/0/10RDWRTTINTINTRXDTXD1010第二功能第二功能 IE0TCONSCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXRXESET0EX0EX1ET1EA自然优先级自然优先级矢量地址高级中断请求高级中断请求自然优先级自然优先级矢量地址低级中断请求低级中断请求PX0PT0PX1PT1PSIEIP中断请求标中断请求标志寄存器志寄存器 TCON、S

12、CON中断允许控中断允许控制寄存器制寄存器 IE中断优先级中断优先级寄存器寄存器IPMCS-51单片机中断系统结构单片机中断系统结构 P82interrupt enable priority config单片机单片机例例5.5 消防紧急按钮源程序如下:消防紧急按钮源程序如下:ORG 0000HLJMP MAINORG 0003H ;外部中断;外部中断0的中断入口地址的中断入口地址LJMP INT_EX0ORG 0030HMAIN: SETB IT0 ;外部中断;外部中断0下降沿触发方式下降沿触发方式 SETB EX0 ;外部中断;外部中断0允许控制允许控制 SETB EA ;单片机中断允许控制

13、;单片机中断允许控制LOOP: SETB P1.0 ;绿灯被点亮;绿灯被点亮 LCALL DELAY1S ;延时延时1s CLR P1.0 ;绿灯熄灭;绿灯熄灭 SETB P1.1 ;红灯被点亮;红灯被点亮 LCALL DELAY1S ;延时;延时1s CLR P1.1 ;红灯熄灭;红灯熄灭 LJMP LOOPINT_EX0:SETB P1.1 ;红灯被点亮;红灯被点亮 CLR P1.0 ;绿灯熄灭;绿灯熄灭 LCALL DELAY1S ;延时;延时1s RETI 中断初始中断初始化程序化程序5.2.1 中断请求标志寄存器中断请求标志寄存器 想要接听电话必须有两个条件:电话铃必须想要接听电话必

14、须有两个条件:电话铃必须响;你听到铃声响。响;你听到铃声响。 对于对于51单片机同样如此,光有中断源是不够单片机同样如此,光有中断源是不够的,还必须能够被接收到。的,还必须能够被接收到。51单片机采用设置中单片机采用设置中断请求标志寄存器断请求标志寄存器TCON和串行口中断请求标志寄和串行口中断请求标志寄存器存器SCON的方式来记录是否接收到中断,接收到的方式来记录是否接收到中断,接收到则相应位置则相应位置1。TIRI SCON(98H)9FH 9EH 9DH 9CH 9BH 9AH 99H 98HTF1TF0IE1IT1IE0IT0 TCON(88H)8FH 8EH 8DH 8CH 8BH

15、8AH 89H 88HTF1TF0IE1IT1IE0IT0 TCON(88H)8FH 8EH 8DH 8CH 8BH 8AH 89H 88H1、TCON中断请求标志寄存器中断请求标志寄存器 TCON寄存器的寄存器的8位使用了位使用了6位,另外两位位,另外两位将在第六章使用。将在第六章使用。 TCON锁存锁存T0和和T1的溢出中断标志及外部的溢出中断标志及外部中断中断0和和1的中断标志等。的中断标志等。externalTrigger 各控制位的含义各控制位的含义TF1:定时器:定时器/计数器计数器T1溢出中断请求标志位。溢出中断请求标志位。 T1TF0:定时器:定时器/计数器计数器T0溢出中断请

16、求标志位。溢出中断请求标志位。 T0当启动当启动T1T1计数后,计数后,T1T1从初值开始加从初值开始加1 1计数,计数器最计数,计数器最高位高位产生溢出产生溢出时,由硬件自动使时,由硬件自动使TF1TF1置置1 1,向向CPUCPU发出中发出中断请求。断请求。当当CPUCPU响应中断响应中断时,硬件将自动对时,硬件将自动对TF1TF1清清0 0。IE1:外部中断:外部中断1的中断请求标志。的中断请求标志。 INT1(P3.3)IE0:外部中断:外部中断0的中断请求标志。的中断请求标志。 INT0(P3.2)以以IE1为例:为例:当检测到当检测到外部中断引脚外部中断引脚INT1(P3.3)上存

17、在上存在有效的有效的中断中断请求信号请求信号时,由硬件自动使时,由硬件自动使IE1置置1。当当CPU响应中断响应中断请求时,由硬件自动使请求时,由硬件自动使IE1清清0。 各控制位的含义各控制位的含义IE1:外部中断:外部中断1的中断请求标志。的中断请求标志。 INT1(P3.3)IE0:外部中断:外部中断0的中断请求标志。的中断请求标志。 INT0(P3.2)以以IE1为例:为例:当检测到当检测到外部中断引脚外部中断引脚INT1(P3.3)上存在上存在有效的有效的中断中断请求信号请求信号时,由硬件自动使时,由硬件自动使IE1置置1。当当CPU响应中断响应中断请求时,由硬件自动使请求时,由硬件

18、自动使IE1清清0。 IT1:外部中断:外部中断1的中断触发方式控制位。的中断触发方式控制位。IT0:外部中断:外部中断0的中断触发方式控制位。的中断触发方式控制位。以以IT1为例:为例: IT1=0时,外部中断时,外部中断1为低电平触发方式。为低电平触发方式。即若引脚即若引脚P3.3为为低电平低电平,则有中断请求信号则有中断请求信号,则则IE1置置1; IT1=1时,外部中断时,外部中断1为下降沿触发方式。为下降沿触发方式。 若引脚若引脚P3.3的电平的电平一个机器周期高电平一个机器周期高电平,接着的接着的下一个机器周期为低电平下一个机器周期为低电平,则有中断请求信号则有中断请求信号,则则I

19、E1置置1。注意:注意:IE1IE1、 IE0IE0由硬件自动设置由硬件自动设置 IT1IT1、 IT0IT0可由用户设置。可由用户设置。提问:外部中断提问:外部中断0下降沿触发,怎么置位?下降沿触发,怎么置位? SETB IT0Trigger 2、串行口中断请求标志寄存器、串行口中断请求标志寄存器SCONTIRI SCON(98H)9FH 9EH 9DH 9CH 9BH 9AH 99H 98H SCON为串行口控制寄存器,其低为串行口控制寄存器,其低2位锁存位锁存串行口的接收中断和发送中断标志串行口的接收中断和发送中断标志RI和和TI。 SCON中中TI和和RI的格式如下所示的格式如下所示S

20、CON中控制位的含义中控制位的含义TI:串行口发送中断请求标志:串行口发送中断请求标志CPUCPU将一个数据写入发送缓冲器将一个数据写入发送缓冲器SBUFSBUF时,就启动发送时,就启动发送。每发送完一帧串行数据后每发送完一帧串行数据后,硬件置硬件置TI=1TI=1。但但CPUCPU响应中断时,并不清除响应中断时,并不清除TITI,必须在中断服务程必须在中断服务程序中由程序对序中由程序对TITI清清0 0。RI:串行口接收中断请求标志:串行口接收中断请求标志在串行口允许接收时,在串行口允许接收时,每接收完一个串行帧每接收完一个串行帧,硬件置硬件置RI=1RI=1 。CPUCPU响应中断时不会清

21、除响应中断时不会清除RIRI,必须在中断服务程序中必须在中断服务程序中由程序对由程序对RIRI清清0 0。transmitreceive 总结:MCS-51MCS-51的中断标志的中断标志 优先级优先级高高低低INT0INT1T0T1串口串口IE0TF0IE1TF1TIRI中断源中断源中断标志位中断标志位 每一个中断源都有相应的中断标志位;每一个中断源都有相应的中断标志位; 某一个中断源申请中断,相应中断标志位置某一个中断源申请中断,相应中断标志位置1。中断矢量中断矢量0003H000BH0013H001BH0023HP265.2.2 中断允许控制寄存器中断允许控制寄存器EAESET1EX1E

22、T0EX0 IE(A8H)AFH AEH ADH ACH ABH AAH A9H A8HEA中断允许总控制位。中断允许总控制位。 EA=0,屏蔽所有的中断请求;,屏蔽所有的中断请求; EA=1,CPU开放中断。开放哪个中开放中断。开放哪个中断,还要取决于各中断源的中断允许控断,还要取决于各中断源的中断允许控制位的状态。这就是所谓的两级控制制位的状态。这就是所谓的两级控制。EnableES串行口中断允许位串行口中断允许位 ES=0,禁止串行口禁止串行口中断;中断; S:serial ES=1,允许串行口允许串行口中断中断ET1定时器定时器/计数器计数器T1的溢出中断允许位的溢出中断允许位 ET1

23、=0,禁止禁止T1中断;中断; T:timer ET1=1,允许允许T1中断中断ET0定时器定时器/计数器计数器T0的溢出中断允许位的溢出中断允许位 ET0=0,禁止禁止T0中断;中断; ET0=1,允许允许T0中断中断EX1外部中断外部中断1的中断允许位的中断允许位 EX1=0,禁止外部中断禁止外部中断1中断;中断; X:external EX1=1,允许外部中断允许外部中断1中断中断EX0外部中断外部中断0的中断允许位。的中断允许位。 EX0=0,禁止外部中断禁止外部中断0中断;中断; EX0=1,允许外部中断允许外部中断0中断中断例例5.1:假设允许外部中断:假设允许外部中断0中断,禁止

24、其他中断。试中断,禁止其他中断。试设置设置IE的相应值。的相应值。解:解:对于对于51单片机采用两级中断控制,所以(单片机采用两级中断控制,所以(IE)=10000001B=81H,对,对IE的设置可以用如下方式实现的设置可以用如下方式实现(a)用字节操作指令)用字节操作指令 MOV IE,#81H;(b)用位操作指令)用位操作指令 SETB EX0;外部中断;外部中断0允许中断允许中断 SETB EA ;CPU开中断开中断一般情况下,建议使用位操作方式设置一般情况下,建议使用位操作方式设置IE的值,这样的值,这样可以增加程序的可读性。可以增加程序的可读性。 EAESET1EX1ET0EX0

25、IE(A8H)11000000PSPT1PX1PT0PX0 IP(B8H) BCH BBH BAH B9H B8H1、中断优先级寄存器、中断优先级寄存器IP的格式的格式PS 串行口中断优先级控制位串行口中断优先级控制位PT1定时器定时器/计数器计数器T1中断优先级控制位中断优先级控制位PX1外部中断外部中断1中断优先级控制位中断优先级控制位PT0定时器定时器/计数器计数器T0中断优先级控制位中断优先级控制位PX0外部中断外部中断0中断优先级控制位中断优先级控制位若某控制位为若某控制位为1,则相应的中断源规定为高级中断;,则相应的中断源规定为高级中断; 反之,为反之,为0,则相应的中断源规定为低

26、级中断。,则相应的中断源规定为低级中断。5.2.3 中断优先级控制中断优先级控制priority 2、中断优先级排列顺序、中断优先级排列顺序 当同时接收到几个同一优先级的中断请求当同时接收到几个同一优先级的中断请求时,响应哪个中断源则取决于内部硬件查询顺时,响应哪个中断源则取决于内部硬件查询顺序。其优先级(序。其优先级(自然优先级自然优先级)排列顺序如下图)排列顺序如下图所示:所示:中断源中断源 同级内的中断优先级同级内的中断优先级外部中断外部中断0中断中断 高级高级定时器定时器/计数器计数器T0溢出中断溢出中断外部中断外部中断1定时器定时器/计数器计数器T1溢出中断溢出中断串行口中断串行口中

27、断 低级低级例例5.45.4:单片机有:单片机有5 5个中断源,但只能设置两个中断优个中断源,但只能设置两个中断优先级,因此在中断优先级安排上受到一定的限制,试先级,因此在中断优先级安排上受到一定的限制,试问以下几种中断的优先级排列(级别从高到低)是否问以下几种中断的优先级排列(级别从高到低)是否可能?若可能,则应如何设置中断源的中断级别?可能?若可能,则应如何设置中断源的中断级别?(1 1) 定时器定时器T0T0,定时器,定时器T1T1,外中断外中断0 0,外中断,外中断1 1,串行口中断,串行口中断(2 2) 串行口中断,串行口中断,定时器定时器T0T0,外中断,外中断0 0,外中断,外中

28、断1 1,定时器,定时器T1T1解:(解:(1 1)只有采取编程设置)只有采取编程设置IPIP。 将定时器将定时器T0T0,定时器,定时器T1T1设置为高优先级,设置为高优先级,那么那么定时器定时器T0T0,定时器,定时器T1T1优先级高于外中断优先级高于外中断0 0,外中断,外中断1 1,串行口中断串行口中断; ; 同级中断按照自然优先级排列同级中断按照自然优先级排列,定时器,定时器T0T0的优的优先级要高于定时器先级要高于定时器T1T1;外中断;外中断0 0,外中断,外中断1 1,串行口中,串行口中断也满足自然优先级排列顺序。断也满足自然优先级排列顺序。 可以实现可以实现(IPIP)=00

29、001010B=00001010B(2 2)无法实现)无法实现中断源中断源 同级内的中断优先级同级内的中断优先级外部中断外部中断0中断中断 高级高级定时器定时器/计数器计数器T0溢出中断溢出中断外部中断外部中断1定时器定时器/计数器计数器T1溢出中断溢出中断串行口中断串行口中断 低级低级PSPT1PX1PT0PX0 IP(B8H) 由于由于51单片机只有两个优先级设置,故只存在两级中断单片机只有两个优先级设置,故只存在两级中断嵌套结构,两级中断嵌套的中断过程如图所示。嵌套结构,两级中断嵌套的中断过程如图所示。第一级中断第一级中断必须为必须为IP中设置的低级中断请求,第二级中断为中设置的低级中断

30、请求,第二级中断为IP中设置的中设置的高级中断请求高级中断请求 。CPU执行高级中断服务程序执行高级中断服务程序响应高级中断请求响应高级中断请求返回低级中断返回低级中断程序程序高级高级中断中断请求请求响应低级中断请求响应低级中断请求返回主程序返回主程序低级中断请求低级中断请求CPU 执行主程序执行主程序CPU执行低级中断服务程序执行低级中断服务程序5.2.5 中断嵌套中断嵌套 P87问:假设问:假设5151单片机的单片机的5 5个中断源经过设置后的优先级由个中断源经过设置后的优先级由高到低的顺序为:高到低的顺序为: 定时器定时器T0,定时器,定时器T1, 外中断外中断0,外中断,外中断1,串行

31、口中断,串行口中断 IP高级高级 IP低级低级(1 1)如果定时器)如果定时器T0T0发出中断请求后,单片机执行定时发出中断请求后,单片机执行定时器器T0T0中断程序过程中,外部中断中断程序过程中,外部中断0 0发出中断请求,这时发出中断请求,这时会出现中断嵌套吗?会出现中断嵌套吗?(2 2)如果定时器如果定时器T1T1发出中断请求后,单片机执行定时器发出中断请求后,单片机执行定时器T1T1中断程序过程中,定时器中断程序过程中,定时器T0T0发出中断请求,这时会出发出中断请求,这时会出现中断嵌套吗?现中断嵌套吗?总结:中断嵌套必须是总结:中断嵌套必须是IPIP低级中断内嵌低级中断内嵌IPIP高

32、级中断。高级中断。 当一个中断被响应后,所有与之同级或低级的中当一个中断被响应后,所有与之同级或低级的中断源的中断请求都被禁止,不发生嵌套。断源的中断请求都被禁止,不发生嵌套。不会不会不会不会5.3 MCS-51的中断响应条件和中断处理的中断响应条件和中断处理 中断响应的条件中断响应的条件中断处理过程中断处理过程5.3.1 中断响应的条件中断响应的条件MCS-51MCS-51单片机响应中断条件有以下条件单片机响应中断条件有以下条件: 有中断源发出中断请求。有中断源发出中断请求。 中断允许位中断允许位EAEA1 1,即,即CPUCPU开放中断。开放中断。 申请中断的中断源的允许位为申请中断的中断

33、源的允许位为1 1,即对应的中断源,即对应的中断源开放中断开放中断 CPU CPU没有响应同级或更高级别的中断请求。没有响应同级或更高级别的中断请求。 当前指令执行完毕。当前指令执行完毕。 如果当前正执行的指令是返回指令(如果当前正执行的指令是返回指令(RETIRETI)或访)或访问问IPIP、IEIE寄存器的指令,则寄存器的指令,则CPUCPU在执行完当前指令后,在执行完当前指令后,至少至少再再执行一条指令才会中断。执行一条指令才会中断。中断源发中断请求中断源发中断请求中断响应条件中断响应条件是否满足?是否满足? 把把PC断点地址压入堆栈断点地址压入堆栈 相应中断源的中断入口地址相应中断源的

34、中断入口地址送入送入PC,转向中断服务程序,转向中断服务程序NY 由硬件由硬件自动完成自动完成5.3.2 中断处理过程中断处理过程图图 中断源及其对应的中断入口地址中断源及其对应的中断入口地址 P88 或或P26中断源中断源中断入口地址中断入口地址外部中断外部中断0(INT0)外部中断外部中断1(INT1)定时器定时器T0中断中断定时器定时器T1中断中断串行口中断串行口中断0023H001BH0013H0003H000BH 中断服务程序存放在相应的中断中断服务程序存放在相应的中断入口入口地址处。地址处。 每个中断向量地址之间隔了每个中断向量地址之间隔了8个单元,如个单元,如0003-000BH

35、,在如此少的空间中如何完成用户中断程序呢?很简单,在中在如此少的空间中如何完成用户中断程序呢?很简单,在中断入口地址处安排一个断入口地址处安排一个LJMP指令,就可以跳转到中断程序指令,就可以跳转到中断程序可以放下的地方。建议即使中断服务程序小于可以放下的地方。建议即使中断服务程序小于8字节,也采字节,也采用跳转指令方式,以便养成规范的编程风格。用跳转指令方式,以便养成规范的编程风格。8个字节个字节LJMP INT_EX0例例5.5 消防紧急按钮源程序如下:消防紧急按钮源程序如下:ORG 0000HLJMP MAINORG 0003H ;外部中断;外部中断0的中断入口地址的中断入口地址LJMP

36、 INT_EX0ORG 0030HMAIN: SETB IT0 ;外部中断;外部中断0下降沿触发方式下降沿触发方式 SETB EX0 ;外部中断;外部中断0允许控制允许控制 SETB EA ;单片机中断允许控制;单片机中断允许控制LOOP: SETB P1.0 ;绿灯被点亮;绿灯被点亮 LCALL DELAY1S ;延时延时1s CLR P1.0 ;绿灯熄灭;绿灯熄灭 SETB P1.1 ;红灯被点亮;红灯被点亮 LCALL DELAY1S ;延时;延时1s CLR P1.1 ;红灯熄灭;红灯熄灭 LJMP LOOPINT_EX0:SETB P1.1 ;红灯被点亮;红灯被点亮 CLR P1.0

37、 ;绿灯熄灭;绿灯熄灭 LCALL DELAY1S ;延时;延时1s RETI END中断初始中断初始化程序化程序 关中断关中断保护现场保护现场中断服务中断服务 开中断开中断 关中断关中断恢复现场恢复现场 开中断开中断中断返回中断返回断点地址由堆栈弹入断点地址由堆栈弹入PC保护现场和保护现场和恢复现场的恢复现场的过程中不允过程中不允许中断,以许中断,以免现场遭到免现场遭到破坏。破坏。保护和恢复现场之后保护和恢复现场之后的开中断是为了允许的开中断是为了允许有更高级中断打断此有更高级中断打断此中断服务程序。中断服务程序。 硬件自硬件自动完成动完成中断服务程序PUSH ACC PUSH PSWPOP

38、 PSWPOP ACCCLR EASETB EARETI例例5.5 5.5 正常情况下,非交叉路口的交通红绿灯以正常情况下,非交叉路口的交通红绿灯以1s1s的的间隔轮流点亮,当有消防任务时,消防官兵只需要按一间隔轮流点亮,当有消防任务时,消防官兵只需要按一下设置在路边的消防紧急按钮,则道路交通灯就会变成下设置在路边的消防紧急按钮,则道路交通灯就会变成红灯并持续红灯并持续1s1s时间,禁止其他车辆通行,使消防车可以时间,禁止其他车辆通行,使消防车可以顺利通过,顺利通过,1s1s后自动返回按紧急按钮前灯的状态,继续后自动返回按紧急按钮前灯的状态,继续红绿灯轮流点亮的正常状态,试用红绿灯轮流点亮的正

39、常状态,试用5151单片机来模拟实现单片机来模拟实现上述功能。上述功能。P91P91分析:分析:1 1、用、用红色红色和和绿色绿色发光二极管模拟道路交通灯,并与单片机的发光二极管模拟道路交通灯,并与单片机的I/OI/O口相连,可通过设置口相连,可通过设置I/OI/O口的电平来点亮发光二极管。口的电平来点亮发光二极管。2 2、用按钮开关或闸刀开关模拟消防紧急按钮,可将开关与单片、用按钮开关或闸刀开关模拟消防紧急按钮,可将开关与单片机的外部中断机的外部中断0 0的引脚相连,引入外部中断信号。的引脚相连,引入外部中断信号。3 3、没有中断发生时,红色和绿色发光二极管轮流被点亮,均持、没有中断发生时,

40、红色和绿色发光二极管轮流被点亮,均持续续1S1S(通过调用延时子程序实现)(通过调用延时子程序实现)主程序。主程序。4 4、当中断发生时,将红色发光二极管点亮,并持续、当中断发生时,将红色发光二极管点亮,并持续1 1秒秒 中断服务程序。中断服务程序。5.4 中断程序编程举例中断程序编程举例解:将解:将P1口的口的P1.1P1.0分别接红和绿色发光二极管分别接红和绿色发光二极管D1D0模拟道路交通灯,模拟道路交通灯,P3.2(INT0)引脚接一开关以模拟消防紧)引脚接一开关以模拟消防紧急按钮。急按钮。 图图5-10 AT89C51单片机模拟交通灯电路原理图单片机模拟交通灯电路原理图 P92P3.

41、2中断初始化中断初始化程序怎么写?程序怎么写?书书P20例例5.5 源程序如下:源程序如下:ORG 0000HLJMP MAINORG 0003H ;外部中断;外部中断0的中断入口地址的中断入口地址LJMP INT_EX0ORG 0030HMAIN: SETB IT0 ;外部中断;外部中断0下降沿触发方式下降沿触发方式 SETB EX0 ;外部中断;外部中断0允许控制允许控制 SETB EA ;单片机中断允许控制;单片机中断允许控制LOOP: SETB P1.0 ;绿灯被点亮;绿灯被点亮 LCALL DELAY1S ;延时延时1s CLR P1.0 ;绿灯熄灭;绿灯熄灭 SETB P1.1 ;

42、红灯被点亮;红灯被点亮 LCALL DELAY1S ;延时;延时1s CLR P1.1 ;红灯熄灭;红灯熄灭 LJMP LOOP中断初始中断初始化程序化程序【100 ms延时子程序如下】延时子程序如下】DELAY: MOV R6, #0C8H ; 外循环外循环 200 次次 LOOP1: MOV R7, #0F8H ; 内循环内循环 248 次次 NOP ; 时间补偿时间补偿 LOOP2: DJNZ R7, LOOP2 ; 延时延时2 s248=496 s DJNZ R6, LOOP1 ; 延时延时 500 s200=100 ms RET【延时【延时1s调用调用100ms延时子程序如下】延时子

43、程序如下】;1s是是100ms的的10倍,即连续执行倍,即连续执行100ms延时子程序延时子程序10次即可次即可 DELAY1S: MOV R0, #10 LOOP0: LCALL DELAY DJNZ R0, LOOP0 RET INT_EX0: PUSH P1 PUSH 00H PUSH 06H PUSH 07H SETB P1.1 ;红灯被点亮;红灯被点亮 CLR P1.0 ;绿灯熄灭;绿灯熄灭 LCALL DELAY1S ;延时;延时1s POP 07H POP 06H POP 00H POP P1 RETI END 需要保护现场和恢复现场的原因:需要保护现场和恢复现场的原因: 需要保

44、护在主程序和中断程序中都会使用的寄存器、并口等。需要保护在主程序和中断程序中都会使用的寄存器、并口等。 因为因为R0、R6、R7在中断服务程序中最后都减到在中断服务程序中最后都减到0了,当中断返回时,了,当中断返回时,会接着中断前的延时子程序继续执行,此时的会接着中断前的延时子程序继续执行,此时的R0、R6、R7之一很有可能之一很有可能从从0开始减,得开始减,得0FFH,而不是中断前的值,延时就长了。,而不是中断前的值,延时就长了。 保护保护P1口的状态,是为了中断返回后继续中断前灯的显示状态,即若口的状态,是为了中断返回后继续中断前灯的显示状态,即若中断前绿灯亮了中断前绿灯亮了0.5秒,中断

45、后绿灯还需要亮秒,中断后绿灯还需要亮0.5秒,而不是红灯亮秒,而不是红灯亮0.5秒。秒。保护现场保护现场,00H、06H、07H分别是分别是R0、R6、R7的地址,的地址,PUSH、POP操作数只能是直接地址操作数只能是直接地址P43恢复现场恢复现场例例5.6 5.6 在工业应用场合经常利用中断电路来实现系在工业应用场合经常利用中断电路来实现系统的统的故障显示故障显示,假设有四个终端设备和主控室相连,假设有四个终端设备和主控室相连接,主控室可以采用指示灯方式表示终端设备是否接,主控室可以采用指示灯方式表示终端设备是否正常工作。当终端设备正常工作时,主控室指示灯正常工作。当终端设备正常工作时,主

46、控室指示灯灭,当终端设备工作异常时,主控室指示灯亮,试灭,当终端设备工作异常时,主控室指示灯亮,试用单片机中断电路来实现。用单片机中断电路来实现。分析:分析:1 1、用、用4 4个发光二极管模拟个发光二极管模拟4 4个信号灯。个信号灯。 2 2、单片机只有两个外部中断源,但是现在有、单片机只有两个外部中断源,但是现在有四个外部中断请求,那么必然存在中断扩展,单片四个外部中断请求,那么必然存在中断扩展,单片机如何实现外部中断扩展呢?机如何实现外部中断扩展呢?外部中断源的扩展外部中断源的扩展 1将定时器将定时器T0,T1中断源中断源作外部中断源作外部中断源 2 2查询方式扩展外部中断源查询方式扩展

47、外部中断源 把多个中断源通过硬件(或非门)引入外部把多个中断源通过硬件(或非门)引入外部中断源输入端(中断源输入端(INT0INT0或或INT1INT1),同时将中断源连),同时将中断源连接到某接到某I/OI/O接口。这样,每个中断源都可以引起接口。这样,每个中断源都可以引起中断,在中断服务程序中通过软件查询中断,在中断服务程序中通过软件查询I/OI/O口,口,便可以确定哪一个是正在申请的中断源。便可以确定哪一个是正在申请的中断源。. .用中断控制芯片(如用中断控制芯片(如)进行扩展)进行扩展 专用中断控制器专用中断控制器82598259可以直接扩展可以直接扩展8 8个中断源,个中断源,经级联

48、后,最多可以扩展经级联后,最多可以扩展6464个中断源。个中断源。可编程中断管理芯片可编程中断管理芯片8259A 8259A的内部结构的内部结构与外设相与外设相连连与与CPU相连相连IR0图图5-11 利用中断电路来实现系统的故障显示电路原理图利用中断电路来实现系统的故障显示电路原理图 P3.2或非或非中断初始化中断初始化程序怎么写?程序怎么写?1000101000本例用查询方式扩展外部中断源本例用查询方式扩展外部中断源表示外设有故障表示外设有故障对应外设对应外设4对应外设对应外设3对应外设对应外设2对应外设对应外设1对应外设对应外设4对应外设对应外设3对应外设对应外设2对应外设对应外设1 O

49、RG 0000H LJMP MAIN ORG 0003H LJMP INT_EX0 ORG 0030HMAIN: CLR IT0 ;外部中断;外部中断0低电平触发方式低电平触发方式 SETB EX0 ;外部中断;外部中断0允许控制允许控制 SETB EA ;单片机中断允许控制;单片机中断允许控制 SJMP $ ;等待中断到来;等待中断到来INT_EX0: JNB P1.0,NEXT1 SETB P1.4 LJMP INT_EX0_ENDNEXT1: JNB P1.1,NEXT2 SETB P1.5 LJMP INT_EX0_ENDNEXT2: JNB P1.2,NEXT3 SETB P1.6

50、LJMP INT_EX0_ENDNEXT3: JNB P1.3, INT_EX0_END SETB P1.7INT_EX0_END: RETI END例例5.6 源程序:源程序:中断服务程序中中断服务程序中对对4个设备的中个设备的中断请求信号依次断请求信号依次查询并处理查询并处理任一设备有故障任一设备有故障都会触发中断都会触发中断 ORG 0000H LJMP MAIN ORG 0003H LJMP INT_EX0 ORG 0030HMAIN: CLR IT0 ;外部中断;外部中断0低电平触发方式低电平触发方式 SETB EX0 ;外部中断;外部中断0允许控制允许控制 SETB EA ;单片机中断允许控制;单片机中断允许控制 SJMP $ ;等待中断到来;等待中断到来INT_EX0: JNB P1.0,NEXT1 SETB P1.4 LJMP INT_EX0_ENDNEXT1: JNB P1.1,NEXT2 SETB P1

温馨提示

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

评论

0/150

提交评论