s6-2 中断应用_第1页
s6-2 中断应用_第2页
s6-2 中断应用_第3页
s6-2 中断应用_第4页
s6-2 中断应用_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、AT89C52中断系统TCON、T2CON 及及SCONMCS51单片机内部的中断检测电路检测到有中请后,将检测结果存于TCON、T2CON、SCON中;每个中断源对应一个中断标志位,当某个中断源有中请时,相应的中断标志位置1,各个中断源的中断标志位在TCON、T2CON和SCON中。T2CON(0C8H)中的标志位,可位寻址)中的标志位,可位寻址T2CON(C8H)D7D6D5D4D3D2D1D0TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL2TF2:T2溢出标志。定时/计数器T2溢出时置位,必须由用户软件清除。当RCLK或TCLK1时,不允许TF2置位。EXF2:T2的外

2、部中断标志。在捕捉方式和常数自动重装入方式下,当EXEN21时,在T2EX端发生的负跳变使EXF2置位。如此时T2中断被允许,则EXF21会使CPU响应中断。EXF2必须由软件清0。在递增/递减计数器模式(DCEN1)中,EXF2不会引起中断。注意:注意:8051复位后复位后IE=00H,说明,说明CPU和各个中断源都关中断。和各个中断源都关中断。单片机在响应中断后不会自动关中断,因此,如果在转入单片机在响应中断后不会自动关中断,因此,如果在转入中断服务处理程序后,如果想禁止更高级的中断源的中断中断服务处理程序后,如果想禁止更高级的中断源的中断申请,可以用软件方式关闭中断。申请,可以用软件方式

3、关闭中断。IE:A8H 可以按字节操作,也可以按位操作。可以按字节操作,也可以按位操作。使用字节操作指令,可用一条指令:使用字节操作指令,可用一条指令: MOV IE,8CH使用位操作指令,则需三条指令实现。使用位操作指令,则需三条指令实现。SETB EX1SETB ET1SETB EA例:例:要求要求开放外中断开放外中断1和和T1的溢出中断,屏蔽其他中断。的溢出中断,屏蔽其他中断。EAXXESET1EX1ET0EX010001100则如图所示,对应的中断允许控制寄存器内容应为则如图所示,对应的中断允许控制寄存器内容应为10001100B,即,即中断允许控制字为中断允许控制字为8CH。中断优先

4、级与中断优先级寄存器中断优先级与中断优先级寄存器 IPAT89C52单片机具有单片机具有4个中断优先级,六个中断源均可编程设定为高个中断优先级,六个中断源均可编程设定为高优先级或低优先级。优先级或低优先级。优先级位中断优先级IPH.XIP.X000(最低优先级)011102113(最高优先级)【例6-1】单片机用了三个中断源(INT0、INT1、T0),要求这三个中源的优先顺序为T0、INT1、INT0相应的软件指令: MOV IPH,#02H MOV IP,#04H经过这两条指令后,其中断源的优先级如下表所示优先级位中断源IPH(0B7H)IP(0B8H)0(PX0)00(PX0)0外部中断

5、01(PT0)11(PT0)0定时器02(PX1)02(PX1)1外部中断13(PT1)03(PT1)0定时器14(PS)04(PS)0串行口中断5(PT2)05(PT2)0定时器26()06()0保留7()07()0保留中断机制中软件的操作中断机制中软件的操作 中断初始化中断初始化 中断使能:必须中断使能:必须 中断优先级设置:根据需要选择,可有中断优先级设置:根据需要选择,可有/ /可无可无 外部中断触发方式设置:外部中断触发方式设置:IT0IT0、IT1IT1中断服务子程序中断服务子程序中断向量(中断向量(0003H0003H、0013H0013H):中断服务子程序的入口地址):中断服务

