本次实验实现精确的1秒延迟,在后面会用到毫秒延时来实现动态数码管。
#include <reg52.h>
static int i=0;
sbit LED=P1^0;
void init_t0()
{
TMOD=0X01 ;//0000 0001 定时器T0方式1
/*设定初始数值,16位*/
// FFFF H - 3CB0 H =C34F H= 49999 约等于50000 即溢出一次大概50ms
TH0=0X3c;
TL0=0xb0;
ET0=1;//打开定时器开关
EA=1;//打开中断总开关
TR0=1;//开始启动计数器 =0关闭停止计数
}
void main()
{
init_t0();//初始化计数器
while(1);
}
void Delay1s() interrupt 1 //延迟1s
{
TR0=0;//此时溢出,停止计数
i++;
TH0=0X3c;//要重新赋予初值
TL0=0xb0;//
if(i==20) //20次溢出=1s
{
LED=~LED;
i=0;
}
TR0=1;//开始计数
}