你的定时器中断间隔是50ms,20次中断就是1秒所以把while(time<20);改为while(time<20*3600*2)就可以了,也可以定义宏
#include
#define TIMES (20*3600*2L) //1小时3600秒,这个数字超出65536了,所以强制转换为长整型常量,修改这个宏就可以修改定时时间
unsigned char time;
sbit bb1=P1^0;
void int0(void) interrupt 0 using 1
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
time = 0; //计数器清零
TR0=1;
while(time
ET0=0;
bb1 = !bb1;
}
void timer0(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
}
void main()
{
EX0 = 1; //外部中断初始化
IT0 = 0; //低电平中断
PT0 = 1; //关键,让定时器中断优先级高于外部中断
EA=1; //开总中断
while(1);
}
取消
评论