第6章中断系统_第1页
第6章中断系统_第2页
第6章中断系统_第3页
第6章中断系统_第4页
第6章中断系统_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、1关关 新新单单 片片 机机 原原 理理2第第6章章 单片机的中断系统单片机的中断系统3 在在CPU和外设交换信息时,存在着快速和外设交换信息时,存在着快速CPU和慢速外设间的和慢速外设间的矛盾,机器内部有时也可能出现突发事件,为此,计算机中通常矛盾,机器内部有时也可能出现突发事件,为此,计算机中通常采用中断技术。采用中断技术。l中断:中断: CPU和外设并行工作,当外设数据准备好和外设并行工作,当外设数据准备好( 或有某种突发或有某种突发事件发生事件发生)时向时向CPU提出请求,提出请求,CPU暂停正在执行的程序转而为暂停正在执行的程序转而为该外设服务该外设服务(或处或处 理紧急事件理紧急事

2、件),处理完毕再回到原断点继续执行,处理完毕再回到原断点继续执行原程序。原程序。l中断源:中断源:引起中断的原因引起中断的原因,中断申请的来源,中断源可以是中断申请的来源,中断源可以是I/O设设备、故障、时钟、调试中人为设置。备、故障、时钟、调试中人为设置。l中断优先级:中断优先级:当有多个中断源同时当有多个中断源同时 向向CPU申请中断时,申请中断时,CPU优优先响应最需紧急处理的中断请求,处理完毕再响应优先级别较低先响应最需紧急处理的中断请求,处理完毕再响应优先级别较低的的 ,这种预先安排的响应次序。,这种预先安排的响应次序。 l中断的嵌套:中断的嵌套: 在中断系统中,高优先级的在中断系统

3、中,高优先级的 中断请求能中断正在中断请求能中断正在进行的较低级的中断源处理,本章将讨论进行的较低级的中断源处理,本章将讨论MCS51系列单片机的系列单片机的中断系统。中断系统。4l8XX51有有5个中断源,个中断源,3个在片内,个在片内,2个在片外,个在片外,它们在程序存贮器中有固定的中断入口地址,它们在程序存贮器中有固定的中断入口地址, 当当CPU响应中断时,硬件自动形成这些地址,响应中断时,硬件自动形成这些地址,由此进入中断服务程序;由此进入中断服务程序;5个中断源有两级中个中断源有两级中断优先级,可形式中断嵌套;断优先级,可形式中断嵌套;l8XX51有有5个中断源,其符号、名称、产生条

4、个中断源,其符号、名称、产生条件及中断服务程序的入口地址如表件及中断服务程序的入口地址如表6.1。6.1 中断系统结构5符号符号 名名 称称 中中 断断 引引 起起 原原 因因 中断服务中断服务程序入口程序入口INT0INT0外部外部中断中断0 0 P3.2 P3.2引脚的低电平或下降引脚的低电平或下降沿信号沿信号 0003H0003HINT1INT1 外部外部中断中断1 1P3.3P3.3引脚的低电平或下降引脚的低电平或下降沿信号沿信号 0013H0013HT0T0定时器定时器0 0中断中断 定时计数器定时计数器0 0计数回零溢出计数回零溢出 000BH000BHT1T1定时器定时器1 1中

5、断中断 定时计数器定时计数器1 1计数回零溢出计数回零溢出 001BH001BHT2T2定时器定时器2 2中断中断 定时计数器定时计数器2 2中断中断(TF2(TF2或或T2EXT2EX信号)信号)002BH002BHTI/RI TI/RI 串行口串行口中断中断 串行通信完成一帧数据发串行通信完成一帧数据发送或接收引起中断送或接收引起中断 0023H0023H6二、中断控制的有关寄存器l(1)(1)中断的允许和禁止中断的允许和禁止中断控制寄存器中断控制寄存器IE IEIE IE寄存寄存器的各位对应相应的中断源,如果允许该中断源中断器的各位对应相应的中断源,如果允许该中断源中断则该位置则该位置1

