小弟最近初學單片機,用C語言編程,買了一塊板子,想用單片機的外部中斷做幾個試驗,我想實現的效果是當 單片機上電之后,小燈閃爍,然后當按下一個按鍵之后產生外部中斷,小燈停止閃爍一段時間之后,另外一個小燈閃爍, 就是這么一個簡單的功能,可是無奈我對單片機的中斷執行過程不是很清楚,寫出的程序,上電之后發現單片機并不響應鍵盤的外部中斷!還是上電時的初始狀態,哪位大哥(大姐也行)能貼一下代碼幫我解決一下這個問題么?(我的單片機獨立鍵盤由P1.0-P1.3口控制,8個LED燈由P0口控制)下面是我寫的代碼
#include <reg52.h> sbit key0=P1^0; //按鍵位 sbit D=P3^2; //外部中斷口 void keydelay(int z)//消抖延時函數 { int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }
void delaytime(int ms)//控制小燈的閃爍 { int x,y; for(x=ms;x>0;x--) for(y=200;y>0;y--); }
void main() { IT0=0; EA=1; EX0=1; P1=0xff; //獨立鍵盤位置1 while(1) { if(key0==0) // 判斷鍵盤是否按下 keydelay(15);//消抖 if(key0==0) { D=0;//產生外部中斷 while(!key0); }
while(1)//上電時小燈閃爍 { P0=0xfe; delaytime(10); P0=0xff; delaytime(10); } } }
void extinter() interrupt 0 //中斷處理 { P0=0xff; //燈滅 delaytime(5); while(1) { P0=0x7f; delaytime(10); P0=0xff; delaytime(10); }
}
[此貼子已經被作者于2008-11-21 12:38:58編輯過]
|