用定时器中断计数可以实现任意时间定时,无论是秒、分钟、小时、天、月都没有问题的。这是基本功。 例如: void T0INTinit() //定时器T0初始化 { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; //50ms EA=1; //开总中断 ET0=1; //开定时器0 TR0=1; //开始计时 } void T0INT() interrupt 1//50ms定时器中断 { static unsigned int m,s0,fen0,h0,day0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; m++;// if(m>=20) { s0++; s++;//秒变量,需要定义成全局变量 m=0; } if(s0>=60) { fen0++; fen++;//分钟变量,需要定义成全局变量 s0=0; } if(fen0>=60) { h0++; h++;//小时变量,需要定义成全局变量 fen0=0; } if(h0>=24) { day0++; day++;//天变量,需要定义成全局变量 h0=0; } if(day0>=30) { yue++;//月变量,需要定义成全局变量 day0=0; } } |