一个简单的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; }
|