【水剑学ARM】<二>按键控制LED闪烁
通过按键改变端口的电平,读取端口电平,通过高低不同判断是否按键,同时根据按键决定灯的
亮和灭(Keil for ARM编译)。
代码如下:
/******************************************************************************/
/* */
/* led.c: 用ARM读取按键状态点亮或熄灭一个led,还是有点浪费…… */
/* */
/******************************************************************************/
#include
/*******************************************************************************
**函数名: delay()
**描述: 软件延时
********************************************************************************/
void delay(void);
int main(void) {
int P01State = 0;
PINSEL0 = 0; /*设置引脚为GPIO */
IO0DIR |= 0x000001; /*将P0.0设置为输出 */
IO0DIR &= ~0x000002; /*设置P0.1输入*/
IO0SET = 0x000001; /*将P0.0置1,也就是让led灭 */
while (1) {
P01State = IO0PIN&0x000002; /*读取P0.1的状态*/
if(P01State == 0) /*按键则点灯*/
{
IO0CLR = 0x000001; /*将P0.0置0,也就是让led点亮 */
delay();
}
else{
IO0SET = 0x000001;
delay();
}
}
return 0;
}
void delay (void) {
unsigned volatile long i,j;
for(i=0;i<60000;i++)
for(j=0;j<5;j++);
}
电路图如下: