今天我们来了解并学会使用单片机的内部定时器
定时器最基本的功能就是计时,本次也是基于这个功能来实现流水灯,当然不同型号的单片机其内部计时器也是有些许差异的,基于本人的单片机型号的定时器配置如下
下面是定时器内部结构框图,从中可以很直观的看出定时器的工作原理
再使用定时器时我们首先要通过编程来对定时器的模式来进行配置,在STC中也为我们提供了十分方便的配置定时器模式的方法
要注意的是在设置参数时一定要选择与单片机类型对应的,否则将会出现错误。
学会使用定时器后进行流水灯的编程就十分容易了,在模块化编程中加入定时器模块并对定时器进行配置,然后再主函数中加入定时器中断函数。
#include <REGX52.H>
#include "TIMER0.h"
#include "Key.h"
#include <INTRINS.H>
unsigned char KeyNum,LEDMode;
void main()
{
P2=0xFE;
Timer0_Init();
while(1)
{
KeyNum=Key();
if(KeyNum)
{
if(KeyNum==1)
{
LEDMode++;
if(LEDMode>=2)
LEDMode=0;
}
}
}
}
unsigned int T0Count;
void Timer0_Poutine() interrupt 1
{
TL0=0x18;
TH0=0xFC;
T0Count++;
if(T0Count>=500)
{
T0Count=0;
if(LEDMode==0)
P2=_crol_(P2,1);
if(LEDMode==1)
P2=_cror_(P2,1);
}
}
定时器
#include <REGX52.H>
void Timer0_Init()
{
TMOD=TMOD&0xF0;
TMOD=TMOD|0x01;
TF0=0;
TR0=1;
TH0=0xFC;
TL0=0x18;
ET0=1;
EA=1;
PT0=0;
}
运行结果
f3dc52bab67a4b8bc4e19f791f1224
版权声明:本文为weixin_68131472原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。