利用定时器/计数器T0产生2秒钟的定时,AT89C51,有大神吗?急急急?

利用定时器/计数器T0产生2秒钟的定时,每当2秒定时到来时,更换指示灯闪烁,每个指示灯闪烁的频率为0.2秒,也就是说,开始L1指示灯以0.2秒的速率闪烁,当2秒定时到来之后,L2开始以0.2秒的速率闪烁,如此循环下去。0.2秒的闪烁速率也由定时/计数器来完成。

很简单,因为定时器的计数器是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开始计时
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答