首页 > 其他分享 >【80C51单片机】定时器/计数器的理解

【80C51单片机】定时器/计数器的理解

时间:2024-07-13 12:01:20浏览次数:15  
标签:定时器 周期 80C51 单片机 计数器 12 寄存器 时钟

目录

定时器/计数器

80C51单片机的定时器和计数器(Timers and Counters)是其重要的外围设备,用于测量时间间隔、产生时间延迟、计数事件等。80C51有两个定时器/计数器:Timer 0和Timer 1
理解:定时器与计数器的区别在于触发计数增加的信号源。作为定时器,每经过一个机器周期计数加1;作为计数器,则是外部引脚(P3.4或P3.5)每检测到一次负跳变即加1。通过寄存器设置,单片机可灵活转换这两种功能。
标准C51有2个定时器/计数器:T0和T1。他们的使用方法一致。C52相比C51多了一个T2

1. 定时器怎么定时

定时器的本质原理: 每经过一个机器周期,就加1 :寄存器(存储数据的高速小容量存储单元)

简单理解(加1经过了多少时间)

假设系统时钟频率为12 MHz,时钟周期为:
T c l o c k = 1 f c l o c k = 1 12  MHz ≈ 83.33  ns T_{clock}=\frac1{f_{clock}}=\frac1{12\text{ MHz}}\approx83.33\text{ ns} Tclock​=fclock​1​=12 MHz1​≈83.33 ns

一个机器周期包含12个时钟周期:
T m a c h i n e = 12 × T c l o c k = 12 × 83.33   n s ≈ 1   μ s T_{machine}=12\times T_{clock}=12\times83.33\mathrm{~ns}\approx1\mathrm{~μs} Tmachine​=12×Tclock​=12×83.33 ns≈1 μs

这样,每秒钟可以执行约1,000,000个机器周期,这对于大多数嵌入式应用来说是一个足够高的速度。
为什么是1us,我粗俗的理解为方便后期的计算
为什么是12个时钟周期,
这是由该单片机内部的硬件设计和工作原理决定的。80C51单片机在执行指令和进行数据处理时,其基本操作被划分为若干个状态周期(State),每个状态周期又进一步细分为两个相位(Phase),即P1和P2,这两个相位各对应一个时钟脉冲。因此,每个状态周期需要2个时钟周期。
一个机器周期由6个这样的状态周期组成,即S1至S6,所以计算下来就是 6×2=12 个时钟周期

什么是时钟周期

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

什么是机器周期

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

2.如何设置定时

基本结构

计数寄存器(THx和TLx):每个定时器/计数器有两个8位的寄存器,分别是高(THx)和低位(TLx),用于存储计数值。
控制寄存器(TCON和TMOD):用于配置和控制定时器/计数器的工作模式和启动停止等操作。
时钟源选择:可以选择内部时钟源或外部时钟源。

相关寄存器

在这里插入图片描述
控制寄存器
在这里插入图片描述

1. TMOD寄存器

用于设置定时器/计数器的工作模式和计数器的运行方式。它是一个8位寄存器,其中每个定时器/计数器占4位:

GATE:当设置为1时,定时器/计数器的运行受外部引脚INTx控制。
C/T:选择定时器或计数器模式。当为0时,工作在定时器模式;当为1时,工作在计数器模式。
M1和M0:设置定时器/计数器的工作模式

工作模式设置(M1和M0)

模式0(M1=0, M0=0):13位定时器/计数器(TLx的5位和THx的8位组成)。
模式1(M1=0, M0=1):16位定时器/计数器(TLx和THx组成)。
模式2(M1=1, M0=0):8位自动重装载定时器/计数器(THx加载到TLx)。
模式3(M1=1, M0=1):分为两部分,Timer 0的TL0和TH0分别作为两个独立的8位定时器/计数器,Timer 1停止工作。

2. TCON寄存器

TCON寄存器用于控制定时器/计数器的启动和停止,以及外部中断的标志和控制。TCON寄存器的格式如下

在这里插入图片描述
TF1:定时器1溢出标志(当溢出的时候,硬件会修改bit6(TF1)位上面的数据,改成1(置1),如果不用中断,我们代码清零)。
TR1:定时器1运行控制位(开始计时,相当于按下了闹钟)。
TF0:定时器0溢出标志。
TR0:定时器0运行控制位。
IE1:外部中断1标志。
IT1:外部中断1触发类型控制。
IE0:外部中断0标志。
IT0:外部中断0触发类型控制

配置寄存器(用按位操作)
清0与0,置1或1
清零时,对应的需要清零的位与上0,不需要清零的位与上1
置1的时,需要置1的位置或1,不需要置一的位置或0

代码示例

/*通过定时器0,控制LED亮一秒,灭一秒,晶振11059200Hz*/
#include "reg52.h"
sbit led = P3^6;

