您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > MCS-51单片机应用教程 第8章
第8章MCS-51单片机外部中断的应用8.1外部中断的应用8.2外部中断源的扩展1.实训目的掌握中断应用技术及编程方法掌握多级外部中断编程方法8.1外部中断的应用2.功能设计用P1.0、P1.1、P1.2口控制3个发光二极管L1~L3的亮灭。设系统晶振为6MHz。主程序:(1)程序初始化,对相关寄存器进行设置。(2)由P1.3产生脉宽为1s的方波。中断程序:INT0中断使L1~L3点亮10s;INT1中断使L1~L3交替亮灭1s。中断源:开关K0按下,申请外部中断0;用P1.3输出脉冲作为外部中断1的中断源。3.背景知识(1)设计中断控制程序时,首先要对与中断控制有关的寄存器进行设置。需要设置的特殊功能寄存器有IE、TCON和IP。设INT0、INT1的触发方式为下降沿触发,INT0为高级中断,INT1为低级中断。则各相关寄存器的设置见书155~156页。(2)中断入口地址INT0中断入口地址为0003H;INT1中断入口地址为0013H。4.硬件电路与单片机资源分配硬件电路如图8-1所示。硬件资源分配:P1.0、P1.1、P1.2口用于驱动3个发光二极管;P1.3输出脉宽为1s间隔的脉冲,用于产生外部中断1的中断信号;R3、R6、R7为延时程序中所用的计数器。图8-1中断实训15.参考程序ORG0000H;CPU起始地址AJMPMAIN;跳转到主程序ORG0003H;INT0中断入口地址AJMPJINT0;转到INT0处理程序ORG0013H;INT1中断入口地址AJMPJINT1;转到INT1处理程序MAIN:NOP;主程序段MOVSP,#40H;设定堆栈MOVA,#0FFH;0FF送AMOVP1,A;初始化P1口,3位发光二极管全灭SETBIT0;INT0为边沿触发SETBIT1;INT1为边沿触发SETBPX0;INT0为高级中断SETBEX0;开放INT0SETBEX1;开放INT1SETBEA;开总中断LOOP:MOVR3,#0AH;延时1sLCALLYS100;调用延时100ms子程序DJNZR3,LOOPCPLP1.3AJMPLOOP;主程序循环,如果有中断,则转到中断处理程序JINT0:NOP;INT0处理程序,如果K0按下则转此段CLREA;关中断保护现场PUSH03H;保护R3PUSH06;保护R6PUSH07H;保护R7CLRP1.0;L1~L3全亮CLRP1.1CLRP1.2MOVR2,#100;延时10sLOOP1:LCALLYSA100;调用延时100ms子程序DJNZR2,LOOP1POP07H;恢复现场POP06HPOP03HSETBEA;开中断RETI;中断返回JINT1:NOPCLREA;关中断,保护现场PUSH03H;保护R3PUSH06;保护R6PUSH07H;保护R7SETBEA;开中断CPLP1.0;灯亮/灭CPLP1.1CPLP1.2CLREA;关中断,恢复现场POP07HPOP06HPOP03HSETBEA;开中断RETI;中断返回YS100:MOVR6,#99;延时100子程序L100:MOVR7,#124L1:NOPNOPDJNZR7,L1NOPNOPDJNZR6,L100NOPNOPRETEND6.总结与提高本电路比较简单,目的是学习中断程序设计的基本方法。在设计中断程序时,注意主程序与中断程序的编制方法。应注意中断输入的电平应不高于+5V,且外部中断输入要求是低电平或由高到低的下降沿。编写中断服务程序时应注意以下几个问题:(1)两个相邻中断源中断服务程序入口地址相距只有8个单元,一般的中断服务程序是容纳不下的,通常是在相应的中断服务程序入口地址单元处存放一条无条件转移指令LJMP或AJIMP,转移到中断服务程序。(2)在中断服务程序中,应注意保护现场,保证中断返回时能可靠地恢复现场,使单片机继续进行原来的工作。保护和恢复现场操作时应关中断。(3)若需要在执行当前中断程序时禁止更高优先级的中断,可以先用软件关闭CPU总中断或禁止相关中断源中断,在中断返回前再开放中断。1.实训目的掌握中断应用技术及编程方法掌握外部中断的扩展技术及编程方法2.功能设计主程序:P1口用于控制发光二极管L1~L8的交替亮灭。中断源:串行口扩展外部中断源。无中断时,8位发光二极管按固定时间间隔交替亮灭,有中断时,8位发光二极管全部点亮。8.2外部中断源的扩展3.背景知识(1)利用串行口方式0串行接收功能来扩展外部中断源。串行口串行接收端为RXD(P3.0),当单片机启动串行接收后,RXD开始逐位接收数据。当接收完8位数时,串行口向CPU发出中断申请,RI=1,CPU响应中断,并执行中断服务程序。注意,中断返回前,必须通过编程将RI清0。串行口控制寄存器SCON的设置如下:SCONSM0SM1SM2RENTB8RB8TIRI98H00010000(2)串行口中断入口地址:0023H。(3)使用8位并入串出移位寄存器74LS165实现外部中断源的扩展。管脚2为移位脉冲输入端,与单片机串行口同步脉冲输出端TXD相连。管脚15为串行移位输出控制端,高电平禁止串行输出,低电平允许串行输出。外部中断信号线EXINT接管脚15,低电平申请中断。4.硬件电路硬件原理图如图8-2所示。图8-2串行口扩展外部中断5.参考程序ORG0000H;CPU起始地址AJMPMAIN;转主程序ORG0023H;串行口中断入口地址AJMPJSBUF;转串行口中断处理程序MAIN:NOP;主程序段MOVSP,#40H;设定堆栈MOVA,#0FFHMOVP1,A;初始化P1口MOVSCON,#10H;设定串行口工作方式0,允许接受SETBES;允许串行口中断SETBEA;开总中断,EA=1(开放总中断)LOOP:MOVA,#0AAHMOVP1,A;点亮L1、L3、L5、L7LCALLDLS;调延时程序MOVA,#55HMOVP1,A;点亮L2、L4、L6、L8LCALLDLS;调延时程序AJMPLOOP;主程序循环执行,如果有中断,则转中断处理程序JSBUF:NOPCLREAPUSHACC;保护现场PUSH00H;保护R0PUSH01H;保护R1CLRRI;清串行中断标志MOVA,#0MOVP1,A;灯全亮LCALLDLS;调用延时程序POPACC;恢复现场POP01HPOP00HPOPACCSETBEARETIDLS:MOVR1,#0FFHLOP1:MOVR0,#0FFHLOP:DJNZR0,LOPDJNZR1,LOP1RETEND6.总结与提高在本节的实训中,不需要处理串行接收的数据,只需要利用串行口中断信号来扩展一个外部中断源。注意,外部中断源EXINT维持低电平的时间要大于8个TXD端输出的移位脉冲的时间。扩展外部中断源的方法较多,除了本节介绍的方法外,还可以应用优先编码器74LS348、74LS148等进行外部中断源的扩展。
本文标题:MCS-51单片机应用教程 第8章
链接地址:https://www.777doc.com/doc-3819806 .html