您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 单片机 第4章 定时计数器与中断系统
第5章定时/计数器与中断系统5.1定时/计数器结构特点及控制5.2中断系统结构及管理5.3定时/计数器及中断系统综合应5.1定时/计数器结构特点及控制5.1.1定时/计数器结构5.1.2定时/计数器工作方式5.1.3定时/计数器控制寄存器5.1.4定时/计数器常数的计算返回本章首页5.1.1定时/计数器结构定时/计数器简称定时器,8031单片机有2个16位的定时/计数器:定时器0(T0)和定时器1(T1)。它们都有定时器或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成。作计数器时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。计数的最高频率一般为振荡频率的1/24。返回本节5.1.2定时/计数器工作方式每个定时/计数器还有4种工作模式,也就是每个定时器可构成4种电路结构模式。在模式0、1和2,T0和T1的工作模式相同,在模式3,两个定时器的模式不同。下面以T1为例,分述各种工作模式的特点和用法。1.模式0图5-1定时/计数器T1(T0)工作模式02.模式1图5-2定时/计数器T1(T0)工作模式13.模式2图5-3定时/计数器T1(T0)工作模式24.模式3图5-4定时/计数器T1(T0)工作模式3返回本节5.1.3定时/计数器控制寄存器定时器共有2个控制寄存器TMOD和TCON,由软件写入TMOD和TCON两个8位寄存器,设置各个定时器的操作模式和控制功能。1.工作模式控制寄存器—TMOD(89H)GATEC/TM10MGATEC/T1M0M控制T1控制T089H和T类同01M0M00011011方式方式0方式1方式2方式301定时器模式计数器模式01与INT无关00与INT有关图5-5定时器工作模式寄存器TMOD2.定时器控制寄存器—TCON(88H)TCON位地址0DD1D2D3D4D5D6D7IT0IE0IT11IETR0TF0TR1TF188898A8B8C8D8E8F见下一节{00:停T计数01:启T计数00:无T中断(硬件复位){1:有T溢出中断00:无T中断(硬件复位)10:停T计数{1:有T溢出中断1:启T计数{111图5-6定时器工作模式寄存器TCON返回本节5.1.4定时/计数器常数的计算1.计数器初值的计算把计数器计满为零所需要的计数值设定为C,计数初值设定为TC,由此可得到公式:TC=M-C式中,M为计数器模值,该值和计数器工作方式有关。在方式0时M为213;在方式1时M为216;在方式2和方式3时M为28。2.定时器初值的计算在定时器模式下,计数器由单片机主脉冲经12分频后计数。因此,定时器定时时间T的公式:T=(M-TC)T计数上式也可写成:TC=M-T/T计数式中,M为模值,和定时器的工作方式有关;T计数是单片机振荡周期TCLK的12倍;TC为定时器的定时初值。返回本节5.2中断系统结构及管理5.2.1中断请求与控制5.2.2中断系统的结构5.2.3中断控制5.2.4中断响应过程返回本章首页5.2.1中断请求与控制图5-7中断流程返回本节5.2.2中断系统的结构1.外部中断源由P3.2端口线引入int0,低电平或下降沿引起。由P3.3端口线引入int1,低电平或下降沿引起。2.内部中断源(如图5-8所示)T0:定时/计数器0中断,由T0回零溢出引起。T1:定时/计数器1中断,由T1回零溢出引起。TI/RI:串行I/O中断,完成一帧字符发送/接收引起。图5-8中断系统的结构框图返回本节5.2.3中断控制1.中断允许寄存器IE(A8H)IE在特殊功能寄存器中,字节地址A8H,位地址分别是A8H~AFH。IE控制CPU对中断源总的开放或禁止以及每个中断源是否允许中断。其格式如图5-9所示。2.中断优先寄存器IP(B8H)IP在特殊功能寄存器中,字节地址为B8H,位地址分别是B8H~BFH,IP用来锁存各中断源优先级的控制位,其格式如图5-10所示。0:关INT中断01:开INT中断00:关T中断1:开T中断001:开T中断0:关T中断0:关INT中断1:开INT中断11110:关T中断1:开T中断221:开所有中断0:关所有中断1:开串行口中断0:关串行口中断位地址IEEAAFADETACESABETAAEXA9ETA8EX00112图5-9中断允许寄存器IE图5-10中断优先寄存器IP返回本节例5-1若允许片内2个定时器/计数器中断,禁止其它中断源的中断请求。编写设置IE的相应程序段(1)用位操作指令来编写如下程序段:CLRES;禁止串行口中断CLREX1;禁止外部中断1中断CLREX0;禁止外部中断0中断SETBET0;允许定时器/计数器T0中断SETBET1;允许定时器/计数器T1中断SETBEA;CPU开中断(2)用字节操作指令来编写:MOVIE,#8AH或者用:MOV0A8H,#8AH;A8H为IE寄存器字节地址5.2.4中断响应过程单片机在每个机器周期的S5P2期间,顺序采样每个中断源,CPU在下一个机器周期S6期间按优先级顺序查询中断标志,如查询到某个中断标志为1,将在再下一个机器周期S1期间按优先级进行中断处理。首先由硬件自动生成一条长调用指令:LCALLaddr16。接着就由CPU执行该指令,将PC的内容压入堆栈以保护断点,再将中断入口地址装入PC,使程序转向中断矢量地址单元中去执行相应的中断服务程序。各中断源服务程序的入口地址是固定的,如下所示:中断源入口地址外部中断00003H定时器/计数器T0000BH外部中断10013H定时器/计数器T1001BH串行口中断0023H下列任何一种情况存在中断申请将被封锁:(1)CPU正在执行一个同级或高一级的中断服务程序。(2)当前正在执行的那条指令还未执行完。(3)当前正在执行的指令是RETI或对IE,IP寄存器进行读/写指令,执行这些指令后至少再执行一条指令才会响应中断。返回本节5.2.5外部中断的响应时间外部中断的最短的响应时间为3个机器周期:(1)中断请求标志位查询占1个机器周期。(2)子程序调用指令LCALL转到相应的中断服务程序入口,需2个机器周期。外部中断响应的最长时间为8个机器周期:发生在CPU进行中断标志查询时,刚好是开始执行RETI或是访问IE或IP的指令,则需把当前指令执行完再继续执行一条指令后,才能响应中断,最长需2个机器周期。接着再执行一条指令,按最长指令(乘法指令MUL和除法指令DIV)来算,也只有4个机器周期。加上硬件子程序调用指令LCALL的执行,需要2个机器周期。所以,外部中断响应最长时间为8个机器周期。如果已在处理同级或更高级中断,响应时间无法计算。在一个单一中断的系统里,MCS-51单片机对外部中断请求的响应的时间总是在3~8个机器周期之间。5.2.6外部中断的触发方式选择电平触发方式和跳沿触发(边沿触发)方式TCON寄存器里的IT0,IT1分别控制外部0,外部1中断的触发方式;当IT0(1)=0电平触发,1为边沿触发。1.电平触发方式CPU在每个机器周期采样到的外部中断输入线的电平。在中断服务程序返回之前,外部中断请求输入必须无效(即变为高电平),否则CPU返回主程序后会再次响应中断。适于外中断以低电平输入且中断服务程序能清除外部中断请求(即外部中断输入电平又变为高电平)的情况。2.跳沿触发方式连续两次采样,一个机器周期采样到外部中断输入为高,下一个机器周期采样为低,则置“1”中断请求标志,直到CPU响应此中断时,该标志才清0。这样不会丢失中断,但输入的负脉冲宽度至少保持1个机器周期。5.2.7中断服务程序的设计一、中断服务程序设计的任务基本任务:(1)设置中断允许控制寄存器IE。(2)设置中断优先级寄存器IP。(3)对外中断源,是采用电平触发还是跳沿触发。(4)编写中断服务程序,处理中断请求。前3条一般放在主程序的初始化程序段中。二、采用中断时的主程序结构常用的主程序结构如下:ORG0000HLJMPMAINORG中断入口地址LJMPINT⋮ORGXXXXHMAIN:主程序INT:中断服务程序三、中断服务程序的流程5.2.8多外部中断源系统设计实际系统中,两个外部中断请求源往往不够用1。定时器/计数器作为外部中断源的使用方法定时器/计数器选为计数器工作模式,T0(或T1)引脚上发生负跳变时,T0(或T1)计数器加1,利用这个特性,可以把T0(或T1)引脚作为外部中断请求输入引脚,而定时器/计数器的溢出中断TF0(或TF1)作为外部中断请求标志。ORG0000HAJMPIINI;跳到初始化程序………………IINI:MOVTMOD,#06H;设置T0的工作方式MOVTL0,#0FFH;设置计数器初值MOVTH0,#0FFHSETBTR0;启动T0,开始计数SETBET0;允许T0中断SETBEA;CPU开中断当连接在P3.4(T0引脚)的电平发生负跳变时,TL0加1,产生溢出,置“1”TF0,向CPU发出中断请求,同时TH0的内容0FFH送TL0,即TL0恢复初值0FFH。2.中断和查询结合的方法最高级别中断请求源IR0接INT0*输入端,其余的外部中断请求源IR1~IR4用“线或”的办法连到MCS-51的另一个外中断源输入端,同时还连到P1口。5个外部中断源的排队顺序依此为:IR0~IR4。ORG0013H;INT1的中断入口LJMPINT1;┇INT1:PUSHPSW;保护现场PUSHACCJBP1.0,IR1;P1.0高,IR1有请求JBP1.1,IR2;P1.1高,IR2有请求JBP1.2,IR3;P1.2高,IR3有请求JBP1.3,IR4;P1.3高,IR4有请求INTIR:POPACC;恢复现场POPPSWRETI;中断返回IR1:IR1的中断处理程序AJMPINTIR;IR2:IR2的中断处理程序AJMPINTIR;IR3:IR3的中断处理程序AJMPINTIR;IR4:IR4的中断处理程序AJMPINTIR;5.3定时/计数器及中断系统综合应用【例5.2】设MCS-51单片机系统时钟频率ФCLK为6MHZ,请编出利用定时/计数器T0在P1.0引脚上产生周期为2秒,占空比为50%的方波信号的程序(1)主程序任务:1)T0工作方式的设定:选择方式1(16位方式)(最大定时131ms)2)定时常数的设定:TC=216-100ms/2μs=15536=3CB0H返回本章首页即:TH0应装3CH,TL0应装B0H。3)中断管理:允许T0中断,开放总中断即:IE应装10000010B。4)启动定时器T0:SETBTR05)设置软件计数器初值:(如使用R7)即R7应装0AH6)动态停机:SJMP$主程序如下:MAIN:MOVTMOD,#01H;设定T0为方式1MOVTH0,#3CH;装入定时常数高8位MOVTL0,#0B0H;装入定时常数低8位MOVIE,#82H;开放T0中断SETBTR0;启动T0MOVR7,#0AH;设置软件计数器SJMP$(2)中断服务程序任务:1)恢复T0常数;2)软件计数器减1;3)判断软件计数器是否为0。为0时,改变P1.0状态,并恢复软件计数器初值;不为0时中断返回。程序如下:TOINT:MOVTL0,#0B0H;恢复定时常数MOVTH0,#3CH;DJNZR7,NEXTCPLP1.0MOVR7,#0AHNEXT:RETI完整程序如下:ORG0000HAJMPMAINORG000BHAJMPTOINTORG0030HMAIN:MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HMOVIE,#82HSETBTR0MOVR7,#0AHSJMP$TOINT:MOVTL0,#0B0HMOVTH0,#3CHDJNZR7,NEXTCPLP1.0MOVR7,#0AHNEXT:RETIEND返回本节THANKYOUVERYMUC
本文标题:单片机 第4章 定时计数器与中断系统
链接地址:https://www.777doc.com/doc-3370805 .html