6、 1,禁止中断则该位,禁止中断则该位0 0 。EA EA - - ET2ET2 ES ES ET1ET1 EX1 EX1 ET0 ET0 EX0 EX0中断总中断总控允控允/ /禁禁 不不 用用 T2T2允允/ /禁禁 串行口串行口允允/ /禁禁 T1T1允允/ /禁禁 INT1 INT1允允/ /禁禁 T0 T0允允/ /禁禁 INT0INT0允允/ /禁禁 7lEAEA:中断总控开关,是:中断总控开关,是CPUCPU是否响应中断的前提。是否响应中断的前提。 EA=1EA=1,CPUCPU开中断开中断; ; EA=0 EA=0, CPUCPU关中断。关中断。lESES: 串行口中断允许位,串

7、行口中断允许位, ES=1ES=1,允许串行口发送,允许串行口发送/ /接收中断;接收中断; ES=0ES=0,禁止串行口中断。,禁止串行口中断。lET1ET1:定时器:定时器T1T1中断允许位,中断允许位, ET1=1ET1=1,允许,允许T1T1计数溢出中断;计数溢出中断; ET1=0ET1=0,禁止,禁止T1T1中断。中断。8lET0ET0: 定时器定时器T0T0中断允许位中断允许位, , ET0=1 ET0=1,允许,允许T1T1计数溢出中断;计数溢出中断; ET0=0ET0=0,禁止,禁止T0T0中断。中断。lEX1EX1: 外部中断外部中断INT1INT1允许位,允许位, EX1=

8、1EX1=1,允许,允许INT1INT1中断;中断; EX1= 0EX1= 0,禁止,禁止INT1INT1中断。中断。lEX0EX0: 外部中断外部中断INT0INT0允许位,允许位, EX0=1EX0=1,允许,允许INT0INT0中断;中断; EX0= 0EX0= 0,禁止,禁止INT0INT0中断。中断。9l说明:说明: IT0和和IT1为外中断为外中断INT0 和和INT1中断触发方式选择,中断触发方式选择,若选下降沿触发则相应位置若选下降沿触发则相应位置1;若选低电平触发;若选低电平触发 ,IT相应位置相应位置0。 某中断源有中断请求,该中断标志置某中断源有中断请求,该中断标志置1,

9、无中断请求,无中断请求,该中断标志置该中断标志置0 TR0 和和 TR1 为定时器为定时器T0和和T1 工作启动和停止控制。工作启动和停止控制。(2)中断请求标志及外部中断方式选择寄存器中断请求标志及外部中断方式选择寄存器TCON TF1 TR1TF0 TR0 IE1IT1 IE0IT0T1 请求请求有有/无无 T1工作工作启启/停停 T0 请求请求有有/无无 T0 工作工作启启/停停 INT1 请求请求有有/无无 INT1方式方式下沿下沿/ 低电低电平平 INT0请求请求有有/无无 INT0方式方式下沿下沿/低低电平电平 10(3)中断优先级管理寄存器IP 五个中断源的优先级别由IP寄存器管

10、理,相应位置1,则该中断源优先级别高,置0的优先级 别低。 -PT2PSPT1PX1PT0PX0无无用用位位无无用用位位T2高高/低低串行串行 口口高高/低低 T1高高/低低 INT1高高/低低 T0高高/低低 INT0高高/低低 当当 某几个中断源在某几个中断源在IP寄存器相应位同为寄存器相应位同为1或同为零时,或同为零时,由内部查询确定优先级,查询的顺序是:由内部查询确定优先级,查询的顺序是:CPU优先响应优先响应 先查询的中断请求先查询的中断请求T0INT0INT1T1串行口串行口T211MCS_51系列单片机的中断结构可以用图系列单片机的中断结构可以用图6.1示。示。 126.2 中断

