|
請教一個問題:51單片機(jī)用外部中斷通過矩陣按鍵控制led的亮滅。想要達(dá)到目的:每一次按鍵被觸發(fā),LED的狀態(tài)翻轉(zhuǎn)一次。
單片機(jī)電路圖如下:
我自己寫的程序如下:下載后單片機(jī)的效果是按下按鍵led小燈點亮,一直保持著點亮的狀態(tài)。請問怎樣修改或者怎樣優(yōu)化程序?讓它變成每按一次,led的狀態(tài)翻轉(zhuǎn)一次。
#include <reg52.h>
sbit LED = P0^0;
sbit wai = P3^2;
sbit key = P2^7;
void main(void)
{
int i;
P2 = 0XF7; //矩陣按鍵變?yōu)楠毩存I
P0 = 0x00; //熄滅led
IT0 = 1; //下降沿觸發(fā)
EX0 = 1; //開啟INT0中斷
EA = 1; //開啟總中斷
if(key == 0)
{
for(i=0;i<1000;i++); //按鍵消抖
if(key==0)
{
wai = 0; //令P3^2引腳電平為0,下降沿出發(fā)外部中斷
while(1);
}
}
}
void int0_process() interrupt 0
{
unsigned int i;
if(key == 0)
{
for(i=0;i<1000;i++);
LED = ~LED;
}
key = 0;
}
|
|