void Timer0Init(void)		//10毫秒@11.0592MHz
{
	//AUXR &= 0x7F;		//定时器时钟12T模式
	TMOD &= 0xF0;		//设置定时器模式 清零时需要清零的位与上0(清0与0)
	TMOD |= 0x01;		//设置定时器模式 置1或1 
	TL0 = 0x00;		//设置定时初值
	TH0 = 0xDC;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
}

void main()
{
	int cnt = 0;
	led = 1;
	Timer0Init();

	while(1){
		if(TF0 == 1)//当爆表的时候,硬件会修改bit5(TF0)位上面的数据,改成1
		{
			TF0 = 0;//不用中断,必须软件清零
			cnt++;  //统计爆表的次数
			//重新给初值
			TL0=0x00;
			TH0=0xDC;
			if(cnt == 100){//爆表100次,经过了1s
				cnt = 0;  //当100次表示1s,重新让cnt从0开始,计算下一次的1s
				led = !led;//每经过1s,翻转led的状态
			}
		}
	}
}

本人菜鸟,请大神多多指教

标签:定时器,周期,80C51,单片机,计数器,12,寄存器,时钟
From: https://blog.csdn.net/qq_40064717/article/details/140395883

相关文章

  • 【单片机毕业设计选题24061】-基于蓝牙的单片机通信系统
    系统功能:1、本系统硬件由两块STM32单片机,DHT11,光敏传感器,12864oled和HC-05蓝牙模块组成。2、单片机1+HC-05蓝牙模块做为主机,单片机2+HC-05蓝牙模块做为从机。3、单片机从机将采集到温湿度,光照强度等信息通过蓝牙发送给主机。主要功能模块原理图:电源时钟烧录接口:单......
  • 593、基于51单片机的测量仪(电压,电平,频率,LCD1602)
    完整资料或定制滴滴我(有偿)见文末。目录一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括一、设计功能1、单片机型号:STC89C52/51、AT89C52/51、AT89S52/51等等都可通用。2、测量直流信号的电压,电压范围0~5V;3、测量信号的TTL电平,给出高低电......
  • 592、基于51单片机的彩灯(跑马,鸳鸯,心跳,双流水)
    完整资料或定制滴滴我(有偿)见文末。目录一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括一、设计功能1、单片机型号:STC89C52/51、AT89C52/51、AT89S52/51等等都可通用。2、通过IO口控制16个LED流水灯。3、设置四个按键K1~K4,按下K1跑马灯,K2鸳......
  • 917、基于51单片机的出租车计价器(昼夜,LCD1602,步进电机,里程,单价)(程序+Proteus仿真+原理
    毕设帮助、开题指导、技术解答(有偿)见文未目录方案选择单片机的选择显示器选择方案一、设计功能二、Proteus仿真图单片机模块设计三、原理图四、程序源码资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方案选择......
  • 51单片机:实现CSGO中C4下包功能(附功能实现视频和代码详解)
    目录一、功能实现二、功能简介1.矩阵键盘输入密码2.S11确认输入密码3.启用蜂鸣器三、模块化代码1.Buzzer.h2.Buzzer.c3.MatrixKey.h4.MatrixKey.c5.LCD1602.h6.LCD1602.c7.Delay.h8.Delay.c四、主函数五、Keil5界面一、功能实现51单片机实现CSGO中C4下包......
  • stm32 HAL库 笔记 定时器(1) 中断实验
    单片机中的定时器主要用于控制时间,比如延时、定时等等。而计数器则主要用于统计事件或脉冲信号的数量。通过控制定时器和计数器的中断、清零等操作,我们可以完成各种复杂的定时、计数等操作,实现更加智能化的控制系统。单片机的定时器一般由计数器、预分频器、中断控制器、基准......
  • vofa与单片机的串口通信笔记
    1.HAL_UART_Receive(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize,uint32_tTimeout)/*      huart:使用哪个串口进行通信      pData:一个地址,用于保存接受到的数据      Size:接收的数据个数Timeout:超时时间         ......
  • 基于51单片机智能热电偶温度检测PID控制恒温箱设计套件24-157
    24-157、51热电偶PID控制恒温箱设计-LCD1602-热电偶-KEY-AO4405本系统由STC89C52单片机电路+LCD1602液晶显示电路+热电偶检测电路+按键电路+AO4405-MOS管驱动发热电阻电路+AO4405-MOS管驱动制冷片电路+电源电路组成。1、LCD1602液晶实时显示温度和温度上下限。2、通过按键可......
  • 573、基于51单片机的温度控制(制冷,存储,查询)
    完整资料或定制滴滴我(有偿)见文末。目录一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括一、设计功能温度控制阀门制冷1、测量环境温度,如果温度过高,则打开阀门释放冷气2、记录阀门打开时间和打开时长3、具有查询功能二、Proteus仿真三......
  • 572、基于51单片机的温度检测(3路,PT100,TLC1543)
    完整资料或定制滴滴我(有偿)见文末。目录一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括需要完整的资料可以点击下面的名片,找我要资源压缩包的百度网盘下......