11、响应过程 一、中断处理过程一、中断处理过程 中断处理过程分为四个阶段:中断请求,中断处理过程分为四个阶段:中断请求,中断响应,中断处理、中断返回。中断响应,中断处理、中断返回。MCS51系列单系列单 片机的中断过程流程如图片机的中断过程流程如图6.2所示。所示。 NNYYYN执执 行行 指指 令令中断标志中断标志1?(中断请求中断请求?) 指令指令最后一个最后一个T周期周期?EA=1?允允 许许 位位 = 1?CPU 判判 别优别优 先权先权 ,响响 应优应优 先权高先权高 的中断的中断断点的断点的PC进栈进栈, 中断服务入口地址送中断服务入口地址送PC撤撤 除除 中中 断断 标标 志志中中

12、断断 服服 务务中中 断断 返返 回回, 断断 点点 出出 栈栈 送送 PC 中断请求中断请求.中断响应中断响应中断服务中断服务中断返回中断返回14l中断请求、中断响应过程由硬件完成。中断请求、中断响应过程由硬件完成。l中断服务程序应根据需要进行编写。程序中要注意保护中断服务程序应根据需要进行编写。程序中要注意保护现场和恢复现场。现场和恢复现场。l中断返回是通过执行一条中断返回是通过执行一条RETI中断返回指令,使堆栈中中断返回指令,使堆栈中被压入的断被压入的断 点地址送点地址送PC,从而返回主程序的断点继续执,从而返回主程序的断点继续执行主程序。另外行主程序。另外RETI还有恢复优先级状态触

13、发器还有恢复优先级状态触发器 的作用,的作用,因此不能以因此不能以RET指令代替指令代替“RETI”指令。指令。 15 若某个中断源通过编程设置,处于被打开的状态,并若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条件,然而下面三种情满足中断响应的条件,然而下面三种情 况单片机不响应此况单片机不响应此中断:中断:当前正在执行的那条指令没执行完;当前正在执行的那条指令没执行完;当前响应了同级或高级中断;当前响应了同级或高级中断;正在操作正在操作IEIE、IPIP中断控制寄存器或执行中断控制寄存器或执行RETIRETI指令。指令。 在正常的情况下,从中断请求信号有效开始,在正常的情况下

14、,从中断请求信号有效开始, 到中断得到响应,通常需要到中断得到响应,通常需要3个机器周期到个机器周期到8个个 机机 器周期。器周期。16二、中断请求的撤除二、中断请求的撤除 lCPU响应中断后,应撤除该中断请求标志,否则响应中断后,应撤除该中断请求标志,否则会再次中会再次中断。断。l对定时计数器对定时计数器T0、T1的溢出中断,的溢出中断,CPU响应中断后,硬响应中断后,硬件自动清除中断请求标志件自动清除中断请求标志TF0和和TF1。l对边沿触发的外部中断对边沿触发的外部中断INT1和和INT0,CPU响应中断后硬响应中断后硬件自动清除中断请求标志件自动清除中断请求标志IE0和和IE1。 l对

15、于串行口中断,对于串行口中断,CPU响应中断后,没有用硬件清除中断响应中断后,没有用硬件清除中断请求标志请求标志TI、RI,即这些中断标志,即这些中断标志 不会自动清除,必须用不会自动清除,必须用软件清除,这是在编串行通信中断服务中应该注意的。软件清除,这是在编串行通信中断服务中应该注意的。l对电平触发的外部中断,对电平触发的外部中断,CPU在响应中断时也不会自动清在响应中断时也不会自动清除中断标志,因此,在除中断标志,因此,在CPU响应中断后应立即撤除响应中断后应立即撤除INT1或或INT0的低电平信号。的低电平信号。 176.3 中断的汇编语言程序和C语言程序设计 用户对中断的控制和管理,

