用at89s52单片机编写定时计数器产生1秒定时

2024-12-21 18:19:51
推荐回答(2个)
回答1:

//晶振12M 机器周期1us
void InitTimer0(void)
{
TMOD = 0x01;//T0工作为16位计数模式
TH0 = (65536-50000)/256; //取高位
TL0 = (65536-50000)%256;//取低位 计时50000个机器周期也就是50毫秒
EA = 1;//开总中断
ET0 = 1;//开定时器中断
TR0 = 1;//开始计时
}
void Timer0Interrupt(void) interrupt 1
{
static unsigned char cont;//定义静态变量 函数执行完后值任然保留
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
if(++cont==20)//50毫秒循环20次就是1秒
{
cont=0;
//在这里 添加你的代码
}
}

回答2:

EA=1;
TMOD=0X01;
TR0=1;
IT0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
中断里,把上面后两句加进去,再写tt++;if(tt==20).