单片机定时器和计数器的类型及工作原理解析

一、什么是定时器/计数器
在51单片机中,定时器/计数器是用来实现定时功能,并且具有计数的功能,来实现对外部信号的计数。
二、定时器/计数器有什么类型
在51单片机中,分为软件定时器,不可编程硬件定时器,可编程定时器。
软件定时:cpu每执行一条指令时,是需要固定时间的,所以,通过执行空指令可以达到延时的效果,这样子做的代价是占用cpu时间,所以一般很少这么做。
不可编程硬件定时器:是由电路和硬件来完成定时功能的,一般采用基电路,外接定时部件(电阻和电容),通过改变电阻的阻值和电容的电容值来修改定时值,一量确定后件不能通过软件修改,这样子做的优点是不需要占用cpu时间。
可编程定时器:通软件来确定定时值及其范围,可编程定时器功能强大,灵活性高。这是本文详细讲解的定时器。
三、定时器的内部结构及工作原理
8051单片机有定时器0(t0)和定时器1(t1)两个定时器。
定时器0(t0)和定时器1(t1)是两个16位加法计算器。
定时器0是由th0和th1两个8位计数器组成的,定时器1也是一样。
定时器内部还有以下寄存器:
8位的方式寄存器(tmod)
8位控制寄存器(tcon)
选择定时器模式寄存器(c/t)
启动方式寄存器(gate)
工作方式及发出启动信号寄存器(tr0或tr1)
四、定时器工作方式
定时器的工作方式主要是通过thod低4位是定时器0的工作方式控制位,高4位为定时器1的工作方式控制方式。均为m1m0
工作方式m1m0功能00013位计数器10116位计数器2108位计数器,初值自动装入311t0分成两个8位计数器,t1停止工作五、使用定时器
timer_count.c
#include
unsigned char i;
sbit led0 = p1^0;
void main(void)
{
tmod = 0x01;
th0 = 0;
tl0 = 0;
et0 = 1;
tr0 = 1;
ea = 1;
while(1);
}
void t0_delay(void) interrupt 1
{
i++;
tr0 = 0;
th0 = 0;
tl0 = 0;
if(i == 20)
{
i = 0;
led0 = ~led0;
}
tr0 = 1;
}

Raritan公司针对数据中心推出智能电源管理
退饱和电路的短路保护方式
使用英特尔VTune放大器识别内存问题(第1部分)
高通研发专为PC设计的骁龙1000芯片 挑战英特尔
三星S8怎么样?三星S8亮点满满!与历代三星对比评测,三星S8八大革新!黑科技根本停不下来
单片机定时器和计数器的类型及工作原理解析
美国正在以英国脱欧后不与其签署自贸协定来逼迫英国禁用华为5G产品
有什么方法可以开发更可靠且经济高效的电源应用
AI可自动筛查100%的败血症患者
白噪声和Chirp信号在声音导航效果的异同
基于DM642的嵌入式网络视频服务器的设计
如何有效解决路由器散热和稳定性的问题
红外遥控器控制扩展器/中继器构建
iPhone8什么时候上市:iPhone8苹果中的战斗机,5大创新只为完成乔布斯遗愿?
蚂蚁集团暂缓上市,官方表态歉意
中国智能家居的发展可以分为几个阶段
可以探测其他计算机的“思想”的人工智能研发成功,迈出了机器之间协同合作的第一步
芯原股份携手合作伙伴持续推动RISC-V生态繁荣
谷歌这两项专利将在室内安全领域的研发更进一步
VR虚拟仿真技术在各大领域的应用