单片机基础知识之定时计数器和寄存器
创始人
2024-05-03 16:22:02

目录

一、定时计数器

二、什么是寄存器

三、定时器如何定时10毫秒

四、定时器编程前寄存器配置计划

五、编程定时器控制LED每隔一秒亮灭


一、定时计数器

1、定时计数器的概念引入

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

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

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

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

负跳变指:从高电平回到低电平

2、定时器怎么定时

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

什么是晶振:

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

什么是时钟周期:

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

什么是机器周期:

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

一个机器周期 = N个时钟周期

一个时钟周期 = 晶振频率的倒数

3、定时器加一经过多久:≈ 1.085微妙

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

跳一次等于一个机器周期

一个机器周期 等于12个时钟周期

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

那么跳一次就是:12/11059200秒 = 12 000 000 / 11059200微秒 ≈ 1.085微妙

二、什么是寄存器

#include "reg52.h"sbit ledOne = P3^7;   //就是在配置寄存器
sbit ledTwo = P3^6;   //就是在配置寄存器
void main()
{ledOne = 0;       //往寄存器里写值0 ledTwo = 0;}

如上图:P3就是一个寄存器,然后ledOne是往P3寄存器的地址里写一个值0

特殊功能寄存器:

特殊功能寄存器是用来对片内功能模块进行管理、控制、监视的控制寄存器和状态寄存器,是一个特殊功能的RAM区

定时器的寄存器是什么

TCON为定时器/计数器T0、T1的控制寄存器

TF0:定时器/计数器T0溢出中断标志

TR0:定时器T0的运行控制位

三、定时器如何定时10毫秒

定时器的TL0:指低八位

定时器的TH0:指高八位

给定时器一个初始值:

TL0 = 0x00;

TH0 = 0xDC;

TL0+TH0 = 16位,从0开始数,能数2的16次方= 65536下

数一下1.085微秒,数65536下就是71毫秒,

也就是说计时器,从0开始数,最多能数到71毫秒,就爆表了(TF0状态发生改变),不能再数了

那么要定义数10毫秒,定时器就得从61毫秒开始数,数到71毫秒

10毫秒= 10 000微秒

10 000微秒 / 1.085 =9216下,说明10毫秒,要数9216下

65536 - 9216 = 56320下

56320下,转换成十六进制的是:DC00

为什么转换成十六进制,因为计时器有两个寄存器,只有转换成十六进制,才能平均放到两个寄存器中

所以:

TL0 = 0x00 (低位),初始值是在这里加

TH0 = 0xDC(高位),数数是在这里数

最后结果是:从56320下开始数,数到65536下,就正好是10毫秒的时间

下面是用stc-isp-15xx-v6.87D软件计算定时10毫秒的方法

四、定时器编程前寄存器配置计划

1、怎么知道定时器爆表了

TCON寄存器的bit5能表示爆表:当爆表的时候,硬件会修改bit5(TF0)位上面的数据,会改成1(置1)会像CPU中请求中断,如果不用中断,我们需要手动代码清零

2、怎么开始计时

TCON寄存器的bit4,通过编程让TR0=1的时候,开始计时,相当于按下了闹钟

3、定时器使用时有很多种模式的

定时器模式寄存器:TMOD来选择定时器模式,选择工作方式1,TMOD的bit0 bit1配置成0 1 ,选择16位的定时器功能

TMOD定时器通过M1和M0的互相配合,来确定定时器的模式 

TMOD.1/TMOD.0 M1、 M0      定时器/计数器0模式选择

                              0        0       13位定时器/计数器,兼容8048定时模式,TL0只用低5位参                                                     与分频,TH0整个8位全用

                              0        1       16位定时器/计数器,TL0、TH0全用 

                              1        0       8位自动重装载定时器,当溢出时将TH0存放的值自动重装入                                                    TL0

                              1        1       定时器0此时作为双8位定时器/计数器。TL0作为一个8位定时                                                   器/计数器,通过标准定时器0的控制位控制。TH0仅作为一个                                                   8位定时器,由定时器1的控制位控制       

五、编程定时器控制LED每隔一秒亮灭

#include "reg52.h"sbit led = P3^6;void main()
{int cnt = 0;led = 1;//1、配置定时器0工作模式位16位计时TMOD = 0x01;//2、给定时器一个初值TL0 = 0x00;TH0 = 0xD0;//3、定时器开始计时TR0 = 1;TF0 = 0;//4、爆表了,操作led,累计到1s,再操作ledwhile(1){if(TF0 == 1){                 //这时定时器爆表了TF0 = 0;              //不用中断,软件清零cnt ++;               //统计爆表的次数//给定时器重新定义初值TL0 = 0x00;      TH0 = 0xD0;       if(cnt == 100){       //要爆表101次led = !led;   //每经过1s,翻转led的状态cnt = 0;      //当100次表示1s,重新让cnt从0开始,计算下一次的1s			}}}
}

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...