嵌入式技术学习——c51单片机——定时器

一、定时器

定时器是51单片机内部的资源,其电路连接和运转均在单片机内部完成。

定时器的作用:

(1)用于计时系统,可实现软件计时,或程序每隔一固定时间完成一项操作

(2)替代长时间的delay,提高cpu运行效率和处理速度。

定时器的个数:T0,T1,T2.(要注意不同的单片机用的定时器不同)

二。定时器的工作原理

1)定时器框图

1,定时器再单片机内部就像一个小闹钟一样,根据时钟的输出信号,每隔一秒,就单元的数值就增加当技术单元的数值增加到“设定的提醒时间”,计数单元会向中断系统发出中断请求。使程序跳转到终端服务函数中。

2)定时器T0/T1的工作模式:

模式0:13位定时器/计数器;

模式1:13位定时器/计数器;

模式2:13位定时器/计数器;

模式3:13位定时器/计数器;

(一)计数单元

 TH0高8位 和 TL0低8位:共存2的16次方-1的数据=65535

TF0:标志位:当TH0计时器溢出TCON置标志位。

(二)时钟

SYSCLK:系统时钟,即晶振周期,开发板上的晶振为12MHz

系统将12Mhz进行12分频,成1Mhz,成1微秒,

    给0就是定时器的功能,给1就是计时器的功能。

三。定时器相关寄存器

寄存器TMOD

 

四、应用定时器

	  #include "reg51.h"

void timer0Init(void)
{	
 	//TMOD |= (0x01<<0); //默认状态 TMOD 就是13位模式 
	TH0	 = 7192>>5;
	TL0	 = 7192&0x1F;
	IE   |= 0x01<<7 | 0x01<<1;
    TCON |= 0x01<<4; //开启定时器  
}

void timer0Handler(void) interrupt 1
{	 
     static int n = 0;//由于上面最多能计1ms,用一个别的变量,使其能计到自己的想要的计数
     n++;
	 if (n == 1000)
	// if (1)
	 {
     	P2 = ~P2;
		n = 0;
	 }

	TH0	 = 7192>>5;
	TL0	 = 7192&0x1F;//重新赋初值,再次从头计数
}


void main(void)
{
	 timer0Init();
	while(1)
	{

	}

}

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值