u16 zhankongbi=0; void Timer0_Init(void) //100微秒@12.000MHz { TMOD &= 0xF0; //设置定时器模式 TMOD |= 0x01; //设置定时器模式 TL0 = 0x9C; //设置定时初始值 TH0 = 0xFF; //设置定时初始值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 ET0 = 1; //使能定时器0中断 EA=1; } void Timer0_Isr(void) interrupt 1 { TL0 = 0x9C; //设置定时初始值 TH0 = 0xFF; //设置定时初始值 temer0++; if(temer0<=zhankongbi){ P1=1; }else{ P1=0; // 10s 1.5 } if(temer0>=200) temer0=0;
时间: 2023-11-18 12:03:07 浏览: 177
这段代码是关于定时器0的初始化和中断处理函数的代码。在初始化函数Timer0_Init()中,首先设置了定时器模式为模式1,然后设置了定时器的初始值,TL0为0x9C,TH0为0xFF。接着清除了TF0标志位,并使能了定时器0中断和总中断。在中断处理函数Timer0_Isr()中,首先重新设置了定时器的初始值,然后每次进入中断都会对temer0进行递增操作。如果temer0小于等于zhankongbi的值,就将P1口置为高电平;否则将P1口置为低电平。最后,当temer0大于等于200时,将temer0重置为0。
阅读全文