zigbee學習之路(二):點亮LED

一.前言

      今天,我來教大家如何點亮led,這也是學習開發板最基礎的步驟了。

二.原理分析

    cc2530芯片跟雖然是51的內核,但是它跟51單片機還是有區別的,51單片機不需要對IO口進行配置,而cc2530芯片卻需要對IO口進行配置,才能對它進行賦值,需要配置的寄存器有PXSEL,PXDIR,PXINP,x可以代表任意IO口,如P1SEL。

下面介紹PXSEL的功能:

下面介紹PXDIR的功能:

下面介紹PXINP的功能:

通過配置以上寄存器的,就可以控制IO口德輸入輸出狀態,是否做爲普通IO口。

三.程序

#include <ioCC2530.h>

#define uint unsigned int #define uchar unsigned char

#define LED1 P1_0    //定義P1_0口爲LED1控制端 #define LED2 P1_1    //定義P1_1口爲LED2控制端

#define LED3 P1_4    //定義P1_4口爲LED3控制端

/* 函 數 名  : IO_Init  功能描述  : LED_IO初始化函數  輸入參數  :

NONE   輸出參數  : NONE  返 回 值  : NONE */

void IO_Init(void)

{     P1DIR |= 0xff;       //P1端口定義爲輸出    

LED1 = 0;            //點亮LED1    

LED2 = 0;            //點亮LED2    

LED3 = 0;            //點亮LED3 }

/* 函 數 名  : Delayms  功能描述  : 毫秒延時  輸入參數  : xms:延時時間,如 i=xms 即延時i毫秒  輸出參數  : none  返 回 值  : none */

void Delayms(uint xms) {    

uint i,j;    

for(i=xms;i>0;i--)      

for(j=587;j>0;j--); }

/* 函 數 名  : main  功能描述  : LED測試(通用IO的輸出使用)  輸入參數  : NONE   輸出參數  : NONE  返 回 值  : NONE */

void main ( void )

{   IO_Init ();       //調用初始化程序  

Delayms ( 2000 );   //延時2s      

while ( 1 )   {    

LED1 = ~ LED1;    

LED2 = ~ LED2;    

LED3 = ~ LED3;

    Delayms ( 500 );   //延時0.5s           }   }

四.總結與分析

     主函數中先執行初始化程序,配置IO口相關的寄存器,其他兩個寄存器的默認值滿足我們的要求,我們只要配置P0DIR即可,是P1口做爲輸出口,然後通過延時函數,實現燈閃爍的效果。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章