6、子程序的入口地址进入中断服务后:保护现场进入中断服务后:保护现场退出中断服务前:恢复现场退出中断服务前:恢复现场中断服务程序的最后一条指令必是中断服务程序的最后一条指令必是 RETIRETI例例 1 设引脚设引脚P3.2接有一个开关,当开关按下并抬起时,产生一次中断,试对中接有一个开关,当开关按下并抬起时,产生一次中断,试对中断系统初始化。断系统初始化。 MOV SP,#60H MOV IE,#81H SETB IT0 例例2 用中断实现如下功能:将用中断实现如下功能:将30H60H单元的内容送微型打印机打印。单元的内容送微型打印机打印。例例3 用中断实现如下功能:用中断实现如下功能: 2个开

7、关个开关K1和和K2,1个数码管,当个数码管,当K1按下时数码管按下时数码管加加1,K2按下时数码管减按下时数码管减1。例例2 用中断实现如下功能:用中断实现如下功能:将将30H60H单元的内容送微单元的内容送微型打印机打印。型打印机打印。P1.0P1.1P1.2P1.3STBACKBUSY89C51D6D0D1D2D3D4D5P1.4P1.5P1.6P1.7微型打印机微型打印机D7P2.0P3.2 ORG 0000H LJMP MAIN ORG 0003H LJMP AINT0 MAIN:MOV SP,#60H SETB EA SETB EX0 SETB IT0 MOV R0,#30H MO

8、V P1,R0 SETB P2.0 CLR P2.0 SJMP $AINT0: INC R0 CJNE R0,#61H,AINT00 CLR EA CLR EX0 RETIAINT00: MOV P1,R0 SETB P2.0 CLR P2.0 RETI END例例3:用中断实现如下功能:用中断实现如下功能: 2个开关个开关K1和和K2,1个数码管,当个数码管,当K1按按下时数码管加下时数码管加1,K2按下时数码管减按下时数码管减1。P1.0P1.1P1.2P1.389C51P1.4P1.5P1.6P1.7COMabcdefg共阴极共阴极LEDK1K2P3.2P3.3+5VAINT0: INC

9、 R7 CJNE R7,#10,AINT01 MOV R7,#0AINT01:RETIBINT1: DEC R7 CJNE R7,#0FFH,BINT11 MOV R7,#9BINT11: RETI ENDTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ORG 0000H LJMP MAIN ORG 0003H LJMP AINT0 ORG 0013H LJMP BINT1 MAIN:MOV SP,#60H MOV IE,#85H SETB IT0 SETB IT1 MOV R7,#0 UP: MOV A,R7 MOV DPTR,#TAB MOV

10、C A,A+DPTR MOV P1,A SJMP UP【例【例6-2】AST89C52的的P2.7脚上接了一个发光二极管,在外部中断脚上接了一个发光二极管,在外部中断1上接了一个接键(如图上接了一个接键(如图6-5所示)。要求开始工作时发光二极管所示)。要求开始工作时发光二极管D1亮,亮,当按健当按健KEY按下时,发光二极管按下时,发光二极管D1熄。当再次按下熄。当再次按下KEY键时,发光键时,发光二极管二极管D1亮。亮。解:当当KEYKEY键按下时,键按下时,INT1INT1的中断标志的中断标志IE1IE1由由0 0变变1 1,就会引发中断,就会引发中断,CPUCPU将自动转至将自动转至00

11、13H0013H处寻找程序并执行,由于留给处寻找程序并执行,由于留给INT1INT1中断的空间只有中断的空间只有8 8个字节,显然不足以写个字节,显然不足以写下所有中断处理程序,所以在下所有中断处理程序,所以在0013H0013H处安排一条跳转指令,转到实际处理中断的程处安排一条跳转指令,转到实际处理中断的程序处,这样,中断程序可以写在任意地方,也可以写任意长度了。进入定时中断序处,这样,中断程序可以写在任意地方,也可以写任意长度了。进入定时中断后,首先要保存当前的一些状态,程序中只演示了保存后,首先要保存当前的一些状态,程序中只演示了保存ACCACC和和PSWPSW,实际工作中应,实际工作中

