Zigbee-cc2530控制流水灯实验(一)

**

I.原理介绍:

**
我买的板子型号是:MFIoT-Z-001,有四个LED,TI公司的一般有三个,不过都差不多。
资料提供的二极管电路图如下:
Zigbee-cc2530控制流水灯实验(一)_第1张图片
由于二极管的单向导通性质,即只有在正向电压(二极 管的正极接正,负极接负)下才能导通发光。所以P10,P11,P12,P13,分别对应低电平时,LED点亮。高电平时熄灭。

相关寄存器表:
Zigbee-cc2530控制流水灯实验(一)_第2张图片
稍微解释下:第一列为寄存器与寄存器对应的地址。
P1寄存器就表示端口1,端口1为I/O端口。
P1SEL寄存器作用是选择P1.0到p1.7对应的功能。这里我们要用到P1.0,P1.1,P1.4端口作为LED的输出端口。所以要置位I/O端口,所以第0,1,4位分别置1.对应的P1SEL值为~0x13
P1DIR寄存器表示端口是输出端口还是输入端口,这里要显示LED为输出端口,不需要输入,所以P1DIR=0x13

II、代码

#include 
#define uint  unsigned int
#define uchar unsigned char
//定义控制灯的端口
#define LED1 P1_0	//定义LED1为P10口控制
#define LED2 P1_1	//定义LED2为P11口控制
#define LED3 P1_4	//定义LED3为P14口控制
//函数声明
void Delay(uint);		//延时函数
void InitIO(void);		//初始化LED控制IO口函数
/****************************
//延时
*****************************/
void Delay(uint n)
{
	uint i;
	for(i = 0;i<n;i++);
        for(i = 0;i<n;i++);
        for(i = 0;i<n;i++);
        for(i = 0;i<n;i++);
        for(i = 0;i<n;i++);
}
/****************************
//初始化IO口程序
*****************************/
void InitIO(void)
{
    P1DIR |= 0x13;  //P10、P11、P14定义为输出
    LED1 = 1;
    LED2 = 1;
    LED3 = 1;	   //LED灯初始化为关
}
/***************************
//主函数
***************************/
void main(void)
{
	InitIO();		//初始化LED灯控制IO口	
	while(1)                //死循环
	{  
           LED1 = !LED1;           // LED1灯闪一次
           Delay(10000);           
           LED2 = !LED2;           // LED2灯闪一次
           Delay(10000);            
           LED3 = !LED3;           // LED3灯闪一次
           Delay(10000);
           
	}
}

你可能感兴趣的:(Zigbee-cc2530控制流水灯实验(一))