16、实际是对用户对中断的控制和管理,实际是对4个与中断有关的个与中断有关的寄存器寄存器IE、TCON、IP、SCON进行控制进行控制 或管理。这几个寄或管理。这几个寄存器在单片机复位时是清零的,因此必须根据需要对这几个存器在单片机复位时是清零的,因此必须根据需要对这几个寄存器的有关寄存器的有关 位进行预置。在中断程序的编制中应注意:位进行预置。在中断程序的编制中应注意:开中断总控开关开中断总控开关EA,置位中断源的中断允许位。,置位中断源的中断允许位。对外部中断对外部中断INT0、INT1应选择中断触发方式应选择中断触发方式编写中断服务程序,并注意用保护现场和恢复现场,以免中断编写中断服务程序,并

17、注意用保护现场和恢复现场,以免中断返回时,丢失原寄存器、累加器中的信息。返回时,丢失原寄存器、累加器中的信息。多个中断源中断,应设定中断优先级,预置多个中断源中断,应设定中断优先级,预置IP。若要在执行当前中断程序时禁止更高优先级中断,可采用软件若要在执行当前中断程序时禁止更高优先级中断,可采用软件关关CPU中断或禁止某中断源中断,在中断返回前再开放中断。中断或禁止某中断源中断,在中断返回前再开放中断。18 汇编语言的中断服务程序按规定的中断矢量汇编语言的中断服务程序按规定的中断矢量地址存入,由于五个中断矢量地址地址存入,由于五个中断矢量地址0003H、000BH 、0013H、001BH、0

18、023H之间相距很近,之间相距很近,往往装不下一个中断服务程序,通常将中断服务往往装不下一个中断服务程序,通常将中断服务程程 序安排在程序存贮器的其他地址空间,而在矢序安排在程序存贮器的其他地址空间,而在矢量地址的单元中安排一条转移指令。量地址的单元中安排一条转移指令。19 例例1.1.在图在图6.36.3中中P1.4P1.4P1.7P1.7接有四个发光二极管,接有四个发光二极管,P1.0P1.0P1.3P1.3接有四个开关,消抖电路用于接有四个开关,消抖电路用于 产生中产生中断请求信号,当消抖电路的开关来回拔动一次将断请求信号,当消抖电路的开关来回拔动一次将产生一个下降沿信号,通过产生一个下

19、降沿信号,通过INT0INT0向向CPUCPU申请中断,申请中断,要求:初时发光二极管全黑,每中断一次,要求:初时发光二极管全黑,每中断一次,P1.0P1.0P1.3P1.3所接的所接的 开关状态反映到发光二极管上,开关状态反映到发光二极管上,且要求开关断开的对应发光二极管亮,电路和现且要求开关断开的对应发光二极管亮,电路和现象如下:象如下: 20&+5V+5VP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.789C51EA&INT011111K 41K 2300 4图6.、此例的执行现象是,此例的执行现象是,每重置一次四个开每重置一次四个开关的开、合状态,关的开

20、、合状态,四个发光二极管维四个发光二极管维持原来的亮、灭持原来的亮、灭 状状态,仅当来回拔动态,仅当来回拔动消抖电路开关后,消抖电路开关后,产生了中断,发光产生了中断,发光二极管才反映新置二极管才反映新置的开关状态。的开关状态。21l ORG 0000H ORG 0000H l AJMP MAIN AJMP MAIN l ORG 0003H ORG 0003H ;INT0INT0中断入口中断入口l AJMP WBI AJMP WBI ; 转中断服务程序转中断服务程序l ORG 0030H ORG 0030H ;主程序;主程序l MAIN: MOV P1MAIN: MOV P1,#0FH #0F

21、H ;全灯灭,低四位输入;全灯灭,低四位输入l SETB IT0 SETB IT0 ; 边沿触发中断边沿触发中断l SETB EX0 SETB EX0 ;允许外中断;允许外中断0 0中断中断l SETB EA SETB EA ;开中断开关;开中断开关 l SJMP $SJMP $l WBI WBI: MOV P1MOV P1,#0FH #0FH ;P1P1先写入先写入“1”1”且灯灭且灯灭l MOV AMOV A,P1 P1 ;输入开关状态;输入开关状态l SWAP A SWAP A l MOV P1MOV P1,A A ;输出到;输出到P1P1高高4 4位位l RETIRETIl ENDEN

