《单片机原理与应用设计》80C51单片机中断系统及定时器计数_第1页
《单片机原理与应用设计》80C51单片机中断系统及定时器计数_第2页
《单片机原理与应用设计》80C51单片机中断系统及定时器计数_第3页
《单片机原理与应用设计》80C51单片机中断系统及定时器计数_第4页
《单片机原理与应用设计》80C51单片机中断系统及定时器计数_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理与应用设计

(C51编程+Proteus仿真)《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第1页。第7章80C51单片机中断系统及定时器/计数器学习目标:(1)理解中断的基本概念;(2)理解80C51中断系统的结构和工作原理;(3)理解80C51定时/计数器的结构和工作原理;(4)掌握80C51中断的应用;(5)掌握80C51定时/计数器的应用。重点内容:(1)中断的概念;(2)80C51中断系统的使用方法及应用;(3)80C51定时/计数器的使用方法及应用。基本技能:(1)中断系统的程序设计;(2)定时/计数器的程序设计;(3)中断与定时/计数器在生产生活中的应用。模块应用:(1)中断功能模块适用于突发状况的处理;(2)定时/计数器功能模块适用于准确计数、精确定时,例如生产自动化、家用电器定时功能、串行通信波特率的产生等。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第2页。本章知识点:

80C51单片机的中断系统80C51单片机的中断处理过程80C51单片机中断应用程序举例

80C51的定时/计数器80C52的定时/计数器T2定时/计数器综合应用举例本章小结《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第3页。80C51单片机的中断系统

《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第4页。中断系统概述1、CPU为什么要引入中断?2、什么是中断?主程序A断点继续执行主程序响应中断请求返回主程序中断服务程序B《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第5页。中断系统概述1、中断响应过程:CPU处理中断事件的过程2、中断服务(中断处理):对中断的整个处理过程4、中断系统:为了实现中断功能而配置的软件和硬件3、中断源:产生中断的请求源4、中断请求(中断申请):中断源向CPU提出的处理请求5、中断返回:处理完中断事件后,再回到原来被中断的地方(即断点)《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第6页。中断系统概述中断技术不仅解决了快速CPU与慢速I/O设备之间的数据传输问题,也具备如下优点:分时操作。CPU与外设可并行工作,互不干扰。实时响应。CPU能够及时处理应用系统的随机事件,从而使系统的实时性大大增强。可靠性高。CPU具有处理设备故障及掉电等突发事件的能力,从而使系统可靠性提高。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第7页。中断系统概述中断与子程序调用的异同点:相同点:(1)两者都需要保护断点;(2)两者都可实现嵌套;不同点:(1)调用子程序过程发生的时间是已知和固定的,而中断过程发生的时间一般是随机的,也可以理解为调用子程序是设计者事先安排的,而执行中断服务程序是由系统工作环境随机决定的。(2)子程序完全为主程序服务,两者属于主从关系,而中断服务程序与主程序两者一般是无关的,不存在谁为谁服务的问题,两者是平行关系。(3)主程序调用子程序过程完全属于软件处理过程,不需要专门的硬件电路,而中断处理系统是一个软、硬件结合系统,需要专门的硬件电路才能完成中断处理的过程。(4)子程序嵌套可实现若干级,嵌套的最多级数由计算机内存开辟的堆栈大小限制,而中断嵌套级数主要由中断优先级数来决定,一般优先级数不会很大。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第8页。80C51中断系统的结构80C51的中断系统包含:5个中断源,2个中断优先级,增强型有6个中断源,2个中断优先级,可以实现二级中断服务的嵌套80C51的中断系统组成:中断请求标志位(在各中断的控制寄存器中进行设置)、中断允许寄存器IE、中断优先级寄存器IP以及内部硬件查询电路《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第9页。80C51的中断源

基本型80C51单片机的5个中断源分为三类:外部中断、定时器/计数器中断、串行口中断。外部中断定时器/计数器中断串行口中断

《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第10页。80C51的中断源

基本型80C51单片机的5个中断源分为三类:外部中断、定时器/计数器中断、串行口中断。外部中断定时器/计数器中断串行口中断

《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第11页。80C51的中断源

基本型80C51单片机的5个中断源分为三类:外部中断、定时器/计数器中断、串行口中断。外部中断定时器/计数器中断串行口中断串行口中断:(1)RXD(P3.0),串行口接收数据中断请求,中断请求标志为RI,当串行口完成一帧数据的接收时,向CPU申请中断。(2)TXD(P3.1),串行口发送数据中断请求,中断请求标志为TI,当串行口完成一帧数据的发送时,向CPU申请中断。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第12页。80C51的中断请求

