原理圖分析
當按鍵沒有按下的時候是高電平;按下的時候VCC
通過10K
的限流電阻接地是低電平。要知道引腳的狀態,需要把引腳配置為輸入模式,然后讀取引腳的狀態即可。
寄存器分析
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
這個寄存器的高三位。