22、D22例例2. 89C51的的P1口接一个共阴极的数码管,利用消抖开关产生中断请口接一个共阴极的数码管,利用消抖开关产生中断请求信号,每来回拔动一求信号,每来回拔动一 次开关,产生一次中断,用数码管显示中断次开关,产生一次中断,用数码管显示中断的次数的次数(最多不超过最多不超过15次次)。 P1.189C51P1.0P1.2P1.4P1.3P1.5P1.6&1K 2INT1驱动器+5Vag图6.EA23l ORG 0000H ORG 0000H l AJMP MAINAJMP MAINl ORG 0013H ORG 0013H ;INT1INT1中断入口中断入口l AJMP INT1

23、AJMP INT1 ;转中断服务程序;转中断服务程序l ORG 0030H ORG 0030H ;主程序;主程序lMAINMAIN: SETB IT1 SETB IT1 ;边沿触发中断;边沿触发中断l SETB EX1 SETB EX1 ;允许;允许INT1INT1中断中断l SETB EA SETB EA ;开中断开关;开中断开关l MOV R0MOV R0,#0 #0 ;计数初值为;计数初值为0 0l MOV AMOV A,#3FH #3FH ;“0”0”的字形码送的字形码送A AlAL1AL1: MOV P1MOV P1,A A ;显示数码;显示数码lAL2AL2: CJNE R0CJN

24、E R0,#0FH#0FH,AL1 AL1 ;没满;没满1515次循环显示次循环显示 l MOV R7MOV R7,#0FFH #0FFH ;满;满1515次,显次,显FF,延,延时时 24l DJNZ R7 DJNZ R7,l MOV P1MOV P1,#0 #0 ;关显示;关显示l CLR EA CLR EA ;关中断;关中断l SJMP SJMP ;结束;结束lINT1INT1: INC R0 INC R0 ;中断次数加;中断次数加1 1l MOV AMOV A,R0R0l MOV DPTRMOV DPTR,TAB TAB ;DPTRDPTR指向字形码表首址指向字形码表首址l MOVC

25、AMOVC A,A+DPTR A+DPTR ;查表;查表l POP DPHPOP DPHl POP DPL POP DPL ;弹出断点;弹出断点l MOV DPTRMOV DPTR,#AL1#AL1l PUSH DPLPUSH DPLl PUSH DPH PUSH DPH ;修改中断返回点,;修改中断返回点,AL1AL1压入堆栈压入堆栈l RETI RETI ;从堆栈;从堆栈AL1AL1地址地址PCPC,返主程序,返主程序ALAL处处 25 lTABTAB: DB 3FHDB 3FH,06H06H,5BH5BH,4FH4FH,66H66H,6DH6DH DB 7DH DB 7DH,07H07H

26、,7FH7FH,6FH6FH,77H77H,7CH7CH DB 39H DB 39H,5EH5EH,79H79H,71H71H ;段码表;段码表( (字形码字形码) ) END END 上面程序每中断一次,执行一次中断服务程序上面程序每中断一次,执行一次中断服务程序INT1。在中在中断服务程序中,累计中断次数并断服务程序中,累计中断次数并 查字形表,返回到主程查字形表,返回到主程序序AL1地址执行显示。地址执行显示。26 ORG 0000H ORG 0000H AJMP MAIN AJMP MAIN ORG 0013H ORG 0013H AJMP INT1 AJMP INT1 ORG 003

