51的单片机学习——定时器
Posted 马己
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51的单片机学习——定时器相关的知识,希望对你有一定的参考价值。
1、关于定时器
- 定时器由高8位和低8位两个寄存器组成。
- TMOD是定时器的工作方式寄存器,由它确定定时器的工作方式;
- TCON是定时器的控制寄存器,用于控制定时器的启动和停止以及设置溢出标志。
2、对定时器的控制
- 工作方式寄存器TMOD的设置:对TMOD的访问是按字节访问,所以对TMOD进行设置时需要8位;其工作方式有方式0~方式3四种工作方式,一般选用方式1,即设置TMOD=0x01;
- 控制寄存器TCON的设置:若选用定时器T0,使用时,设置TR0=1;若选用定时器T1,使用时,设置TR1=1;
3、使用定时器的方法
- 第一:设置TMOD,配置好工作模式;
- 第二:设置TH0和TL0的初值;
- 第三:设置TCON,通过TR0=1来让定时器T0开始计数;
- 第四:判断TCON寄存器的TF0位,监测定时器溢出情况;
4、定时器在数码管静态显示中的应用
上次在做数码管静态显示时,是使用延时函数使数码管的显示更清晰。这次可以用定时器控制数码管显示两个不同数值之间的时间间隔。
程序:
#include <reg52.h>
sbit ADDR0=P1^0;
sbit ADDR1=P1^1;
sbit ADDR2=P1^2;
sbit ADDR3=P1^3;
sbit ENLED=P1^4;
unsigned char code duan[]=//共阳极显示
0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;
void main()
unsigned char i,n;
ADDR0=0; //按原理图对端口初始化
ADDR1=0;
ADDR2=0;
ADDR3=1;
ENLED=0;
TMOD = 0x01;
TH0 = 0xb8;
TL0 = 0x00;
TR0 = 1;
while(1)
if(TF0 == 1)
TF0 = 0;
TH0 = 0xb8;
TL0 = 0x00;
n++;
if(n>=50) // 1s
n = 0;
P0 = duan[i];
i++;
if(i>9) i=0;
以上是关于51的单片机学习——定时器的主要内容,如果未能解决你的问题,请参考以下文章
单片机AD采样,10位AD和12AD的采样计算公式分别是啥?