遇到個(gè)項(xiàng)目 國(guó)產(chǎn)8位單片機(jī)沒(méi)AD 充電LED顯示這里卡住了 共有4顆LED 分別 LED1、LED2、LED3、LED4 //D1 D2 D3 D4 堆塔跑馬燈 4顆燈跑馬燈,定時(shí)一段時(shí)間 LED1燈常亮其余跑馬燈 后續(xù)定時(shí)一段時(shí)間 依次類推 到最后一顆LED4閃爍,滿電燈全亮。 我寫(xiě)了的這個(gè)在while里面有問(wèn)題,定時(shí)函數(shù)里面寫(xiě)的標(biāo)志位 沒(méi)作用 代碼進(jìn)到跑馬燈void ledpmd()里面第一個(gè)if,后面else if 跑不起來(lái) 求大佬指教一下
void ledpmd(void)
{
if(cm_ledfag==1) // 充電開(kāi)啟 前2分鐘流水跑馬燈
{
if(cn1s)
{
time1s++;
cn1s=0;
}
if(time1s>40) //定時(shí)1s
{
time1s=0;
if(ledcn++>4)
ledcn=0;
switch(ledcn)
{
case 0:
D1=1;
D2=1;
D3=1;
D4=1;
break;
case 1:
D1=0;
break;
case 2:
D2=0;
break;
case 3:
D3=0;
break;
case 4:
D4=0;
break;
default:
break;
} //switch
}
} //
else if(led_state==2) // 定時(shí)2分鐘標(biāo)志位 LED1常亮 LED2-LED4流水跑馬燈
{
if(cn1s)
{
time1s++;
cn1s=0;
}
if(time1s>40) //定時(shí)1s
{
time1s=0;
if(ledcn++>4)
ledcn=0;
switch(ledcn)
{
case 0:
D1=0;
D2=1;
D3=1;
D4=1;
break;
case 1:
D1=0;
break;
case 2:
D2=0;
break;
case 3:
D3=0;
break;
case 4:
D4=0;
break;
default:
break;
} //switch
}
} // 2分鐘
else if(led_state==3) // 定時(shí)20分鐘標(biāo)志位 LED1-LED2常亮 LED3-LED4流水跑馬燈
{
if(cn1s)
{
time1s++;
cn1s=0;
}
if(time1s>40) //定時(shí)1s
{
time1s=0;
if(ledcn++>4)
ledcn=0;
switch(ledcn)
{
case 0:
D1=0;
D2=0;
D3=1;
D4=1;
break;
case 1:
D1=0;
break;
case 2:
D2=0;
break;
case 3:
D3=0;
break;
case 4:
D4=0;
break;
default:
break;
} //switch
}
} // 20分鐘
else if(led_state==4) // 定時(shí)30分鐘標(biāo)志位 LED1-LED3常亮 LED4閃燈
{
if(cn1s)
{
time1s++;
cn1s=0;
}
if(time1s>40) //定時(shí)1s
{
time1s=0;
if(ledcn++>4)
ledcn=0;
switch(ledcn)
{
case 0:
D1=0;
D2=0;
D3=0;
D4=1;
break;
case 1:
D1=0;
break;
case 2:
D2=0;
break;
case 3:
D3=0;
break;
case 4:
D4=0;
break;
default:
break;
} //switch
}
}
}
void main()
{
POWER_INITIAL(); //系統(tǒng)初始化
PWM1_INITIAL(); //初始化T2
TIMER0_INITIAL();
GIE = 1; //開(kāi)中斷
T0IE = 1;
// LED燈初始化
D1=0; //=1置高 關(guān)閉LED
D2=0;
D3=0;
D4=0;
PR2L=0;
led_state=0;
ledpmd();
while(1)
{
MCLRWDT(); //清看門(mén)狗
if(flag2s) //關(guān)閉開(kāi)機(jī)畫(huà)面
{
flag2s=0;
D1=1;
D2=1;
D3=1;
D4=1;
}
//--------------------------------
if(CH) //充電高電平
{
MCLRWDT();
//-------跑馬燈入口----------
ledpmd();
//------------------------------
cm_ledfag=1; //狀態(tài)位
//----------2min------------------
if(flag_m1) // 中斷函數(shù)里面1分鐘 flag_m1 置一次1
{
min2++;
flag_m1=0;
}
if(min2>1)
{
min2=0;
flag_m1=0;
cm_ledfag=0;
led_state=2; //狀態(tài)位
cn5s=0;
flag5s=0;
}
//------------20min-----------------
if(flag_m1)
{
min20++;
flag_m1=0;
}
if(min20>19)
{
min20=0;
flag_m1=0;
cm_ledfag=0;
led_state=3; //狀態(tài)位
cn5s=0;
flag5s=0;
}
//--------------30min----------------
if(flag_m1)
{
min30++;
flag_m1=0;
}
if(min30>29)
{
min30=0;
flag_m1=0;
cm_ledfag=0;
led_state=4; //狀態(tài)位
cn5s=0;
flag5s=0;
}
//-------------------------------------
}
} //while
} //main
|