51单片机——定时计数器

*CPU时序:
振荡周期:为单片机提供定时信号的振荡源周期(如晶振周期或外加周期)。
状态周期:为两个振荡周期。用S表示(又称S周期或时钟周期)。
机器周期:为六个状态周期。
指令周期:完成一条指令所需要的全部时间,以机器周期为单位。
在51单片机中有两组定时计数器,与CPU相互独立。
工作原理是随机器内部的时钟或者外部脉冲信号对寄存器数据加1,当计数器加到全1时,再加1便会置0溢出,使相应终端位置1。(使用时,由溢出计时器的值减去计数初值才是加1计数器的计数值,ps:需输入的便是计数初值)。
*
相关结构图在文章结尾,请结合查看。

定时计数器由高八位THx和低八位TLx两个寄存器组成。
还有TMOD工作方式寄存器。
TCON控制寄存器,控制T0、T1的启动停止及设置溢出标志。

TMOD寄存器
{
*该寄存器用于控制定时计数器的工作方式。
前四位为T1方式,后四位为T0方式。(图一)
GATE是门控位:
GATE=0时,只需软件将TCON中的TR0/1为高电平,便可启动定时计数器。
GATE=1时,上述条件满足切同时外部中断引脚INT0/1为高电平,才可启动定时计数器。
C/T:
C/T=0为定时模式,C/T=1为计数模式。
M1和M0:
工作方式设置位,具体见图二。
主要使用方式1;方式2一般用于串口通信(精确性)。
*}
TCON寄存器(图一)
该寄存器高四位与控制定时计数器相关。(低四位控制外部中断)

*TF0/1:
T1/0溢出请求标志位,溢出置1,发送中断请求,CPU后自动清0,也可软件清0。
T1/0工作时,CPU可随时查询TF1/0状态(所以T1/0可用作查询测试的标志)。

TR1/0:
T1/0运行控制位,置1时,T1/0开始工作;置0时,停止工作。
*
定时计数器工作方式
以工作方式1为例(图三)
若GATE=0/1,经过(1处)翻转为1/0,再经过或门:为1时,便不受外部中断控制,进入与门,此时便由TR1/0控制;为0时,外部中断控制此处为1或0,再进入下一步,此时便由外部中断和TR1/0控制。
T1/0启动后,随振荡周期+1,低八位满便向高八位+1,满后溢出置1,TF1/0发送中断请求。
【计数个数与计数初值关系:X=2(16次方)-N】

定时器使用
初始化:
对TMOD赋值,确定T0/1工作方式。
计算初值,并写入。
中断方式,开启EA总中断,开放定时器中断。
使TR0/1置位,启动定时或计数。
以下为定时器T0使用方法

void Timer0Init()
{
TMOD =TMOD | 0x01  //或运算           
TR0 = 1;         //开始计时
ET0 = 1;             //打开定时器0中断
EA = 1;               //打开总中断
TH0 = 0xfc;
TL0 = 0xfc;        //设置初值,计算方法见文后
}
void main()
{
   Timer0Init();
   //neirong
}
void Time0 () interrupt  1
{
     //neirong
}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值