很简单,因为定时器的计数器是16位的,也就是最大65536us=65ms
所以这里设置20ms中断一次。
设置2个变量 cnt1和cnt2。
每次20ms中断,2个变量各加1。
那么当cnt1==100的时候,也就是过了2秒,切换LED,同时cnt1置零。
当cnt2==5的时候,也就是过了0.1秒,让LED=~LED,就可以达到0.2秒闪烁一次的效果,同时cnt2也要置零。
void Timer0Init(void) //20毫秒@12.000MHz
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0xE0; //设置定时初值
TH0 = 0xB1; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
温馨提示:内容为网友见解,仅供参考