27、0H ORG 0030HMAINMAIN:SETB TI1SETB TI1 SETB EX1 SETB EX1 SETB EA SETB EA MOV R0 MOV R0,#0#0 MOV A,#3FH MOV A,#3FHAL1AL1:MOV P1MOV P1,A A AL2AL2:CJNE R0CJNE R0,#0FH#0FH,AL1AL1 MOV R7 MOV R7,#0FFH #0FFH DJNZ R7 DJNZ R7, MOV P1MOV P1,#0 #0 CLR EA CLR EA SJMP SJMP INT1INT1:INC R0 INC R0 MOV A MOV A,R0R0

28、MOV DPTRMOV DPTR,TAB TAB MOVC AMOVC A,A+DPTRA+DPTR POP DPH POP DPH POP DPL POP DPL MOV DPTR MOV DPTR,#AL1#AL1 PUSH DPL PUSH DPL PUSH DPH PUSH DPH RETI RETI ;AL1AL1地址地址PCPC, 返主程序返主程序AL1 AL1 TAB: DB 3FHTAB: DB 3FH,06H06H,5BH5BH, 27 以上中断在以上中断在AL1或或AL2两指令处发生,究竟是哪一指令两指令处发生,究竟是哪一指令处中断是随机的,为保证返回到处中断是随机的,为保

29、证返回到AL1显示显示F ,这里采用,这里采用修改中断返回点的办法,修改中断返回点的办法, 即先从栈中弹出中断响应时压入即先从栈中弹出中断响应时压入的的 断点弹到断点弹到DPTR中,修改中,修改DPTR为用户需要的返回点,并将为用户需要的返回点,并将其压其压 入堆栈,再通过执行入堆栈,再通过执行RETI指令弹出栈中内容到指令弹出栈中内容到PC、弹出的即为修改后的地址,从而返回到主弹出的即为修改后的地址,从而返回到主 程序中用所希望程序中用所希望的地址执行。的地址执行。 上例中中断次数在主程序判断,目的是使读者了解修改上例中中断次数在主程序判断,目的是使读者了解修改中断返回点的方法,如果改在中断

30、服中断返回点的方法,如果改在中断服 务程序中判断,编程务程序中判断,编程简洁些,下面仅介绍和上例中的不同部分的程序。简洁些,下面仅介绍和上例中的不同部分的程序。 28 MOV R0MOV R0, #0 #0 ;计数初值为;计数初值为0 0 MOV P1MOV P1, #3FH #3FH ;显示;显示00 MOV DPTRMOV DPTR,#TAB #TAB ;指向字形码表;指向字形码表AGAAGA: SJMP SJMP ;等待中断;等待中断INT1INT1:INC R0 INC R0 ;中断次数加;中断次数加1 1 MOV AMOV A, R0R0 MOVC AMOVC A, A+DPTR A

31、+DPTR ;查字形码表;查字形码表 MOV P1MOV P1, A A ;显示;显示 CJNE R0CJNE R0, #0FH#0FH, RE RE ; 1515次中断未到转次中断未到转RERE CLR EA CLR EA ;1515次到关中断次到关中断RERE: RETI RETI ;返回主程序的;返回主程序的AGAAGA处处TABTAB: DB 3FHDB 3FH,06H06H,5BH5BH,4FH4FH,66H66H,6DH6DH,7DH,07H 7DH,07H DB 7FHDB 7FH,6FH6FH,77H77H,7CH7CH,39H39H,5EH5EH,79H79H,71H71H2

32、9 C51使用户能编写高效的中断服务程序,编译器在规使用户能编写高效的中断服务程序,编译器在规定的中断源的矢量地址中放入无条件转移指令,使定的中断源的矢量地址中放入无条件转移指令,使CPU响应中断后自动地从矢量地址跳转到中断服务程序的实响应中断后自动地从矢量地址跳转到中断服务程序的实际地址,而无需用户去安排。中断服务程序定义为函数,际地址,而无需用户去安排。中断服务程序定义为函数,函数的完整定义如下。函数的完整定义如下。l返回值返回值 函数名函数名(参数参数)模式再入模式再入interrupt nusing ml其中其中interrupt n 表示将函数声明为中断服务函数,表示将函数声明为中断