12、应该根据需要将可能会改变的单元的值都推入堆栈进行保护。该根据需要将可能会改变的单元的值都推入堆栈进行保护。 ORG 0000H ;主程序的入口地址 AJMP MAIN;跳转到主程序的开始处 ORG 0013H;外部中断1的入口地址 AJMP KEY ;跳转到中断服务程序处 MAIN: CLR P2.7 ;让D1亮 MOV R2,#0 SETB IT1 ;选择边沿触发方式 SETB EX1 ;允许INT1中断 SETB EA ;CPU开中断 SJMP $ ;等待按键中断KEY: PUSH PSW ;保护现场 PUSH ACC#include bit i=0;main() IT1=1; /选择边沿

13、触发方式 EX1=1; /允许INT0中断 EA=1; /CPU开中断 P2_7=0; /D1亮 while(1); /等待按键中断void Key_int(void) interruput 2 i=i; p2_7=i;说明:在说明:在keilkeil中编译此程序时要将中编译此程序时要将KeilC51INCAtmelKeilC51INCAtmel目录下的目录下的AT89X52.HAT89X52.H文件拷贝到文件拷贝到KeilC51INCKeilC51INC目录下编译才不会目录下编译才不会报错报错【例6-3】AT89S52的P2口接了八个发光二极管,在外部中断0上接了一个接键。当按健KEY按下时

14、,二极管从上到下的顺序依次地亮(每次只亮一个),亮到最后一个时又从最上面一个开始。当再次按下KEY键时,发光二极管立即从下往上依次亮(每次也只亮一个),亮到最上面一个时又从最后一个开始。【例6-4】用AT89S52对某外部设备进行漏电检测,以保证该设备的安全运行。用AT89S52的外部中断1检测设备的漏电流,如检测到有漏电情况发生,立即从P1.0口送出一个高电平控制信号,关断用电设备的电源,来保证其安全。汇编代码C51代码ORG 0000H ;主程序的入口地址AJMP MAIN;跳转到主程序的开始处ORG 0013H;外部中断1的入口地址AJMP SERVE;跳转到中断服务程序处MAIN: C

15、LR P1.0;将P1.0置为低电平 SETB IT1;选择边沿触发方式 SETB EX1;允许INT1中断 SETB EA ;CPU开中断 AJMP $ ;等待中断 SERVE:PUSH PSW PUSH ACC SETB P1.0 ;将P1.0置为高电平 POP ACC POP PSW RETI#include main() IT1=1;EX1=1; EA=1; while(1);void PowerWatchInt(void) interrupt 2 P1_0=1;【例6-5】用单片机监测EX_Info1EX_Info3三个外部设备在运行过程中是否有故障。不管哪一个设备一旦出现故障必须马

16、上处理,所以采用中断系统来监测这三个外部设备。当系统无故障时,3个故障源输入端EX_Info1EX_Info3全为高电平,对应的3个显示灯全灭;当某个设备出现故障时,其对应的输入端由低电平变为低电平,从而引起AT89S52单片机中断,中断服务程序的任务是判定故障,并点亮对应的发光二极管。其中,发光二极管LED1LED3对应3个输入端EX_Info1EX_Info3。3个故障源通过“与门”与单片机的外部中断1输入端相连。ORG 0000H ;主程序的入口地址 AJMP MAIN ORG 00013H ;外部中断1的入口地址 AJMP SERVE;跳转到中断服务程序处MAIN:MOV P2,#0FFH ;灯全灭,准备读入 SETB IT1 ;选择边沿触发方式 SETB EX1 ;允许INT1中断 SETB EA ;CPU开中断 AJMP $ ;等待中断SERVE: PUSH PSW PUSH ACC JB P2.7 , L1 ;若无故障,跳到L1 CLR P2.2 ;点亮LED3 L1: JB P2.6 , L2 ;若无故障,跳到L2 CLR P2.1 ;点亮LED2 L2: JB P2.5 , L3 ;若无故障,跳到L3 CLR P2.0 ;点亮 LED1 L3: POP ACC POP PSW RETI#include ma

温馨提示

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

评论

0/150

提交评论