在中断系统中,使用哪种中断和哪种触发方式,需要定时/计数器的控制寄存器TCON和串行口控制寄存器SCON的相应标志位来决定。TCON——定时计数器控制寄存器,地址88HSCON——串行口控制寄存器,地址98H《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第13页。

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

D7

D6D5D4D3D2D1D0TCON(88H)定时器Timer外部中断Interrupt

ITx—InterruptTrigger,外部中断触发方式控制位:外部中断有两种触发方式,通过设置IT0、IT1实现。(1)设置ITx=0时——电平触发方式,低电平有效。(2)设置ITx=1时——为边沿触发方式,下降沿有效。★IT0=1时,下降沿触发,CPU响应中断,硬件自动清IE0=0★IT0=0时,低电平触发,CPU响应中断不会自动清除IE0标志位,必须撤消INT0引脚上的低电平信号,即使INT0=1,才能使IE0=0。80C51的中断请求《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第14页。

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

D7

D6D5D4D3D2D1D0TCON(88H)定时器Timer外部中断InterruptTRx—TimerStart/Stop,定时/计数器启/停标志位:外部中断有两种触发方式,通过设置IT0、IT1实现。(1)TR0:用于定时计数器T0的启停。(2)TR1:用于定时器T1的启停。TFx—TimerFlowing,定时/计数器溢出中断请求标志位:(1)TF0:定时器T0溢出中断标志位;硬件置位TF0,向CPU发出中断请求,当CPU响应中断时,TF0由硬件自动清0(2)TF1:定时器T1溢出中断标志位;操作功能与TF0同80C51的中断请求《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第15页。(1)TI—串行口发送中断标志位,TransferInterruptCPU发送完一帧数据,硬件置位TI=1,响应中断,不能硬件自动清TI=0,必须用软件清0。(2)RI—串行口接收中断标志位,ReceiveInterruptCPU接收完一帧数据,硬件置位RI=1,要想连续接收帧数据,必须用软件清0。★单片机复位后,TCON和SCON的各位清0。★另外所有能产生中断的标志位均可以通过软件来置1或清0,和硬件置1或清0的效果相同。

TI

RI

D7

D6D5D4D3D2D1D0SCON(98H)80C51的中断请求《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第16页。80C51的中断控制

中断是可控制的,可以通过软件的设置来实现对中断功能的控制。IE——中断允许寄存器,用来实现对中断的开放或禁止,地址A8HIP——中断优先级寄存器,用于各个中断优先级的响应管理,地址B8HEAX

ET2ESET1EX1ET0EX0

D7

D6D5D4D3D2D1D0IE(A8H)INT0

T0INT1

T1

S总控位EA---EnableAmount,中断总允许位;EA=1,CPU开中断;EA=0,关中断,禁止所有中断X---统保留位,不可用,习惯对其写0。ET2---定时/计数器T2的溢出中断允许控制位。只应用于52以上的机型。ET2=0,禁止T2中断,ET2=1,允许T2中断。ES---EnableSerial,串行口中断允许位;ES=1,允许串行口中断;ES=0,禁止串行口中断。ETx---EnableTimer1,定时器T0/T1溢出中断允许位;ETx=1,允许T0/T1中断;ETx=0,禁止T0/T1中断。EXx---EnableeXternal,外部中断0/外部中断1中断允许位;EXx=1,允许外部中断0或外部中断1中断;EXx=0,禁止中断。

T2《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第17页。80C51的中断控制例7-1:假设CPU允许T0中断和外部中断0中断,禁止其他中断,请通过C51编程实现。举例

解:可以通过两种编程方式来实现:①用位操作指令编程如下:EA=1;ET0=1;EX0=1;②用字节操作指令编程如下:IE=0x83;《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第18页。80C51的中断控制

中断是可控制的,可以通过软件的设置来实现对中断功能的控制。IE——中断允许寄存器,用来实现对中断的开放或禁止,地址A8HIP——中断优先级寄存器,用于各个中断优先级的响应管理,地址B8HXX

PT2

PSPT1PX1PT0PX0

D7

D6D5D4D3D2D1D0IP(B8H)INT0

T0INT1

T1

S总控位中断优先级由IP控制(1,高级;0,低级)PX0---外中断0优先级

PT0---T0中断优先级PX1---外中断1优先级PT1---T1中断优先级PS---串口中断优先级PT2---T2中断优先级,仅适用于52子系列单片机。

