做网站 需要了解什么,合肥商城网站建设多少钱,wordpress 撰写设置,描述建设一个网站的具体步骤目录 定时器/计数器1. 定时器怎么定时简单理解#xff08;加1经过了多少时间#xff09;什么是时钟周期什么是机器周期 2.如何设置定时基本结构相关寄存器1. TMOD寄存器2. TCON寄存器 代码示例 定时器/计数器
STC89C51单片机的定时器和计数器#xff08;Timers and Counter… 目录 定时器/计数器1. 定时器怎么定时简单理解加1经过了多少时间什么是时钟周期什么是机器周期 2.如何设置定时基本结构相关寄存器1. TMOD寄存器2. TCON寄存器 代码示例 定时器/计数器
STC89C51单片机的定时器和计数器Timers and Counters是其重要的外围设备用于测量时间间隔、产生时间延迟、计数事件等。STC89C51有两个定时器/计数器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} Tclockfclock112 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} Tmachine12×Tclock12×83.33 ns≈1 μs
这样每秒钟可以执行约1,000,000个机器周期这对于大多数嵌入式应用来说是一个足够高的速度。 为什么是1us我粗俗的理解为方便后期的计算 为什么是12个时钟周期 这是由该单片机内部的硬件设计和工作原理决定的。80C51单片机在执行指令和进行数据处理时其基本操作被划分为若干个状态周期State每个状态周期又进一步细分为两个相位Phase即P1和P2这两个相位各对应一个时钟脉冲。因此每个状态周期需要2个时钟周期。 一个机器周期由6个这样的状态周期组成即S1至S6所以计算下来就是 6×212 个时钟周期
什么是时钟周期
时钟周期也称为振荡周期它的频率由晶振产生定义为时钟频率的倒数。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内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
模式0M10, M0013位定时器/计数器TLx的5位和THx的8位组成。 模式1M10, M0116位定时器/计数器TLx和THx组成。 模式2M11, M008位自动重装载定时器/计数器THx加载到TLx。 模式3M11, M01分为两部分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与0TMOD | 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; //统计爆表的次数//重新给初值TL00x00;TH00xDC;if(cnt 100){//爆表100次经过了1scnt 0; //当100次表示1s重新让cnt从0开始计算下一次的1sled !led;//每经过1s翻转led的状态}}}
}本人菜鸟请大神多多指教