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的单片机学习——定时器的主要内容,如果未能解决你的问题,请参考以下文章

51单片机控制舵机转角的C语言程序

51单片机入门

单片机AD采样,10位AD和12AD的采样计算公式分别是啥?

51单片机定时器问题

编程题 设MCS-51单片机系统中晶振频率为12MHz,欲使用定时器/计数器1,采用方式1编写实现1秒定时时间的程

51单片机中的定时器中断是怎么用的 ?