T2《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第19页。80C51的中断控制

当统一优先级中的中断申请不止一个时,则存在中断优先权排队的问题。中断优先权的排队由中断系统硬件确定的自然优先级形成。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第20页。80C51的中断控制

中断嵌套——80C51单片机有两级中断优先级,可实现两级中断嵌套,只有在执行低级中断程序时,出现高级中断申请,才会有两级中断嵌套。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第21页。80C51的中断控制

中断原则(1)CPU同时接收到几个中断申请时,首先响应优先级别最高的中断请求;(2)正在进行的中断过程不能被新的同级或低优先级的中断请求所中断;(3)正在进行的低优先级中断服务,能被高优先级中断请求所中断。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第22页。80C51的中断控制例7-2:设(IP)=06H,如果5个中断同时产生,那么中断响应的次序是怎样的?举例

解:IP=00000110B对应PX1=1;定时/计数器0(T0)优先级设定位PT0=1;外部中断优先级设定位两个中断源为同级中断,在同级中断中按照自然优先级顺序T0>;在剩下的3个中断源、T1、PS中,按照低优先级中同级中断以自然优先级顺序为准,则>T1>PS;结果为T0>>>T1>PS。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第23页。80C51单片机的中断处理过程

《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第24页。中断响应的条件及时间

中断响应条件中断响应时间中断响应的基本条件中断源有中断请求中断源的中断允许位为1CPU开中断即EA=1

但是,如果处于下列情况之一时,CPU将不响应中断。(1)当有新的中断源提出中断请求时,若这个中断与系统正在处理的中断同级或是更低级,系统将不会终止正在处理的中断请求。(2)当前所查询的机器周期不是正执行指令的最后一个机器周期。

(3)正在执行的指令为RET、RETI(返回和中断返回)指令或任何访问IE或IP寄存器的指令。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第25页。中断响应的条件及时间

中断响应条件中断响应时间

从中断源提出中断申请,到CPU满足了中断响应条件而响应中断,需要经历一定的时间。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第26页。中断响应及中断处理过程

中断响应过程中断处理过程

中断响应的主要过程是由硬件自动生成一条长调用指令LCALLaddr16,这里addr16是程序存储器中相应中断服务程序的入口地址。(1)将相应中断源优先级状态触发器置1,阻止后续同级或低级中断请求;(2)执行LCALL指令,将程序计数器PC的内容压入堆栈保存,再将对应的中断服务程序的入口地址送入PC;

(3)执行中断服务程序。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第27页。中断响应及中断处理过程

中断响应过程中断处理过程

不同中断源的中断处理方法也是不一样的,但是所有中断处理的流程一般包含以下几个部分。(1)现场保护;(2)中断处理;

(3)现场恢复;

(4)中断返回。

在51单片机中,中断返回通过指令RETI来实现。★注意:不能用RET指令代替RETI指令,虽然RET指令也能控制PC返回到原来中断的地方,但RET指令没有清0中断优先级状态触发器的功能,而中断控制系统会认为中断仍在继续,造成与其同级的中断请求将不被响应。所有中断服务程序结束时必须使用RETI指令来执行。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第28页。外部中断触发方式的选择

边沿触发电平触发

如果连续采样两次,一个机器周期采样外部中断输入为高,下一个机器周期采样为低,则中断申请触发器置为“1”,直到CPU响应后才清0。这样不会丢失中断,但输入的负脉冲宽度至少要保持12个时钟周期(若晶振频率为12MHZ,则为1us),才能被采样到。边沿触发方式适合于以负脉冲形式输入的外部中断请求,如ADC0809的转换结束标志信号EOC为正脉冲,经反相后就可以作为80C51的

中断输入。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第29页。外部中断触发方式的选择

边沿触发电平触发

当外部中断源为电平触发方式时,在中断服务程序返回之前,外部中断申请必须无效(即为高电平),否则CPU在返回主程序后会再次响应中断。电平触发方式适合于外部中断输入以低电平输入且在中断服务程序中能清除外部中断请求源的情况。如并行接口芯片8255的中断请求引脚在接受读或写操作后即被复位,因此用它作为电平触发方式的中断较方便。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第30页。中断请求的撤销

CPU响应某中断请求后,在中断返回前,应该撤除该中断请求,否则会引起另一次中断。不同的中断源中断请求的撤除方法是不一样的。(1)定时器溢出中断请求的撤除(TF0或TF1)(2)串行口中断请求的撤除(TI和RI)(3)外部中断请求的撤除(IE0或IE1)《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第31页。80C51单片机中断应用程序举例

