有人懂基于单片机8051内核 的无线短距离传输Zigbee程序吗
这主要的功能是按键控制LED#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
typedef signed short INT16;
#define ON 0
#define OFF 1
//定义控制灯的端口
#define RLED P1_0 //定义LED1为P10口控制
#define YLED P1_1 //定义LED2为P11口控制
#define K1 P0_6 //P0_6
//函数声明
void Delay(uint); //延时函数
void Initial(void); //初始化P0口
void InitKey(void);
uchar KeyScan(void);
char i = 0;
uchar Keyvalue = 0 ;
/****************************
//延时
*****************************/
void Delay(uint n)
{
uint t;
for(t = 0;t<n;t++);
for(t = 0;t<n;t++);
for(t = 0;t<n;t++);
for(t = 0;t<n;t++);
for(t = 0;t<n;t++);
}
/*****************************************
//按键初始化
*****************************************/
void InitKey(void) //配置按键输入**********************************************我不懂这个函数里的内容 懂的前辈能讲解一下吗******
{
P0SEL &= ~0X40; //P0SEL是P0功能选择寄存器
P0INP |= 0x40; //上拉 //P0INP是P0输入模式寄存器
P0DIR &= ~(0x01<<(6)); //按键在P06 ADC采集 P0DIR是P0方向寄存器
}
/****************************
//初始化程序
*****************************/
void Initial(void) //初始化P0口
{
P1DIR |= 0x03; //P10、P11定义为输出
RLED = 1;
YLED = 1; //LED
}
/*****************************************
//读键值
*****************************************/
uchar KeyScan(void)
{
if(K1 == 0) //低电平有效
{
Delay(100); //检测到按键
if(K1 == 0)
{
while(!K1); //直到松开按键
return(1);
}
}
return(0);
}
/***************************
//主函数
***************************/
void main(void)
{
Initial(); //调用初始化函数
InitKey();
RLED = ON; //LED1
YLED = OFF; //LED2
while(1)
{
Keyvalue = KeyScan();
if(Keyvalue == 1)
{
RLED = !RLED; //red
Keyvalue = 0; //清除键值
}
}
}