1. 程式人生 > >CC2530 GPIO口程式設計2 (上拉、下拉,三態)

CC2530 GPIO口程式設計2 (上拉、下拉,三態)

先介紹一下上拉、下拉:

                                                                              上拉、下拉

I/O埠中,有的上下拉電阻可以設定,有的不可以設定,有的是內建,有的是需要外接,I/O埠類似於一個三極體的集電極C,

當C接通過一個電阻和電源連線在一起的時候,該電阻成為C上拉電阻,該埠常態時為高電平, 用於檢測低電平的輸入

如果C通過一個電阻和地連線在一起的時候,該電阻稱為下拉電阻,使該埠常態時為低電平用於檢測高電平的輸入

實戰:•按下按鍵S3使D1點亮。

                                                                               圖1 LED引腳圖                            

                                                                            圖2   S3按鍵引腳圖       

      上拉模式 :                         

#include <ioCC2530.h>

#define S3 P1_3

#define LED1 P1_0

void main(void)

{       

//LED燈初始化:

  P1SEL&=~(1<<0);  // 僅將P1SEL00P1_0定義為普通IO

  P1DIR|=(1<<0);  //

僅將P1DIR0位置1P1_0定義為輸出

//按鍵初始化 上拉模式 : 

  P1SEL&=~(1<<3);   // 僅將P1SEL3位清0P1_3定義為普通IO

  P1DIR&=~(1<<3);   // 僅將P1DIR3位清0P1_3定義為輸入

  P1INP&=~(1<<3);   // 僅將P1INP第3位清0,P1_3定義為上拉/下拉模式

P2INP&=~(1<<6);  // 僅將P2INP第6位清0,整個P1口定義為為上拉模式

  while(1)

  {

if(S3==0)

   LED1=0;//按下按鍵

S3,點亮LED1

  else LED1=1;

  }     

}

下拉模式 :

#include <ioCC2530.h>

#define S3 P1_3

#define LED1 P1_0

void main(void)

{       

//LED燈初始化:

  P1SEL&=~(1<<0);  // 僅將P1SEL00P1_0定義為普通IO

  P1DIR|=(1<<0);  // 僅將P1DIR0位置1P1_0定義為輸出

//按鍵初始化 拉模式 : 

  P1SEL&=~(1<<3);   // 僅將P1SEL3位清0P1_3定義為普通IO

  P1DIR&=~(1<<3);   // 僅將P1DIR3位清0P1_3定義為輸入

  P1INP&=~(1<<3);   // 僅將P1INP第3位清0,P1_3定義為上拉/下拉模式

P2INP|=(1<<6);  // 僅將P2INP第6位清0,整個P1口定義為為上拉模式

  while(1)

  {

if(S3==0)

   LED1=0;//按下按鍵S3,點亮LED1

  else LED1=1;

  }     

}

三態模式:

#include <ioCC2530.h>

#define S3 P1_3

#define LED1 P1_0

void main(void)

{       

//LED燈初始化:

  P1SEL&=~(1<<0);  // 僅將P1SEL00P1_0定義為普通IO

  P1DIR|=(1<<0);  // 僅將P1DIR0位置1P1_0定義為輸出

//按鍵初始化  三態模式 : 

  P1SEL&=~(1<<3);   // 僅將P1SEL3位清0P1_3定義為普通IO

  P1DIR&=~(1<<3);   // 僅將P1DIR3位清0P1_3定義為輸入

P1INP|=(1<<3);//僅將P1INP第3位置1,P1_3定義為三態模式

  while(1)

  {

if(S3==0)

   LED1=0;//按下按鍵S3,點亮LED1

  else LED1=1;

  }     

}

 實踐表明:經過上述三個程式中設定P1INP,將引腳輸入時設定為上拉、三態,都能檢測到按鍵是否按下的狀態。

作為普通IO輸入時 P1INP可不設定;在進行ADC轉換時,必須將引腳設定成三態,否則電壓採集不準。