《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第32页。中断服务程序的编写

中断系统要正常运转,必须由相应的软件配合来完成。中断服务程序设计的任务中断服务程序设计的格式(1)设置中断允许寄存器IE,允许相应的中断请求源中断。(2)设置中断优先级寄存器IP,确定并分配所使用的中断源的优先级。(3)若是外部中断源,则要设置中断请求的触发方式IT0或IT1,决定采用电平触发方式还是边沿触发方式。(4)编写中断服务程序,处理中断请求。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第33页。中断服务程序的编写

中断服务程序设计的任务中断服务程序设计的格式voidmain(void){EA=1;//开中断EX0=1;//允许外部中断0中断IT0=1;//外部中断0边沿触发ET0=1;//允许定时/计数器T0中断……}voidex0_isr(void)interrupt0//外部中断0中断服务程序{……//外部中断0处理程序}voidT0_int(void)interrupt1//T0中断服务程序{……//T0处理程序}★注意:80C51单片机的中断是两级控制,在主程序中,要总中断允许,即令EA=1,然后还要相应的子中断允许;★在中断服务程序部分,要正确书写关键字interrupt和中断代码。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第34页。外部中断源应用举例

单外部中断源举例双外部中断源举例外部中断的工业应用举例例7-3:通过外部中断1控制流水灯的流向。分析:图7-7为采用Proteus仿真软件设计的仿真原理图,主芯片为AT89S52,通过按键AN2给引脚提供一个中断触发信号,P21作为流水灯的共阴极端,当P21=0时,LED点亮,UN2003芯片为反相驱动芯片。举例《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第35页。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第36页。voidmain(void)//主程序{P2=0x02;//使P21=1IE=0x84;//开放中断EA=1,EX1=1IT1=1;//中断申请为边沿触发方式while(1){if(Flag==0){ ScanCode=_crol_(ScanCode,1); P0=ScanCode; }//Flag=0时,流水灯从左往右点亮else{ ScanCode=_cror_(ScanCode,1); P0=ScanCode; }//Flag=1时,流水灯从右往左点亮

DelayMs(500);//每个灯点亮的时间间隔为500ms}}voidEx0()interrupt2//外部中断1中断服务程序{Flag=~Flag;}《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第37页。外部中断源应用举例

单外部中断源举例双外部中断源举例外部中断的工业应用举例例7-4:如图所示,编写程序实现:系统上电后,数码管显示“P”。按下S0键则数码管进行加计数,S1键则数码管进行减计数。计数值显示在数码管上。分析:图7-8为采用Proteus仿真软件设计的仿真原理图,其中S0键作为外部中断0输入,S1键作为外部中断1输入,系统连接4位一体的数码管,在第4个数码管上显示相应的数字,两个外部中断申请都采用边沿触发方式,单片机的P0作为段码信号输入端,P2口作为位选信号的输入端,ULN2003为反相驱动芯片。举例《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第38页。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第39页。voidmain(void){P2=0xfb;//选择第4位数码管显示P0=0x8c;//初始状态数码管显示‘P’IE=0x85;//选择双外部中断源、IT0=1;//外部中断0选择边沿触发方式IT1=1;//外部中断1选择边沿触发方式while(1){if(flag0){ if(sum>15) sum=0; P0=segcode[sum]; sum++;}//flag0=1时,数值加1,大于F时重新从0开始加1if(flag1){

if(sum==255)sum=15; P0=segcode[sum]; sum--;}//flag1=1时,数值减1,小于0时重新从F开始减1

DelayMs(500);//延时500ms}}voidEx0isr()interrupt0//外部中断0中断服务程序{if(!flag0)flag0=1;elseflag0=0;}voidEx1isr()interrupt2//外部中断1中断服务程序{if(!flag1)flag1=1;elseflag1=0;}《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第40页。外部中断源应用举例

单外部中断源举例双外部中断源举例外部中断的工业应用举例

举例《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第41页。#include<reg51.h>//包含51单片机寄存器定义的头文件sbitP10=P^0;sbitP11=P^1;sbitP12=P^2;sbitP13=P^3;voidint00();//温度1超限处理voidint01();//温度2超限处理voidint02();//压力超限处理voidint03();//酸碱度超限处理

voidmain(void)//主程序,开外部中断0{EA=1;EX0=1;while(1);}voidint0_int(void)interrupt0//中断服务程序{If(P10==1)int00();elseif(P11==1)int01();elseif(P12==1)int02();elseif(P13==1)int03();}《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第42页。80C51的定时/计数器

《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第43页。

单片机应用系统中的定时计数在单片机的应用系统中,常常会出现定时控制的需求,如定时输出、定时检测、定时调温、定时扫描等;也需要经常对外部的事件进行计数。80C51基本型单片机的内部集成了两个16位的可编程定时/计数器T0、T1。基本型:T0,定时、计数。T1,定时、计数、串口波特率发生器。

《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第44页。

单片机应用系统中常用的定时功能实现方法软件定时:让CPU循环执行一段程序,通过执行的指令和循环的次数,来实现软件定时硬件定时:采用时基电路定时,例如555定时器电路,外接必要的电子元器件,就可构成硬件定时电路采用可编程芯片来定时:这种定时芯片为可编程芯片,定时时间及范围很容易通过软件来确定和修改,功能强大,使用灵活★而80C51内部含有定时/计数器功能,可以通过对单片机编程来实现定时时间的修改和范围的控制。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第45页。定时/计数器的结构和工作原理

定时/计数器的结构定时/计数器的工作原理TH1、TL1TH0、TL0TCONTMOD《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第46页。定时/计数器的结构和工作原理

定时/计数器的结构定时/计数器的工作原理实质上是16位加1计数器

作为定时/计数器的加1计数器,输入的计数脉冲有两个来源,一个是由系统内部的时钟振荡器输出经12分频后送来的脉冲,一个是从T0和T1引脚输入的外部脉冲源。

定时器模式:对内部机器周期计数。定时时间=计数值*机器周期计数器模式:是对外部脉冲计数。脉冲由T0(P3.4)或T1(P3.5)引脚输入。

★注意:(若计数值为N,计数初值为X)“溢出事件”的计数值为65536~计数初值X。溢出信号使TF0或TF1置1,并发出中断请求,16位时有:X=65536-N《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第47页。定时/计数器的控制

工作方式寄存器TMOD控制寄存器TCON

定时/计数器T1定时/计数器T0《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第48页。定时/计数器的控制

工作方式寄存器TMOD控制寄存器TCON★注意:低4位与高4位各位功能相同,当单片机复位时,TMOD=00H。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第49页。定时/计数器的控制

工作方式寄存器TMOD控制寄存器TCONTR0(TCON.4):用于定时/计数器T0的运行控制。

TR1(TCON.6):用于定时/计数器T1的运行控制位,其功能与TR0同。TF0(TCON.5):定时/计数器T0溢出中断请求标志位。TF1(TCON.7):定时/计数器T1溢出中断请求标志位,其操作功能与TF0同。定时/计数器外部中断★注意:复位后TMOD、TCON各位均清零。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第50页。定时/计数器的工作方式

T0有4种工作方式,分别是方式0、1、2、3;T1有3种工作方式,分别是方式0、1、2。方式0:13位方式方式1:16位方式方式2:8位自动重装方式方式3:(仅T0有此方式,T1的方式3将停止计数)《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第51页。定时/计数器的工作方式方式0:13位方式,该方式的采用是为了与早期的单片机兼容,实际应用中不常使用。当工作方式寄存器TMOD中M1M0=00时,定时/计数器工作于方式0,按13位长度工作。分别由TL0的低5位(TL0的高3位未用)和TH0的8位构成。13位计数器——方式0《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第52页。定时/计数器的工作方式计数初值或定时常数的计算——方式0

举例例7-6:若计数个数为2,求计数初值。公式法计算:X=8192-2=8190=1FFEH求补法计算:对0000000000010B取反加1为:1111111111110B(1FFEH)★注意:方式0计数初值的高8位和低5位的确定比较麻烦,所以在实际应用中经常用16位的方式1来取代。T1在工作方式0的功能与T0同,只需将相关寄存器中T0的控制位换成T1的控制位即可。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第53页。定时/计数器的工作方式方式1:16位方式。当工作方式寄存器TMOD中M1M0=01时,定时/计数器工作于方式1,按16位长度工作。——方式1《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第54页。定时/计数器的工作方式计数初值或定时常数的计算——方式1

举例

《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第55页。定时/计数器的工作方式方式2:8位方式。当工作方式寄存器TMOD中M1M0=10时,定时/计数器工作于方式2,定时/计数器就变为可自动装载计数初值的8位计数器。该方式下,TL0被定义为计数器,TH0被定义为赋值寄存器。——方式2《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第56页。定时/计数器的工作方式计数初值或定时常数的计算——方式2

★注意:由于工作方式2时省去了用户软件重装初值的程序,所以比较适合用做较精确的脉冲信号发生器。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第57页。定时/计数器的工作方式方式3:8位方式。当工作方式寄存器TMOD中M1M0=11时,定时/计数器工作于方式3,内部控制逻辑将TL0和TH0配置成两个相互独立的8位计数器。方式3只适合于定时器T0,使其增加一个8位定时器。——方式3★注意:在单片机的串行通讯应用中,T1常作为串行口波特率发生器,且工作在方式2,这时将T0设置为方式3,可以使单片机的定时/计数器资源得到充分的利用。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第58页。最大定时时间的计算

在80C51单片机的中,CPU的工作频率一般有三种情况,分别是12MHz、6MHz、11.0592MHz,即机器周期分别为1us、2us、1.085us。而T0和T1主要有3种工作方式,当定时/计数器分别工作于这3种工作方式时,如何来计算每个定时/计数器的最大定时时间?《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第59页。最大定时时间的计算《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第60页。最大定时时间的计算举例例7-8:若当前单片机的工作频率为12MHz,需要定时/计数器0产生50ms定时,请确定工作方式和计数初值。解:分析:单片机的机器周期=12/工作时钟频率=1us方式0:13位定时器最大定时时间间隔为8.19ms方式1:16位定时器最大定时时间间隔为65.54ms方式2:8位定时器最大定时时间间隔为256us由于需要定时时间为50ms,所以必须选择方式1进行定时。设计数器初始值为x,定时时间为t,同时机器周期为1us,即:

《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第61页。80C52的定时/计数器T2

《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第62页。T2概述80C52单片机中增加了一个功能较强的16位的定时/计数器T2,它不仅可用于定时或外部事件的计数,而且还具有16位自动重装载和捕捉能力。T2在单片机中的中断入口矢量地址为002BH。与T2有关的外部引脚为P1.0,为外部计数脉冲输入端,P1.1为外部控制端T2EX。P1.0为计数输入(T2),还可输出脉冲;P1.1(T2EX)有捕获/重装方式触发和检测功能。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第63页。T2的相关控制寄存器

工作方式寄存器T2MOD控制寄存器T2CON数据寄存器TH2、TL2捕捉寄存器RCAP2H、RCAP2LT2MOD的字节地址为0C9H。

T2OE:输出允许位。当T2OE=1时,允许定时时钟从P1.0输出(仅对80C54/80C58有效)。DCEN:计数方向控制使能位,当DCEN=1时,计数方向与P1.1有关,P1.1=1,T2作为减1计数器,P1.1=0时,T2作为加1计数器。T2MOD的其他位为无效位,T2MOD的复位值为;XXXXXX00B。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第64页。T2的相关控制寄存器

工作方式寄存器T2MOD控制寄存器T2CON数据寄存器TH2、TL2捕捉寄存器RCAP2H、RCAP2L

《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第65页。T2的相关控制寄存器

工作方式寄存器T2MOD控制寄存器T2CON数据寄存器TH2、TL2:两个8位寄存器构成16位计数器,可供CPU以字节方式读写。捕捉寄存器RCAP2H、RCAP2L:用于捕捉计数器TH2、TL2的计数状态或预置计数初值。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第66页。T2的工作方式

捕捉方式自动重装载方式波特率发生器方式可编程时钟输出方式《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第67页。T2的工作方式

——捕捉方式★注意:当fosc=12MHz时,n=12;fosc=6MHz时,n=6。★当EXEN2=0时,为普通的定时/计数方式★当EXEN2=1时,为捕捉方式★计数溢出和外部触发信号均能引起中断;但只有外部触发信号可引起捕捉动作。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第68页。T2的工作方式

——自动重装载方式★当DCEN=0时,(采用默认的加计数)的计数和触发重装。★当DCEN=1时,(计数方向可选)的计数重装。★EXEN2=1时,加计数溢出和外部触发信号均能引起重装和中断。★DCEN=1时,外部引脚用作方向控制,外部信号不再用来触发中断。T2CON为0x04时,当fosc=12MHz时,重装定时时间可达65ms(T0与T1仅为250us)《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第69页。T2的工作方式

当RCLK=1和TCLK=1时,T2用作波特率发生器。波特率=T2溢出率/16。——波特率发生器方式★T2波特率发生器方式,16位常数值是由RCAP2L和RCAP2H自动装入的。★波特率=振荡频率/{32x[65536-(RCAP2H、RCAP2L)]}。★T2用作波特率发生器时,在晶振频率为11.0592MHz时,如果要求的波特率为9600,则T2的初值为FFDCH,T2CON可以设为0x30。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第70页。T2的工作方式

——可编程时钟输出方式★当作时钟输出时,TH2的溢出不会产生中断,这种情况与波特率发生器方式类似。定时器T2用作时钟发生器,同时也可以作为波特率发生器使用,只是波特率和时钟频率不能分别设定(因为二者都使用RCAP2H和RCAP2L)。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第71页。T2的工作方式举例例7-9:使用定时/计数器T2通过C51程序实现1s的精确定时,设晶振为12MHz。分析:要实现1s的定时,可以先定时50ms,在中断20次,程序如下:sbitled=P0^0;voidTimer2()interrupt5//调用定时器2,自动重装载模式{staticuchari=0;//定义静态变量iTF2=0;//定时器2的中断标志要软件清0i++;//计数标志自动加1if(i==20)//判断是否到1s{i=0;//将静态变量清0Led=~led;//led位求反}}voidmain(){EA=1;//开总中断ET2=1;//开定时器2中断TR2=1;//开启定时器2,并设置为自动重装载模式RCAP2H=(65536-50000)/256;//重装载计数器赋初值RCAP2L=(65536-50000)%256;While(1);}《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第72页。定时/计数器的综合应用举例

《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第73页。定时/计数器的初始化步骤根据要求选择工作方式,确定T0、T1的方式控制字,写入方式控制寄存器TMOD;根据要求计算定时/计数器的计数初值,并将其写入初值寄存器TH0、TL0或TH1、TL1;根据需要开放定时/计数器中断,即对IE赋值,后面需编写中断服务程序;设置定时/计数器控制寄存器TCON的值,启动定时/计数器开始工作,即使TR0、TR1置位;等待定时/计数器时间到,到则执行中断服务程序。如用查询处理则编写查询程序判断溢出标志,溢出标志等于1,则进行相应处理。《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第74页。计数器应用举例例7-10:利用仿真软件Proteus和Keil联合仿真实现定时/计数器的计数功能。计数脉冲由T0(P3.4)管脚输入,由虚拟信号发生器SIGNALGENERATOR提供,当计满12个脉冲后P1.0引脚输出一个低电平(即LED灯亮,开机时P1.0引脚为高电平),延时50ms后P1.0引脚恢复为高电平。分析:用T0完成计数,从P1.0管脚输出控制信号,电路仿真如图7-20所示。举例《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第75页。计数器应用举例举例

voidmain(){TMOD=0x06;//8位重装方式,T0计数TH0=0xf4;//初值赋值TL0=0xf4;outpin=1;TR0=1;//启动计数for(;;){for(;;){if(TF0){TF0=0;break;}outpin=0;delay();outpin=1;}}}《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第76页。计数器应用举例例7-11:有一包装流水线,产品每计数12瓶时发出一个包装控制信号,包装流水线示意图如图7-21所示。试编写程序完成这一计数任务,用T0完成计数,用P1.0发出控制信号。分析:采用Proteus仿真电路图来模拟该包装流水线的包装过程,系统上电后,数码管显示“P”,采用T0连接按键中断,按键按下一次,代表检测到1瓶产品,当计数满12时,从P1.0管脚输出一个包装信号,同时数码管显示的数值加1,模拟仿真电路如图7-22所示。举例《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第77页。计数器应用举例

voiddelayms(uintn)//工作频率12MHz,延时1ms程序{ucharj;while(n--){for(j=0;j<123;j++);}}voidmain(void){TMOD=0x06;//8位重装方式,T0计数TH0=0xf4;TL0=0xf4;P2=0xfb;P0=0x8c;IE=0x82;//开放中断TR0=1;//启动计数while(1) 《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第78页。计数器应用举例{ if(flag==1) { flag=0; P10=0; P0=segcode[counter]; delayms(20); P10=1; }}}voidc0isr()interrupt1//T0中断子程序{flag=1;counter++;if(counter==13)counter=0;}

《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第79页。定时器应用举例定时时间较小时(使用12MHz的晶振时,小于65ms)例7-12:利用定时/计数器T0的方式1,产生10ms的定时,并使P2.7引脚上输出周期为20ms的方波,采用中断方式,设系统的晶振频率为12MHz。分析:80C51单片机内部定时/计数器T0产生周期为20ms的方波,采用虚拟示波器检测P2.7引脚输出的波形,仿真原理图7-23所示。举例《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第80页。定时器应用举例

…… sbitP27=P2^7;voidmain(void){TMOD=0x01;TL0=0xF0;TH0=0xD8;IE=0x82;TR0=1;while(1); }voidT0Isr()interrupt1{P27=~P27;TL0=0xF0;TH0=0xD8;}《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第81页。定时器应用举例定时时间较大时(使用12MHz的晶振时,大于65ms)例7-13:利用定时/计数器T0使P2.7引脚上输出周期为1s的方波,设系统的晶振频率为12MHz。实现方法:一是采用1个定时器定时一定的间隔(如20ms),然后用软件进行计数;二是采用2个定时器级联,其中一个定时器用来产生周期信号(如20ms为周期),然后将该信号送入另一个定时/计数器的外部脉冲输入端进行脉冲计数。分析:输出波形的周期是1s,即定时时间为500ms,仿真原理图与图7-23同,仿真波形如图7-24所示。举例《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第82页。定时器应用举例

……sbitP27=P2^7;voidmain(void){TMOD=0x01; TL0=0xE0;TH0=0xB1;IE=0x82;TR0=1;while(1); }voidT0Isr()interrupt1{staticucharCounter;Counter++;if(Counter==25){P27=~P27;Counter=0; } TL0=0xE0;TH0=0xB1;}《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第83页。定时器应用举例

……sbitP27=P2^7;sbitP35=P3^5;voidmain(void){TMOD=0x61;TH0=0xb1;TL0=0xe0;TH1=0xe7;TL1=0xe7;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;while(1);}voidT0Isr()interrupt1{P35=!P35;TL0=0xe0;TH0=0xb1;}voidC1Isr()interrupt3{P27=!P27;}《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第84页。定时器应用举例不规则波形输出例7-14:利用定时/计数器T0从P2.7输出周期为1s,脉宽为20ms的正脉冲信号,设系统的晶振频率为12MHz,试设计程序。分析:输出波形的周期是1s,其中包含20ms的正脉冲信号,仿真原理图与图7-23同,仿真波形如图7-25所示。举例《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第85页。定时器应用举例

……ucharx;sbitP27=P2^7;voidInitTimer0(void)

{TMOD=0x01;//T0定时.

TH0=(65536-20000)/256;//0xB1;

TL0=(65536-20000)%256;//0xE0;

EA=1;

ET0=1;

TR0=1;

}Voidmain(void)

{InitTimer0();x=0;while(1);}《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第86页。定时器应用举例voidTimer0Interrupt(void)interrupt1

{

TH0=(65536-20000)/256;

TL0=(65536-20000)%256;

x++;//每20ms加一次一

if(x>=50)x=0;//加到50,就归0

if(x==0)P27=1;//在x=0的20ms,输出1

elseP27=0;//在其他时间,输出0

}《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第87页。定时器应用举例单定时器产生多个定时时间间隔

利用一个定时器,也可以采用软件计数的方法产生多个定时时间间隔,这样可以有效地利用定时/计数器资源,同时可以方便地完成时间触发的多任务调度。例7-15:设80C51单片机的时钟频率是12MHZ,用定时/计数器T0控制P1.0、P1.1端的两个LED灯D1、D2按不同的周期显示,其中D1闪烁周期为200ms,D2闪烁周期为800ms。分析:通过定时/计数器T0产生两个定时时间间隔,D1的闪烁周期为200ms,即定时时间间隔为100ms,分别是,D2闪烁周期为800ms,即定时时间间隔为400ms,仿真原理图及波形如图7-26所示。先采用定时器定时25ms,然后再通过软件分别计数4次、16次的方法来达到D1、D2的定时时间间隔。举例《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第88页。定时器应用举例

…… sbitD1=P1^0; sbitD2=P1^1; ucharcnt1; ucharcnt2;voidmain(void){TMOD=0x01;//将T0初始化TL0=(65536-25000)%256;TH0=(65536-25000)/256;IE=0x82;TR0=1;while(1); }《单片机原理与应用设计》80C51单片机中断系统及定时器计数全文共97页,当前为第89页。定时器应用举例voidT0Isr()interrupt1{cnt1++; cnt2++; if(cnt1==4)//若累计满4次,即计时满100ms { D1=~D1;//按位取反操作,将P1.0引脚输出电平取反 cnt1=0;//将cnt1清0,重新从0开始计数 } if(cnt2==16)//若累计满

温馨提示

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

评论

0/150

提交评论