一個簡單的ARM指令,卻實現不了如下功能:按下鍵(p0.20),實現led燈閃三下,松開鍵,燈滅,采用查詢方式,不采用中斷方式,代碼如下:
********************************************************************************************************/ #include "config.h"
#define ledcon (0xfu<<28) #define beepcon (0x1<<7) #define keycon (0x1<<20)
/////////////////////////////////////////////////////////// void delay(uint32 delaytime) { uint32 i; for (;delaytime>0;delaytime--) {for(i=5000;i>0;i--);} }
/////////////////////////////////////////////////////////// void ledon() { IO2SET=ledcon; delay(10); }
////////////////////////////////////////////////////////// void ledoff() { IO2CLR=ledcon; delay(10); }
/////////////////////////////////////////////////////////// void beepon() { IO0SET=beepcon; delay(10); }
/////////////////////////////////////////////////////////// void beepoff() { IO0CLR=beepcon; delay(10); }
//////////////////////////////////////////////////////////
////////////////////////////////////////////////////////// int main (void) { uint8 nCount; //P0.20 GPIO PINSEL1=PINSEL1 & 0xfffffcff;
while (1) { if ((IO0PIN & keycon)!=0) { for(nCount=3;nCount>0;nCount--) { ledon(); //ledoff(); //如果允許執行此語句,則開機一復位燈就一直亮,如果屏蔽此語句,則按下鍵燈亮,松鍵燈滅,不知是何原因,請高手指點? } } else { ledoff(); } }
return 0; }
|