CC2530 按键控制LED

原理图分析

当按键没有按下的时候是高电平;按下的时候VCC通过10K的限流电阻接地是低电平。要知道引脚的状态,需要把引脚配置为输入模式,然后读取引脚的状态即可。

按键原理图
LED原理图

寄存器分析

  • P0SEL配置为输入/输出模式(0为IO模式,1为外设模式)。
  • P0DIR 配置引脚为输入模式(0为输入,1为输出)
  • P0INP配置为上拉或者下拉模式(0为上拉或下拉模式,1为三态模式)
  • P2INP的高三位决定整个P0,P1,P2端口是上拉还是下拉。

编写测试

#include <ioCC2530.h> 

void main(void)
{
    //配置P0_1引脚的按键1 
    P0SEL &= ~0x02; //普通GPIO模式<0为IO模式,1为外设模式>
    P0DIR &= ~0x02; //输入功能<0为输入,1为输出>
    P0INP &= ~0x02; //上拉或下拉模式<0为上拉或下拉模式,1为三态模式>

    //配置P1_0引脚的LED1
    P1SEL &= ~0x01; //普通GPIO模式<0为IO模式,1为外设模式>
    P1DIR |= 0x01;  //输出功能<0为输入,1为输出>
    P1INP &= ~0x01; //上拉或下拉模式<0为上拉或下拉模式,1为三态模式>
    
    P2INP |= 0xe0;  //P0,P1,P2都设置为上拉模式
    
    while (1)
    {
        //如果按键按下则LED亮,否则LED灭
        if (0 == P0_1) {
            P1_0 = 0;
        } 
        else {
            P1_0 = 1;
        }
    }
}

注意事项

注意:P2INP这个寄存器的高三位。

猜你喜欢

转载自www.cnblogs.com/iotplus/p/12681661.html