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