mcs51单片机计数器工作方式0 定时时间的计算与编程举例
扫描二维码
随时随地手机看文章
定T0或T1无论用作定时器或计数器都有4种工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作状态。下面以T1为例,分述各种工作方式的特点和用法。
工作方式0:13位方式由TL1的低5位和TH1的8位构成13位计数器(TL1的高3位无效)。工作方式0的结构见下图:
图中,C/T为定时/计数选择:C/T=0,T1为定时器,定时信号为振荡周期12分频后的脉冲;C/T=l,T1为计数器,计数信号来自引脚T1的外部信号。
定时器T1能否启动工作,还受到了R1、GATE和引脚信号INT1的控制。由图中的逻辑电路可知,当GATE=0时,只要TR1=1就可打开控制门,使定时器工作;当GATE=1时,只有TR1=1且INT1=1,才可打开控制门。GATE,TR1,C/T的状态选择由定时器的控制寄存器TMOD,TCON中相应位状态确定,INT1则是外部引脚上的信号。
在一般的应用中,通常使GATE=0,从而由TRl的状态控制Tl的开闭:TRl=1,打开T1;TRl=0,关闭T1。在特殊的应用场合,例如利用定时器测量接于INT1引脚上的外部脉冲高电平的宽度时,可使GATE=1,TRl=1。当外部脉冲出现上升沿,亦即INT1由0变1电平时,启动T1定时,测量开始;一旦外部脉冲出现下降沿,亦即INT1由l变O时就关闭了T1。
定时器启动后,定时或计数脉冲加到TLl的低5位,从预先设置的初值(时间常数)开始不断增1。TL1计满后,向THl进位。当TL1和THl都计满之后,置位T1的定时器回零标志TFl,以此表明定时时间或计数次数已到,以供查询或在打开中断的条件下,可向CPU请求中断。如需进一步定时/计数,需用指令重置时间常数。
方式0是13位计数结构的工作方式,其计数器由TH0全部8位和TL0的低5位构成。当TL0的低5
位计数溢出时,向TH0进位,而全部13位计数溢出时,则向计数溢出标志位TF0进位。
在方式0下,当为计数工作方式时,计数值的范围是:1~8192(213)
当为定时工作方式时,定时时间的计算公式为:
(213-计数初值)×晶振周期×12或(213-计数初值)×机器周期
其时间单位与晶振周期或机器周期相同(ms)。
例题1:当某单片机系统的外接晶振频率为6MHz,该系统的最小定时时间为:
[213-(213-1)]×[1/(6×106)]×12=2×10-6=2(ms)
最大定时时间为:内容来自单片机之家www.dpj100.com
(213-0)×[1/(6×106)]×12=16384×10-6=16384(ms)
或:最小定时单位×1013=16384(ms)
例题2:设某单片机系统的外接晶振频率为6MHz,使用定时器1以方式0产生周期为500ms的等宽正方波连续脉冲,并由P1.0输出。
以查询方式完成。
⑴计算计数初值
欲产生500ms的等宽正方波脉冲,只需在P1.0端以250ms为周期交替输出高低电平即可实现,为此定时时间应为250ms。使用6MHz晶振,根据上例的计算,可知一个机器周期为2ms。方式0为13位计数结构。设待求的计数初值为X,则:
(213-X)×2×10-6=250×10-6
求解得:
X=213-(250÷2)=8067。
二进制数表示为1111110000011。十六进制表示,高8位为FCH,放入TH1,即TH1=FCH;低5位为03H。放入TL1,即TL1=03H。
⑵TMOD寄存器初始化
为把定时器/计数器1设定为方式0,则M1M0=00;为实现定时功能,应使C/T=0;为实现定时器/计数器1的运行控制,则GATE=0。定时器/计数器0不用,有关位设定为0。因此TMOD寄存器应初始化为00H。
⑶由定时器控制寄存器TCON中的TR1位控制定时的启动和停止TR1=1启动,TR1=0停止。
⑷程序设计:
MOV TMOD,#00H;设置T1为工作方式0
MOV TH1,#OFCH;设置计数初值
MOV TL1,#03H
MOV IE,#00H;禁止中断
LOOP:SETB TR1;启动定时
JBC TF1,LOOP1;查询计数溢出
AJMPLOOP
LOOP1:MOV TH1,#FCH;重新设置计数初值
MOV TL1,#03H
CLR TF1;计数溢出标志位清0
CPL P1.0;输出取反
AJMP LOOP;重复循环