本帖最后由 wjzhongshi 于 2012-10-6 20:23 编辑
搞了好几天了总是不行,高手帮我写一个定时器延时吧
具体情况是:两个按键控制三个led,按键一按一下LED1亮延时0.5秒后LED2亮延时0.5秒后LED2灭,LED1延时15秒后LED1灭,
按键二按一下LED1亮延时0.5秒后LED3亮延时0.5秒后LED3灭,LED1延时15秒后灭,在LED1亮的时候无论是按下按键一还
是按键二LED1延时要重新开始计算15秒后灭。
主要是重新开始计算这一块总是弄不好,高手帮一下吧
忘了单片机用的是stc12c2052ad 12M晶振。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
给个大致的思路
unsigned int TimerCount=0;
//设置好50ms定时器,关定时器
while(1)
{
KeyScan();
if(KeyValue==Key1)
{
TimerCount=0;
Key1Flag=1;
LED1_ON;
LED2_OFF;
TR0=1;
}
else if(KeyValue==Key2)
{
//同Key1,此处略
}
}
定时器中断函数50ms
void intertupt timer0()
{
timerCount++;
if(Key1Flag)
{
if(timerCount>=10)//50*10ms 0.5秒后开LED2
{
LED2_ON;
}
else if(timerCount>=20)//50*20ms 1秒后关LED2
{
LED2_OFF;
}
else if(timerCount>=300)//15秒后关LED1
{
LED1_OFF;
TR0=0;//关定时器
}
}
if(Key2Flag)
{
//同Key1,此处略
}
}
一周热门 更多>