具体的调用方式可以参考通过如下程序:
程序功能:利用定时器进行定时,实现每秒中led闪烁一次
#include<reg52.h>sbit led = P0^0
unsigned int num
void main(void)
{
TMOD = 0x00 // 工作方式0
TH0 = (8192 - 5000) / 32 // 12M晶振下定时5ms
TL0 = (8192 - 5000) % 32
EA = 1 // 开总中断
ET0 = 1 // 开定时器中断
TR0 = 1 // 启动定时器
while(1)
{
if(num == 200) // 定时1秒钟到
{
num = 0 // 计数器清零
led = ~led // led灯取反,实现1秒闪烁一次
}
}
}
void timer() interrupt 1 // 定时器1工作与方式0
{
TH0 = (8192 - 5000) / 32 // 重装初值
TL0 = (8192 - 5000) % 32
num++ // 计数器加1
}
//-------------------//
函数名称:
void
delay_s(uchar
t)
//
函数功能:
利用定时器延时t秒子程序
//-------------------
delay_s(uchar
t)
{
uchar
count,a
TMOD=0x10
//定时器1,模式1
TH0=(65536-50000)/256
//
定时为50ms
TL0=(65536-50000)%256
EA=1
ET1=1
TR1=1
while(1)
{
if(a==t)break
}
}
void
timer1()
interrupt
3
//定时器1
{
TR1=0
TH1=(65536-50000)/256
//
定时为50ms
TL1=(65536-50000)%256
count++
if(count==20)
//判断是否到1秒
{
count=0
a++
}
TR1=1
}