void TIME0_Init (void) //每10毫秒定时一次
{
TMOD =0x01; //工作在16位自动重装载方式
TL0=-10*SYSCLK/1000/12;
TH0=-10*SYSCLK/1000/12>>8;
ET0=1; //打开定时器0中断
TR0=1; //允许中断
}
void TIME0_ISR (void) interrupt 1 { //采用寄存器组0
TF0=0; //清掉中断标志
TL0=-10*SYSCLK/1000/12; 11059200
TH0=-10*SYSCLK/1000/12>>8;
// LED=!LED;
if(yanjsq<253) yanjsq++; //延时记数器每1毫秒自动加1 // 不影响计数 看不懂????????
}
void RST_WDT(void){
WDT_CONTR=0x3C;
}
void yan(uint n){ //延时指定时间,单位为ms,但整型到10ms
yanjsq=0; //最大延时为 ????????
n=n/10;
while(1){
if(yanjsq>n) break;
RST_WDT(); //复位看门狗
}
} |