33、服务函数,n 为中断源编号,可以是为中断源编号,可以是031间的整数间的整数 ,不允许是带运,不允许是带运算符的表达式,算符的表达式,n 通常取以下值:通常取以下值: 30 0 外部中断外部中断0; 1 定时器定时器/计数器计数器0溢出中断溢出中断 2 外部中断外部中断1; 3 定时器定时器/计数器计数器1溢出中断溢出中断 4 串行口发送与接收中断串行口发送与接收中断 Using m 定义函数使用的工作寄存器组,定义函数使用的工作寄存器组,m的的取值范围为取值范围为03,可缺省,它,可缺省,它 对目标代码的影响对目标代码的影响是:函数入口处将当前寄存器保存,使用是:函数入口处将当前寄存器保存,

34、使用m指定指定的寄存器组,函数退出时原寄存器组恢复。选不的寄存器组,函数退出时原寄存器组恢复。选不同的工作寄存器组,可方便实现寄存器组的现场同的工作寄存器组,可方便实现寄存器组的现场保护。保护。31 再入再入: 属性关键字属性关键字reentrant将函数定义为再入的,将函数定义为再入的,在在C51中,普通函数中,普通函数(非再入的非再入的)不能递归调用,不能递归调用, 只有再只有再入函数才可被递归调用。入函数才可被递归调用。 中断服务函数不允许用于外部函数,它对目标代码中断服务函数不允许用于外部函数,它对目标代码影响如下:影响如下:当调用函数时,当调用函数时,SFR中的中的ACC、B、DPH

35、、DPL和和PSW(当需要时入栈当需要时入栈)。如果不使用寄存器组切换,中断函数所需的所有工作寄如果不使用寄存器组切换,中断函数所需的所有工作寄存器存器Rn都入栈。都入栈。函数退出前,所有工作寄存器出栈。函数退出前,所有工作寄存器出栈。函数由函数由“RETI”指令终止。指令终止。32例如,对本节的例例如,对本节的例1用用C语言编程语言编程#includeint0() interrupt 0 /*INT0中断函数中断函数*/ P1=0 x0f; /*输入端先置输入端先置1,灯灭,灯灭*/ P1=4; /* 读入开关状态,并左移四位,读入开关状态,并左移四位, 使开关反映在发光二极管上使开关反映在

36、发光二极管上*/ main() EA=1; /*开中断总开关开中断总开关*/ EX0=1; /*允许允许INT0中断中断*/ IT0=1; /*下降沿产生中断下降沿产生中断*/ while(1); /*等待中断等待中断*/ 33 主函数执行主函数执行while(1);语句进入死循环等待中断,;语句进入死循环等待中断,当拨动当拨动INT0的开关后,进入中断函数,读入的开关后,进入中断函数,读入P1.0P1.3的开关状态并将状态数据右移四位到的开关状态并将状态数据右移四位到P1.4P1.7的位置上输出控制的位置上输出控制LED亮,执行完中断,返回到等待亮,执行完中断,返回到等待中断的中断的whil

37、e(1)语句,等待下一次的中断。语句,等待下一次的中断。 34法法1:在主程序中控制中断次数:在主程序中控制中断次数#includechar i;code char tab16= 0 x3f,0 x06,0 x5b, 0 x4F,0 x66,0 x6d,0 x7d, 0 x07, 0 x7f,0 x6f,0 x77, 0 x7c,0 x39, 0 x5e,0 x79,0 x71;int( ) interrupt 2i+; /*计中断次数计中断次数*/ P1=tabi; /*查表,次数送显示查表,次数送显示*/例例2 对本节的例对本节的例2记录并显示中断次数改用记录并显示中断次数改用C语言编程,可语言编程,可有两种编程

温馨提示

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

评论

0/150

提交评论