您的位置:首页 > 其它

单片机 定时器/计数器

2015-02-09 17:31 232 查看

一、什么是定时器/计数器

在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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

#include<reg52.h>

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;
}

原文地址:http://yingbing.github.io/blog/2015/02/07/scm-timer-counter/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: