ZigBee入门-CC2530-实验(一)-流水灯代码
实验目的:
熟悉通用I/O寄存器,学会使用寄存器进行GPIO的编程。
实验内容:
1.LED硬件连接
2.通用I/O寄存器的设置
3.程序编写
实验过程:
1.LED硬件电路设计:(简单来说无非就是两种)
(1).采用低电平有效的方式,即相应的的I/O端口输出低电平时,LED灯点亮。
(2).采用高电平有效的方式,即相应的的I/O端口输出高电平时,LED灯点亮。
2.相关的寄存器配置:
PXSEL:功能选择寄存器 0:通用I/O 1:外设功能
PXDIR:方向寄存器 0:输出 1:输出
PXINP:用作输入时,通用 I/O 端口引脚可以设置为上拉、下拉或三态操作模式。
3.编写代码
// IAR中创建项目,编写代码
#include <ioCC2530.h> //CC2530头文件
#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控制端
#define LED4 P0_1 //定义P0.1口为LED4控制端
#define ON 0 //LED亮(假设低电平有效)
#define OFF 1 //LED灭
void Init_LED(); //声明LED初始化函数
void LED_RUN(); //声明流水灯函数
void Delay(uint ms); //声明延时函数
/*===================主程序入口====================*/
void main()
{
Init_LED(); //初始化LED
while(1)
{
LED_RUN(); //LED流水灯
}
}
/*==================声明函数具体实现================*/
void LED_RUN()
{
LED1 ^= 1 ; //等同于 LED1 = ~LED1;
Delay(500); //延时500ms
LED2 ^= 1 ;
Delay(500);
LED3 ^= 1 ;
Delay(500);
LED4 ^= 1 ;
Delay(500);
}
void Init_LED() //初始化LED
{
P1SEL &=~ 0X13; //0001 0011 P1.0,P1.1,P1.4定义为通用口
P1DIR |= 0X13; //0001 0011 P1.0,P1.1,P1.4定义为输出口
P0SEL &= ~0X02; //0000 0010 P0.1定义为通用
P0DIR |= 0X02; //0000 0010 P0.1定义为输出口
LED1 = OFF;
LED2 = OFF;
LED3 = OFF;
LED4 = OFF; //LED1~LED4 初始状态为灭
}
void Delay(uint ms) //毫秒级延时函数
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<535;j++);
}