您现在的位置: 主页 > 嵌入式开发入门到精通 > 单片机技术进阶 > mcs51单片机计数器工作方式0 定时时间的计算与编程举例 -
本文所属标签:
为本文创立个标签吧:

mcs51单片机计数器工作方式0 定时时间的计算与编程举例 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

[导读]定T0或T1无论用作定时器或计数器都有4种工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作状态。下面以T1为例,分述各种工作方式的特点和用法。工作方式0:13位方式由TL1的低5位和TH1的8位构

定T0或T1无论用作定时器或计数器都有4种工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作状态。下面以T1为例,分述各种工作方式的特点和用法。

本文引用地址: http://www.21ic.com/app/mcu/201807/780070.htm

工作方式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;重复循环




              查看评论 回复



嵌入式交流网主页 > 嵌入式开发入门到精通 > 单片机技术进阶 > mcs51单片机计数器工作方式0 定时时间的计算与编程举例 -
 

"mcs51单片机计数器工作方式0 定时时间的计算与编程举例 -"的相关文章

网站地图

围观()