单片机中断系统的C51语言编程

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

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

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

资源描述

第4章单片机中断系统的C51语言编程4.1单片机的中断系统4.2外部中断4.3定时器/计数器中断4.4本章小结4.5实训四十字路口交通信号灯控制返回首页教学提示中断作为一项重要的计算机技术,在计算机中得到了广泛的应用。51系列单片机的中断系统有5个中断源(外部中断0,外部中断1,定时器/计数器中断0,定时器/计数器中断1,串行口通信中断),有11个与中断有关的特殊功能寄存器(IP,IE,SCON,TMOD,TCON,PCON,TH1,TH0,TL1,TL0,SBUF)。能否正确地理解这些特殊功能寄存器与各个中断源之间的关系,能否熟练地使用C51语言编写中断服务程序,是学好单片机C语言程序设计的关键所在。本章重点介绍外部中断、定时器/计数器中断。教学要求理解中断的概念及中断系统功能;掌握外部中断的应用、外部中断的扩展以及编写外部中断服务程序的方法;熟悉定时器/计数器的结构与工作方式;掌握定时器/计数器的应用及编写定时器/计数器中断服务程序的方法;掌握相关的特殊功能寄存器在外部中断、定时器/计数器中断中的应用。4.1单片机的中断系统4.1.151系列单片机的中断系统4.1.251系列单片机中断系统的控制4.1.351系列单片机的中断处理过程4.1单片机的中断系统所谓中断就是当单片机执行主程序时,系统中出现某些急需处理的异常情况或特殊请求(中断请求),单片机暂时中止现行的程序,而转去对随机发生的更紧迫的事件进行处理(中断响应),在处理完毕后,单片机又自动返回(中断返回)原来的主程序继续运行,如图4.1所示。图4.1中断处理过程中断返回中断响应中断请求主程序紧急事件发生紧急事件处理继续执行主程序单片机应用系统中使用中断技术具有多个优点:(1)能实现单片机与多个外围设备并行工作,提高了单片机的利用率及数据的输入/输出效率。(2)能对单片机运行过程中某个事件的出现或突然发生的故障做到及时发现并进行自动处理,即实现实时处理。(3)能使我们通过键盘发出请求,随时对运行中的计算机进行干预,即可以实现人机联系。(4)能实现多道程序的切换运行。(5)能在多机系统中实现各处理机之间的信息交换和任务切换。4.1.151系列单片机的中断系统51系列单片机的中断系统如图4.2所示。图4.251系列单片机的中断系统1.中断源0INT1INT1)外部中断源(1)外部中断0()的中断请求信号由引脚P3.2输入。(2)外部中断1()的中断请求信号由引脚P3.3输入。外部中断源触发信号有两种方式:电平触发方式和脉冲下降沿触发方式。引起中断的原因或能发出中断请求的来源称为中断源。51系列单片机有2个外部中断源、2个定时器/计数器中断源及1个串行口中断源。相对于外部中断源,定时器/计数器中断源与串行口中断源又称为内部中断源。2)定时器/计数器中断源(1)定时器/计数器中断0()用作计数器时,其中断请求信号由引脚P3.4输入;用作定时器时,其中断请求信号取自单片机内部的定时脉冲。(2)定时器/计数器中断1()用作计数器时,其中断请求信号由引脚P3.5输入;用作定时器时,其中断请求信号取自单片机内部的定时脉冲。3)串行口中断源串行口中断源分为发送中断()和接收中断()两种。TC0TC1TXDRXD2.中断请求标志TCON是定时器/计数器的控制寄存器。它锁存两个定时器/计数器的溢出中断标志及外部中断0、1的中断标志。TCON中的中断请求标志位如图4.3所示。在程序设计过程中,可以通过查询特殊功能寄存器TCON、SCON中的中断请求标志位来判断中断请求来自哪个中断源。1)特殊功能寄存器TCON中的中断请求标志位图4.3TCON中的中断请求标志位SCON是串行口控制寄存器。它锁存串行口的发送中断标志和接收中断标志。SCON中的中断请求标志位如图4.4所示。图4.4SCON中的中断请求标志位2)特殊功能寄存器SCON中的中断请求标志位4.1.251系列单片机中断系统的控制51系列单片机中断系统的控制分成3个层次:总开关,分开关,优先级。这些控制功能主要是通过特殊功能寄存器IE、IP中相关位的软件设定来实现的。图4.251系列单片机的中断系统IE在片内RAM中的字节地址为A8H,位地址分别是A8H~AFH,如图4.5所示。IE控制CPU对中断源的开放或屏蔽,以及每个中断源是否允许中断。1.中断允许寄存器IE图4.5中断允许寄存器IE2.中断优先级寄存器IPIP在片内RAM中的字节地址为B8H,位地址分别是B8H~BFH,如图4.6所示。51系列单片机有两个中断优先级,可由软件设置IP中的相应位的状态来控制。图4.6中断优先级寄存器IP当系统复位时后,IP的低5位全部清零,即将所有的中断源设置为低优先级中断。(1)CPU同时接收到几个中断请求时,首先响应优先级最高的中断请求。(2)同一优先级的中断源同时向CPU请求中断时,CPU通过内部硬件查询,按自然优先级确定应该响应哪一个中断请求。自然优先级顺序由高至低为外中断0→定时中断0→外中断1→定时中断1→串行中断(3)正在进行的中断过程不能被新的同级或低优先级中断请求所中断。(4)正在进行的低优先级中断服务程序能被高优先级中断请求所中断。51系列单片机对中断优先级的控制原则为了实现以上优先原则,中断系统内部有两个对用户不透明的、不可寻址的“中断优先级状态触发器”。其一指示某高优先级中断正在得到服务,所有后来的中断都被阻断;其二用于指明已进入低优先级服务,所有同级的中断均被阻断,但不能阻断高优先级的中断。4.1.351系列单片机的中断处理过程中断处理过程可分为4个阶段:中断请求,中断查询和响应,中断处理,中断返回。外部中断的中断请求信号要分别从P3.2和P3.3两个引脚由片外输入。单片机片内的中断控制系统在每个机器周期对引脚信号进行采样,根据采样的结果来设置中断请求标志位的状态,中断请求完成后,中断请求标志位被置位。定时器中断和串行口中断的中断请求在单片机芯片内部自动完成,中断请求完成后,相应的中断请求标志位被直接置位。中断请求是由硬件完成的。1.中断请求2.中断查询和响应2)中断响应条件CPU要在以下3个条件同时具备的情况下才有可能响应中断:首先是中断源有中断请求;其次是CPU的中断允许位EA(IE.7)被置位,即开放中断;第三是相应的中断允许位被置位,即某个中断源允许中断。后两条可以通过编程来设置。1)中断查询由CPU测试TCON和SCON中的各标志位的状态,以确定有无中断请求以及是哪一个中断请求。在程序执行过程中,中断查询是在指令执行的每个机器周期中不停地重复进行的。由于上述原因而未能响应的中断请求必须等待CPU的下一次查询,即CPU对查询的结果不作记忆。查询过程在下一个机器周期重新进行。(1)当前CPU正在处理比申请源高级或与申请源同级的中断。(2)当前正在执行的那条指令没有执行完。(3)正在访问IE、IP中断控制寄存器或执行RETI指令。并且,只有在执行这些指令后至少再执行一条指令时才能接受中断请求。注意:尽管某个中断源通过编程设置处于被打开的状态,并满足中断响应的条件,但是若遇到下列情况之一,CPU仍不能响应此中断。4)中断响应时间中断响应是对中断源提出的中断请求的接受。在中断查询中,当查询到有效的中断请求时,紧接着进行中断响应。3)中断响应中断响应时间是指从中断响应有效(标志位置1)到转向其中断服务程序地址区的入口地址所需的时间。在一般情况下,中断响应时间至少要用3个机器周期,最多为8个机器周期。(1)定时器中断:在CPU响应中断后,由中断机构硬件自动撤销中断请求标志TF0和TF1。(2)脉冲触发的外部中断:脉冲信号过后就消失了,在响应中断后由中断机构硬件自动撤销中断请求标志IE0和IE1。(3)电平触发的外部中断:CPU响应中断后,必须立即撤除引脚上的低电平触发信号才能由硬件自动撤销中断请求标志IE0和IE1。(4)串行口中断:CPU响中断后,中断请求标志RI和TI不会被自动撤销,要用软件来撤销,这在编写串行中断服务程序时应加以注意。在CPU响应中断后,应撤销该中断请求,否则会引起再次中断。5)中断请求的撤销3.中断处理中断处理应根据具体要求编写中断服务程序。在编写中断服务程序时要注意两个问题:现场保护和现场恢复;关中断和开中断。4.中断返回在KeilC51语言中,中断服务程序是由中断函数来实现的,中断处理结束后会自动返回主程序。4.2外部中断本节将通过实例介绍如何使用外部中断源,如何使用C51语言编写外部中断服务程序,以及如何对外部中断源进行扩展。4.2.1外部中断源编程4.2.2外部中断源的扩展4.2.1外部中断源编程图4.7外部中断应用电路图【例4.1】基于图4.7,编程实现下列功能:用K1键控制D0~D5发光,用K2键控制D0~D5熄灭。按一次K1键,D0~D5发光;按一次K2键,D0~D5熄灭;再按一次K1键,D0~D5又发光,如此重复。从外部中断硬件接线图4.7来看,外部中断请求输入端为下降沿有效,即P3.2、P3.3未产生中断请求时,为高电平;有中断请求时,会产生一个低电平,从而使IE0=1或IE1=1,表示外部中断0或外部中断1向CPU申请中断。在外部中断0中断函数中设置相应的发光二极管发光,在外部中断1中断函数中设置相应的发光二极管熄灭。分析4.2.2外部中断源的扩展当系统有多个中断源时,可按照它们的轻重缓急进行中断优先级排队,将最高优先级别的中断源接在外部中断0上,其余中断源接在外部中断1及I/O口。当外部中断1有中断请求时,再通过查询I/O口的状态判断哪一个中断申请。外部中断源的扩展方法:(1)利用定时器/计数器扩展外部中断源。(2)采用中断和查询结合的方法扩展外部中断源。1.利用定时器/计数器扩展外部中断源如果将51系列单片机的两个计数器的初值均设为0xff,那么,当从引脚P3.4(T0)或P3.5(T1)输入一个脉冲时就可以使其引起计数器溢出中断。这样一来,计数器的功能就类似外部中断的脉冲触发方式,从而达到扩展外部中断源的目的。例如,可用后面的程序段来初始化定时器/计数器0,以便将其用作外部中断源。利用定时器/计数器扩展外部中断源受到51系列单片机资源的限制,当定时器/计数器被用作其他用途时,就无法再用于外部中断源的扩展。TMOD=0x06;//设置T/C0为计数器模式且与外部中//断0无关,计数初值自动重装TL0=0xff;//设置计数初值TH0=0xff;EA=1;//打开中断总开关ET0=1;//允许定时器/计数器0申请中断TR0=1;//启动定时器/计数器02.采用中断和查询结合的方法扩展外部中断源在PROTEUSISIS中绘制如图4.8所示的电路图。除了基本的时钟电路、复位电路外,在P1口高4位接有4个红色的发光二极管D1~D4;在外部中断0信号输入引脚P3.2上接有4个按键K1~K4,用来模拟4个外部中断。当CPU接收到来自外部中断0的中断请求信号后,就可以通过P1口的低4位查询到底是哪个中断源在申请中断。图4.8外部中断源的扩展【例4.2】基于图4.8,编程实现下列功能:用K1~K4分别单独控制D1~D4的发光与熄灭。例如,按一次K1键D1发光,再按一次K1键D1熄灭,同时要保证其他发光二极管的状态不变。要求:在中断函数中实现上述功能。【例4.3】基于图4.8,编程实现下列功能:用K1~K4分别单独控制D1~D4的发光与熄灭。例如,按一次K1键D1发光,再按一次K1键D1熄灭,同时要保证其他发光二极管的状态不变。要求:在主函数中实现上述功能。采用中断和查询结合的方法扩展外部中断源,虽然不受51系列单片机资源的限制,但由于查询需要时间,而这对于实时性要求较高的控制系统显然是不合适的。为此,可在电路中使用优先权解码芯片74148,或专用的可编程中断控制芯片如8259A等。4.3定时器/计数器中断4.3.1定时器/计数器的结构及工作原理4.3.2定时器/计数器的控制4.3.3定时器/计数器的工作方式及应用编程在单片机应用系统中,往往需要实现定时或延时控制、对外部事件计数的功

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

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

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

×
保存成功