第六章定时器/计数器6.1 定时器的结构及工作原理6.2 定时器的控制6.3 定时器的工作模式及其应用第六章定时器/计数器实现定时一般有多种方法:1. 利用软件实现(延时程序)优点:简单,控制方便;缺点:CPU效率低。
2. 外部硬件实现:单稳态定时器、计数定时器优点:CPU效率高;缺点:修改参数麻烦。
3. 利用计数器实现输入脉冲定时器/计数器作用主要包括产生各种时标间隔、记录外部事件的数量等,是单片机中最常用、最基本的部件之一。
外来脉冲定时计数定时器/计数器功能示意图6.1 定时器/计数器的结构及工作原理6.1.1 定时器/计数器的基本结构MCS-51单片机有二个定时器/计数器,每个定时器/计数器由几个专用寄存器组成。
TMOD(89H )高四位TMOD(89H )低四位方式寄存器TCON(88H)TCON(88H)控制寄存器*8DH 8BH 8CH 8AH TH1 TL1TH0 TL0数据寄存器(16位)定时器T1定时器T0定时器/计数器的结构如下图所示。
定时器/计数器的基本结构框图申请P3.5or P3.4or 8DH 8BH8CH 8AH6.1.2 定时器/计数器的工作原理定时器/计数器结构原理图INTx P3.YGATE :门控制位:定时/计数控制位TC/x=0,1Y=2,3Z=4,5一. 对外部输入信号的计数功能当T0或T1设置为计数工作方式时,计数器对来自输入引脚P3.4(T0)和P3.5(T1)的外部信号计数。
若前一个机器周期采样值为1,后一个机器周期采样值为0,则计数器加1。
所以计数器计数的频率最高为fosc 的1/24。
BDEHT H >1个机器周期T L >1个机器周期L二. 定时功能:定时器/计数器的定时功能也是通过计数实现的,它的计数脉冲是由单片机的片内振荡器输出经12分频后产生的信号,即为对机器周期计数。
INTx P3.Y例如:晶振频率=12MHz 机器周期=1us ,计数1次=1us ,计数频为=1MHz 。
f=机器周期fmax=fosc/24计数频率f内部信号(片内振荡器)外部信号下降沿T0对应P3.4T1对应P3.5计数脉冲定时器计数器定时器/计数器的比较6.2 定时器的控制定时器/计数器的控制主要是通过以下几个寄存器实现的:TCON---定时器/计数器控制寄存器TMOD---定时器/计数器工作方式控制寄存器IE---中断允许控制寄存器6.2.1 定时器/计数器的工作方式寄存器TMOD定时器/计数器是一种可编程部件,在工作之前必须通过软件设定它的工作方式,即对工作方式寄存器TMOD 中每位进行设定。
T0TMOD 字节地址89HM0M1 C/ GATE M0 M1C/ GATE T T TMOD 不能位寻址。
上电复位时,TMOD 所有位均为零。
一、M1和M0工作方式控制位M0和M1为工作方式控制位,确定4种工作方式,如表7-1所示。
T0分成两个独立的8位计数器, T1在方式3时停止工作1 1自动重装入初值的8位计数器1 016位定时器/计数器0 113位定时器/计数器(TH 的8位和TL 的低5位) 0 0说明M1 M0二、定时器/计数器方式选择位1. =0 选择定时方式。
在定时方式中,以振荡输出时钟脉冲的12分频信号作为定时的计数信号,也就是每一个机器周期定时器加“1”,若晶振为12MHz ,则定时器的计数频率为1MHz 。
2. =1 选择计数功能。
在计数方式中,采用外部引脚T0(P3.4)、T1(P3.5)的输入脉冲作为计数脉冲,当外部输入脉冲发生1到0的负跳变时,计数器加1,最高计数频率为时钟频率的1/24。
T C/T C/T C/M0M1 C/ GATE M0 M1C/ GATE T0C/ =0 —定时;C/ =1 —对外计数。
定时:fosc/12 =1/(12/fosc)=1/T (机器周期)N 个方波T 计数:脉冲不等间隔波形等间隔,次数已定,时间确定, 即对机器周期进行计数。
左图定时时间为N*T每个下降沿计数一次确认一次负跳变需两个机器周期,所以,计数频率最高为fosc / 24。
T T三、GATE启动门控位1. GATE=0 时只要用软件使TR0(或TR1)置1就能启动定时器T0(或T1);2. GATE=1 时只有在INT0(或INT1)引脚为高电平的情况下,且由软件使TR0(或TR1)置1时,才能启动定时器T0(或T1)工作。
T0C/GATEM1M0M1C/GATEM0INTxP3.Yx=0,1Y=2,3Z=4,5对TMOD进行设置: MOV TMOD,#0CH MOV TMOD,#60H MOV TMOD,#6CH定时器/计数器工作方式寄存器TMOD的作用:1、设定定时器/计数器的工作方式;2、选定定时器/计数器是由片内信号作定时器计数或外部信号作计数器计数;3、设置定时器/计数器的启动方式。
6.2.2 定时器/计数器的控制寄存器TCON控制寄存器TCON的作用:1、通过设置TCON中的某些位来实现启动或停止定时器/计数器的运行(计数);2、当定时器/计数器计满溢出,或有外部中断请求时,TCON能标明溢出和中断情况。
控制寄存器TCON(88H)TF0TR1TR0TF1IT0IE0IT1IE18FH 8EH 8DH 8CH 8BH 8AH 89H 88HTF1:定时器T1溢出标志位当定时器T1溢出时,由硬件自动使TF1置1,并向CPU 申请中断。
CPU 响应中断后,由硬件自动对TF1清零。
TF1也可以用软件清零。
TR1:定时器T1运行控制位可由软件置1(或清零)来启动(或关闭)定时器T1,使定时器T1开始计数。
用指令:SETB TR1或CLR TR1 (置1或清0)IT0IE0IT1IE1TR0TF0TR1TF1控制寄存器TCON(88H)TF0:定时器T0溢出标志位。
其功能与TF1相同。
TR0:定时器T0运行控制位。
其功能与TR1相同。
IE1:外部中断1请求标志位。
IT1:外部中断1触发方式控制位。
IE0:外部中断0请求标志位。
IT0:外部中断0触发方式控制位。
IE1、IT1、IE0、IT0这4位已在第5章讲述。
可以对控制寄存器进行位寻址。
IT0IE0IT1IE1TR0TF0TR1TF1INTx P3.Y定时器/计数器结构原理图Z=4,56.3 定时器的工作模式及其应用6.3.1 工作模式0及应用M0=0, M1=0一、工作原理1、在方式0下,T0和T1工作在13位的定时/计数器方式,由TH的高8位和TL的低5位组成。
2、当T0的13位计数器加到全部为1以后,再加1就产生溢出,这时置TCON的TF0为1,同时把计数器全部变0,然后从0开始继续计数。
INTxP3.YTH0=0FFHTL0=1FHTF0=01111111111111+1TH0=00HTL0=00HTF0=1Z=4,5ORG 0000H 对于T0初值非零时LJMP MAINORG 000BHLJMP T0INTMAIN: SETB ET0SETB EASETB TR0LOOP: …………LJMP LOOPT0INT: CPL P1.0MOV TL0,#0CHMOV TH0,#0F0HRETI2、当= 0 时,工作方式为定时器,定时时间= (213 -T0初值)x12x 时钟周期定时范围:1工作周期~8192工作周期1、当= 1 时,工作方式为计数器,计数数值= (213-T0初值)计数值范围:1~8192(213 = 8192)TH0=0FFH TL0=01FH二、工作模式0时计数和定时范围TH0=00H TL0=00H加1溢出;加8192溢出。
T C/TC/如果单片机的晶振选为6.00MHz,则最长和最小定时时间分别为:最小定时时间((TH0)=0FFH,(TL0)=0FFH):[8192-(8192-1)]×1/6×10-6×12 = 2×10-6(s)= 2(us)最长定时时间((TH0)=00H,(TL0)=00H):(8192-0)×1/6×10-6×12 = 16384×10-6(s)= 16384(us)例:设定时器T0选择工作模式0,求最长定时时间,如果要实现定时时间为1ms,fosc=3MHz。
试确定T0的初值。
解:(1) 求最长定时时间当T0处于工作模式0时,加1计数器为13位。
T0最大定时时间对应于13位计数器T0的各位全为0,即:(TH0)=00H,(TL0)=00H。
最长定时时间为:Tmax=(213-0)x12x(10-6/3)= 32.768ms(2) 确定T0的初值定时时间=(213 -T0初值)x12x晶振周期则:T0初值=213-(1ms/4us)=8192-250=7942化成二进制用除2取余数法,得到的余数即为二进制数各位的数码,按余数的逆序排列。
转化成二进制为:1111100000110B按照低5位,高8位拆开:T0的低5位:TL0 = 00110B = 06HT0的高8位:TH0 = 11111000B = F8H例:利用定时器输出周期为2ms的方波, 输出为P1.0引脚。
设单片机晶振频率为3MHz。
解:2ms的方波是由间隔1ms的高低电平相间而成,因而只要每隔1ms对P1.0取反一次即可得到所需的方波。
因为:机器周期= 12÷3MHz = 4us所以,1ms内T0计数的次数:N=1ms÷4us=250由此可知: 使用方式0时的13位计数器即可。
1ms设计考虑:选用定时/计数器T0作定时器T0的初值:X=213 -250 = 7942转化成二进制:TH0=0F8H,TL0=06HTMOD初始化:TMOD=00000000B=00H(GATE=0,C/T=0,M1=0,M0=0)TCON初始化:启动TR0=1IE初始化:开放EA=1,定时器T0中断允许ET0=1程序清单如下:ORG 0000HAJMP STARTORG 000BHAJMP TOINTORG 0050H START: MOV SP, #60HMOV TH0, #0F8HMOV TL0, #06HMOV TMOD, #00HSETB TR0 ; 启动T0SETB ET0SETB EA MAIN:……AJMP MAIN TOINT: CPL P1.0MOV TL0, #06HMOV TH0, #0F8HRETIEND6.3.2工作模式1及应用M0=0,M1=1一、工作原理方式1和方式0的工作原理相同,唯一不同的是T0和T1工作在方式1时是16位的计数/定时器。
在方式1时,16位的初值分为高字节和低字节,分别送入TH和TL。