51单片机定时器的使用及原理

51单片机有2个16位定时器/计数器:T0,T1。
定时器:没经过一个机器周期,寄存器加1。当寄存器装满的时候移除.

TH存放高8位,TL存放低8位;最高能计到65535(十进制),能计65536次。

如:晶振为11.05926MHz
一个机器周期(一个机器周期有12个时钟周期组成)的时间为 :
(1 / 11.05926)×12 ≈ 1.085 微秒
计满的时间为:1.085 × 65536 ≈ 71毫秒

定时器的控制寄存器

TCON地址为0x88

76543210
符号TF1TR1TF0TR0IE1IT1IE0IT0

0~3位用来控制外部中断。
TF:定时器溢出标志。溢出时该位自动置1。中断执行时硬件清0或软件清0
TR:定时器运行控制位。置1开始计时,清0停止计

定时器的工作模式寄存器

TMOD地址0x89

76543210
符号T1T1T1T1T0T0T0T0
GATEC/TM1M0GATEC/TM1M0

工作模式设置位M1,M0

00011011
模式0模式1模式2模式3

模式1:16位的计数器,定时器1初值存放寄存器TH1,TL1。定时器0初值存放寄存器TH0,TL0。
模式2:自动装载8位计数器。主要应用在串口波特率发生器。
GATE:门控位
C/T:计数模式/定时模式,为0则为定时模式。

使用定时器步骤
1、设置定时器工作模式寄存器TMOD
2、设置计数寄存器的初值
3、设置定时器控制寄存器TCON

代码示例(LED灯一秒闪烁):

#include<reg52.h>

#define uchar unsigned char

sbit LED1 = P1^0;

uchar counter = 0;

void main()
{
	TMOD = 0x10; //定时器 工作模式1
	TH1 = 0x4b;
	TL1 = 0xfe;//定时50ms
	TR1 = 1; //启动定时器
	while(1)
	{
		if(TF1 == 1)
		{
			TF1 = 0;
			TH1 = 0x4b;
			TL1 = 0xfe;//定时50ms
			counter ++;
		}
		if(counter == 20)	//1秒
		{
			counter = 0;
			LED1 = ~LED1;
		}	
	}
}
  • 38
    点赞
  • 198
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值