第四章中断介绍

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第4章单片机中断系统及定时/计数器什么是中断2任何一件事情的发生都会中断小林看电视的进程而去响应和处理事件。例如,邮递员上门送信,小林必须去开门签收信件,当事件处理完后,小林回去接着看电视。中断源可以引起中断的事件称为中断源。单片机中也有一些可以引起中断的事件,8051中一共有5个中断源:两个外部中断(p3.2,p3.3),两个计数器/定时器中断(P3.4,P3.5),一个串行口中断(p3.0,p3.1)。5个独立中断源所对应的向量地址如表5-2所示。表5-2中断源的入口地址图5-1中断响应的过程中断控制及相关的SFR中断允许控制:IE中断请求标志:TCON及SCON中断优先控制:IP中断触发方式控制:TCON(IT0和IT1)中断允许寄存器IE(InterruptEnable)在8051单片机中断系统中,中断的允许或禁止是由8位中断允许寄存器IE来控制的。中断允许寄存器IE(SFR地址:0A8H)各位的定义如表5-3所示。表5-3中断允许寄存器IEEA:总允许位(一级控制)。EA=0时,禁止一切中断;EA=1时,中断开放。ES:ES=1时允许RI、TI引发中断,否则禁止串口中断.ET1、ET0:定时器T1、T0允许位,ET1=1或ET0=1时,允许TF1或TF0引发中断,否则禁止相应的定时器中断。EX1、EX0:外部中断1/外部中断0,允许位EX1=1或EX0=1时允许相应的外部中断,否则禁止相应的外部中断。中断一例910ORG00H;起始地址00HMAIN:MOVIE,#84H;使能外部中断1GREEN:CLRP0.0;点亮绿色发光二极管D1JMPGREEN;循环;中断服务子程序段,熄灭绿色发光二极管D1,点亮红色D2ORG13H;外部中断1的中断服务子程序起始地址为13HEXT1_RED:SETBP0.0;熄灭绿色发光二极管D1CLRP0.1;点亮红色D2D1:MOVR4,#20;延时程序100msD2:MOVR5,#248D3:MOVR6,#248DJNZR6,$DJNZR5,D3DJNZR4,D2SETBP0.1;熄灭红色发光二极管D2RETI;中断服务子程序结束END;程序结束外部中断信号输入端/INT0和/INT11112外部中断的触发方式使单片机产生外部中断的信号有两种方式,一是低电平触发,二是下降沿触发。当单片机上电复位后,使能外部中断时就默认以低电平方式触发。在低电平触发模式下,外部中断信号输入端/INT0和/INT1出现低电平就会触发外部中断0或外部中断1。外部中断的下降沿触发13除了低电平触发外,边沿触发也是一种常用的触发外部中断的模式。在该模式下,/INT0端或/INT1端出现下降沿即可使单片机产生中断。与低电平触发不同,下降沿触发方式不是单片机默认的中断触发方式,所以需要指令来设置单片机工作在该模式下。方法是通过寄存器TCON中的IT0位和IT1位来分别控制/INT0和/INT1触发方式。TCON的外部中断标志IT0/IT1(TCON.0/2),外部中断0/1触发方式控制位。当IT0=0时,为电平触发方式。当IT0=1时,为边沿触发方式(下降沿有效)。IE0/1(TCON.1/3),外部中断0/1中断请求标志位。外部有中断请求时,硬件使IE1/0置1,硬件清0。【例5-2】请写出INT1为低电平触发的中断系统初始化程序。解:(1)采用位操作指令。SETBEASETBEX1;开INT1中断CLRIT1;令INT1为电平触发(2)采用字节型指令。MOVIE,#84H;开INT1中断ANLTCON,#0FBH;令INT1为电平触发中断优先级处理假如你正在看书,电话铃响了,同时又有人按门铃,你该先做哪样事呢?如果你正是在等一个很重要的电话,你一般不会去理会门铃的;反之,如果你正在等一个重要的客人,则可能就不会去理会电话。如果不是这两者(即不等电话,也不是等人上门),你可能会按你通常的习惯去处理。总之,这里存在一个优先级的问题。单片机中也是如此,也有优先级的问题。中断源的自然优先级MCS-51单片机有5个独立的中断源,它们可以利用专用寄存器IP设置不同的优先级。若都被设置成同一优先级,5个中断源的自然优先级由硬件形成,排列如表5-1所示。2)中断的优先级控制寄存器中断优先级寄存器IP(SFR地址:0B8H)各位的定义如表5-4所示。PS:串行口中断优先级设定位。PT1、PT0:定时器T1、T0中断优先级设定位。PX1、PX0:外部中断1、外部中断0的中断优先级设定位。以上各位若被置1,则相应的中断将被设置为高优先级中断;若被置0,则相应的中断将被设置为低优先级中断。图5-5中断嵌套流程【例5-4/4-3】P1口作输出口,正常时控制8只灯(P1口输出低电平时灯被点亮)每隔0.5s全亮全灭一次;按下开关1,8只灯从右向左依次点亮;按下开关2,8只灯从左向右依次点亮。开关1的低电平脉冲信号作为外部中断信号由INT0(P3.2)管脚输入,开关2的低电平信号作为外部中断信号由INT1(P3.3)管脚输入。ORG0000H;程序入口LJMPMAIN;转向主程序ORG0003H;外部中断0的入口地址LJMPINT_0;转向外部中断0中断服务程序ORG0013H;外部中断1的入口地址LJMPINT_1;转向外部中断1中断服务程序ORG0030HMAIN:MOVSP,#80HMOVIE,#85H;允许外部中断0、外部中断1SETBPX1;外部中断1为高优先级SETBIT0;外部中断0为边沿触发MOVA,#00HLP1:MOVP1,ALCALLDELAYCPLASJMPLP1ORG0100HINT_1:PUSHACC;外部中断1中断服务程序PUSHPSWSETBRS1;选择第2组工作寄存器CLRRS0MOVR2,#07HMOVA,#7FH;灯点亮的初始状态NEXT1:MOVP1,ALCALLDELAYRRADJNZR2,NEXT1POPPSWPOPACCRETIINT_0:PUSHACC;外部中断0中断服务程序PUSHPSWSETBRS1;选择第2组工作寄存器CLRRS0MOVR2,#07HMOVA,#7FH;灯点亮的初始状态NEXT0:MOVP1,ALCALLDELAYRLADJNZR2,NEXT0POPPSWPOPACCRETIDELAY:MOVR3,#250;延时0.5s程序DEL2:MOVR2,#248NOPDEL1:DJNZR2,DEL1DJNZR3,DEL2RETEND编写中断服务程序时还需注意以下几点。(1)各中断源的中断入口地址之间只相隔8B,容纳不下普通的中断服务程序,因此,在中断入口地址单元通常存放一条无条件转移指令,可将中断服务程序转至存储器的其他任何空间。(2)若要在执行当前中断程序时禁止其他更高优先级中断,需先用软件关闭CPU中断,或用软件禁止相应高优先级的中断,在中断返回前再开放中断。中断请求的撤除CPU响应中断请求后即进入中断服务程序,在中断返回前,应撤除该中断请求,否则会重复引起中断而导致错误。MCS-51单片机各中断源中断请求撤销的方法各不相同1)定时器中断请求的撤除对于定时器0或定时器1溢出中断,CPU在响应中断后即由硬件自动清除其中断标志位TF0或TF1,无需采取其他措施。2)串行口中断请求的撤除对于串行口中断,CPU在响应中断后,硬件不能自动清除中断请求标志位TI、RI,必须在中断服务程序中用软件将其清除。3)外部中断请求的撤除外部中断可分为边沿触发型和电平触发型。对于边沿触发的外部中断0或1,CPU在响应中断后由硬件自动清除其中断标志位IE0或IE1,无需采取其他措施。对于电平触发的外部中断,其中断请求撤除方法较复杂。因为对于电平触发外中断,CPU在响应中断后,硬件不会自动清除其中断请求标志位IE0或IE1,同时,也不能用软件将其清除,所以,在CPU响应中断后,应立即撤除INT0或INT1引脚上的低电平;否则,就会引起重复中断而导致错误。5.4外部中断源的扩展5.4.1用定时器作外部中断源MCS-51单片机有两个定时器,如在某些应用中不被使用,则它们的中断可作为外部中断请求使用。此时,可将定时器设置成计数方式,计数初值可设为满量程,则它们的计数输入端T0(P3.4)或T1(P3.5)引脚上发生负跳变时,计数器加1便产生溢出中断。利用此特性,可把T0脚或T1脚作为外部中断请求输入线,而计数器的溢出中断作为外部中断请求标志。【例5-1】将定时器T0扩展为外部中断源。解:将定时器T0设定为方式2(自动恢复计数初值),TH0和TL0的初值均设置为FFH,允许T0中断,CPU开放中断,部分源程序如下:MOVTMOD,#06HMOVTH0,#0FFHMOVTL0,#0FFHSETBTR0SETBET0SETBEA…5.4.2中断和查询相结合利用两根外部中断输入线(INT0引脚),每一中断输入线可以通过或非的关系连接多个外部中断源,同时,利用并行输入端口线作为多个中断源的识别线,其电路原理如图5-8所示。中断服务程序如下:•ORG0003H;外部中断0入口AJMPINT_0;转向中断服务程序入口INT_0:PUSHPSW;保护现场PUSHACCJBP1.0,EXINT0;中断源查询并转相应中断程序JBP1.1,EXINT1JBP1.2,EXINT2JBP1.3,EXINT35.6实践训练任务:工业顺序控制1.实现任务工业顺序控制,由P1.0~1.6控制注塑机的7道工序,现模拟控制7只发光二极管的点亮,低电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,高电平启动。P3.3为外部故障输入模拟开关,低电平报警,P1.7为报警声音输出,设定6道工序只有1位输出,第七道工序3位有输出。5.6实践训练4.实施过程(1)硬件设计P3.4接K1,P3.3接K2(外中断1),P1.0~P1.6分别接发光二极管D1~D7,P1.7接LM386正向输入端,通过LM386功率放大后5脚输入接扬声器,由它发出报警声音。硬件设计如图5-12所示。2)软件设计根据要求,程序设计如下:ORG0000HLJMPPO10ORG0013H;外部中断1的入口地址LJMPPO16ORG0080HPO10:MOVP1,#7FHORLP3,#00HPO11:JNBP3.4,PO11;开工吗?MOVIE,#84HMOVIP,#04HMOVPSW,#00H;初始化MOVSP,#53HPO12:MOVP1,#7EH;第一道工序ACALLPO1BMOVP1,#7DH;第二道工序ACALLPO1BMOVP1,#7BH;第三道工序ACALLPO1BMOVP1,#77H;第四道工序ACALLPO1BMOVP1,#6FH;第五道工序ACALLPO1BMOVP1,#5FH;第六道工序ACALLPO1BMOVP1,#0FH;第七道工序ACALLPO1BSJMPPO12PO16:MOVB,R2;保护现场PO17:MOVP1,#7FH;关输出MOV20H,#0A0H;振荡次数PO18:SETBP1.7;振荡ACALLPO1A;延时CLRP1.7;停振ACALLPO1A;延时DJNZ20H,PO18;不为0转CLRP1.7ACALLPO1A;停振JNBP3.3,PO17;故障消除吗?MOVR2,B;恢复现场RETIPO19:MOVR2,#10HACALLDELY;延时1RETPO1A:MOVR2,#06HACALLDELY;延时2RETPO1B:MOVR2,#30HACALLDELY;延时3RETDELY:PUSH02HDEL2:PUSH02HDEL3:PUSH02H;延时DEL4:DJNZR2,DEL4POP02HDJNZR2,DEL3POP02HDJNZR2,DEL2POP02HDJNZR2,DELYRETEND人有了知识,就会具备各种分析能力,明辨是非的能力。所以我们要勤恳读书,广泛阅读,古人说“书中自有黄金屋。”通过阅读科技书籍,我们能丰富知识,培养逻辑思维能力;通过阅读文学作品,我们能提高文学鉴赏水平,培养文学情趣

1 / 40
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功