您好,登錄后才能下訂單哦!
一.前言
今天,我來教大家如何點亮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口做為輸出口,然后通過延時函數,實現燈閃爍的效果。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。