我想做的是:在不按鍵的情況下,八個LED流水燈形式工作;按鍵按下,第一個LED與第八個LED亮,然后第二個LED與第七個LED亮,以此類推。
現(xiàn)在的問題是,按鍵一次,切換成第二種工作狀態(tài),但是再按,就沒辦法切換到最初的流水燈形式,程序如下:
sbit run_flag = P3^2;
//延時函數(shù),消除抖動
void Delay(uint16 count)
{
uint8 i;
while(--count != 0)
for(i=0;i<125;i++);
}
/*按鍵的判斷轉(zhuǎn)化成中斷處理,按下按鍵則意味著一次中斷事件發(fā)生,
單片機處理按鍵任務,即跳轉(zhuǎn)到INT0中斷處理程序中*/
void main()
{
IT0 = 1; //設置外部中斷0觸發(fā)方式位,1為邊沿觸發(fā)
EX0 = 1; //外部中斷0中斷允許位
EA = 1; //允許總中斷標志位
while(1)
{
if(run_flag==0) //判斷運行標志位狀態(tài)
{
P1=led_light1[i++];
Delay(50);
if(i==4) i=0;
}
else
{
P1=led_light2[i++]; //點亮LED流水燈
Delay(50);//點亮延時
if(i==8) i=0;
}
}
}
//中斷程序
void int0() interrupt 0
//中斷服務函數(shù)入口
{
EX0=0; //禁止INT0中斷
i=0;
run_flag=~run_flag;
EX0=1; // 允許INT0中斷
}
我是初學者,還麻煩各位老師指點一下?ㄔ谶@個問題上好久了。謝謝
|