51单片机-定时器

文章介绍了C51单片机中的定时器和计数器的工作原理,它们如何通过配置寄存器在硬件层面实现定时或计数功能。定时器基于内部晶振计数,而计数器则对外部信号进行计数。文章还详细解释了晶振、时钟周期和机器周期的概念,并提供了一个通过定时器控制LED亮灭的实验代码示例。
摘要由CSDN通过智能技术生成

1、定时器简介

        C51中的定时器和计数器是同一个硬件电路支持的,通过寄存器配置不同,就可以将他当做定时器或者计数器使用。 确切的说,定时器和计数器区别是致使他们背后的计数存储器加1的信号不同。当配置为定时器使用时,每经过1个机器周期,计数存储器的值就加1。而当配置为计数器时,每来一个负跳变信号 (信号从P3.4 或者P3.5引脚输入),就加1,以此达到计数的目的。 标准C51有2个定时器/计数器:T0和T1。他们的使用方法一致。C52相比C51多了一个T2。

①定时器和计数器,电路一样

②定时或者计数的本质就是让单片机某个部件数数

③当定时器用的时候,靠内部震荡电路数数

④当计数器用的时候,数外面的信号,读取针脚的数据

2、定时器怎么定时

定时器的本质原理: 每经过一个机器周期,就加1 寄存器

思考:

什么是晶振                                                                                                                                         晶振(晶体震荡器),又称数字电路的“心脏”,是各种电子产品里面必不可少的频率元器件。数字电路的所有工作都离不开时钟,晶振的好坏、晶振电路设计的好坏,会影响到整个系统的稳定性。

什么是时钟周期                                                                                                                                      时钟周期也称为振荡周期,定义为时钟频率的倒数。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟周期是一个时间的量。更小的时钟周期就意味着更高的工作频率

什么是机器周期                                                                                                                                      机器周期也称为CPU周期。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶 段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作所需要的时间称为 机器周期。一般情况下,一个机器周期由若干个时钟周期组成

——加一经过了多长时间

当晶振频率是11.0592MHz的时候,等于11059.2KHz = 11059200Hz

跳一次就等于一个机器周期,一个机器周期等于12个时钟周期

一个时钟周期等于晶振频率的倒数:1/11059200 秒

机器周期 = 12 x 时钟周期 =12 x (1/时钟频率) 秒 = 12 / 时钟频率 秒 = 12 / 11059200 秒 = 12 000 000 / 11059200 微秒 = 1.085 微秒 

3、相关寄存器

4、关于TCON

5、配寄存器推荐用按位操作

①清零的时候,对应的需要清零的位与上0,不需要清零的位与上1

②置1的时候,需要置1的位置或1,不需要置一的位置或0

6、实验操作

通过定时器控制LED亮灭

代码如下:

#include "reg52.h"

sbit LED = P3^6;

void main()
{
	int cnt = 0; //定义变量,记录爆表次数
	LED = 1;
	//1、配置定时器0工作模式16位计时
	TMOD = 0x01;
	//2、给初值,定一个10ms
	TL0 = 0x00;
	TH0 = 0xDC;
	//3、开始计时
	TR0 = 1;
	//4、爆表,操作led,累计到1s,再操作led
	//爆表,变量加1,加100次也就是1s,每隔1s转换led状态
	while(1){
		if(TF0 == 1)//爆表时,硬件修改TF0为1
		{
			TF0 = 0;//不用中断,必须软件清零
			cnt++;
			//重新给初值
			TL0 = 0x00;
			TH0 = 0xDC;
			if(cnt == 100)//爆表100次经过了1s
			{
				cnt = 0;
				LED = !LED;//每经过1s,翻转LED状态
			}
		}
	}
} 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值