一.前言

今天,我来教大家如何点亮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口做为输出口,然后通过延时函数,实现灯闪烁的效果。