轮询方式——按键控制LED亮灭(外部信号输入读取)
外设电路图如下,P10低电平时LED亮,按键没有按下P01为高电平,按下为低电平:
将P01设置为通用IO:
将P01设置为输入模式:
打开P01上的上拉电阻:
#include <ioCC2530.h> typedef unsigned char uchar; typedef unsigned int uint; #define LED1 P1_0 // P1.0口控制LED1 #define KEY1 P0_1 // P0.1口控制S1 void DelayMS(uint msec) { uint i,j; for (i=0; i<msec; i++) for (j=0; j<535; j++); } void InitLed(void) { P1DIR |= 0x01; // P1.0定义为输出 LED1 = 1; // LED1灯熄灭 } void InitKey(void) { P0SEL &= ~0x02; //设置P0.1为普通IO口 P0DIR &= ~0x02; //按键接在P0.1口上,设P0.1为输入模式 P0INP &= ~0x02; //打开P0.1上拉电阻 } uchar KeyScan(void) { if (KEY1 == 0) { DelayMS(10); if (KEY1 == 0) { while(!KEY1); //松手检测 return 1; //有按键按下 } } return 0; //无按键按下 } void main(void) { InitLed(); //设置LED1相应的IO口 InitKey(); //设置S1相应的IO口 while(1) { if (KeyScan()) //按键按下则改变LED状态 LED1 = ~LED1; } }