- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ZigBee实验——按键控制开关
此实验的功能是通过实验班上的按键控制LED 的亮灭。本实验用于熟悉CC2430的I/O端口相
关的寄存器,熟悉寄存器的赋值操作。
无线龙C51RF-3-PK 实验板的LED1与P1.0相连,LED2与P1.1口相连。按键S5与P0.5相连,
S6同P0.6相连。我以前对 PIC的单片机比较熟悉,CC2430的一些操作同PIC 相比有些不同,
两者对比下学习,效率比较高。先把实验板附带的代码贴上来。
//CDWXL 电池板开关控制小灯
#includeioCC2430.h
#defineuintunsigned int
#defineuchar unsignedchar
#defineON0 //定义LED 状态,ON为亮,OFF为灭
#defineOFF1
//定义控制灯的端口
#defineRLED P1_0
/* 根据原理图,LD1(黄)为P1_0口控制;主扩展板为RLED;从扩展板为D2(红) */
#defineGLEDP1_1
/* 根据原理图,LD2(红)为P1_1口控制;主扩展板为GLED;从扩展板为D3(黄) */
#defineK1P0_4 //K1为扩展板的CANCEL键,在P0_4口
#defineK2P0_5 //K2为扩展板的OK键,在P0_5口
//函数声明
voidDelay(uint); //延时函数
voidInitial(void); //LED初始化函数
voidInitKey(void); //按键初始化函数
uchar KeyScan(void); //按键扫描函数
uchar Keyvalue =0; //用于存放按键值的变量,初值为0
/****************************
//延时函数
*****************************/
voidDelay(uintn)
{
uinttt;
for(tt=0;ttn;tt++);
for(tt=0;ttn;tt++);
for(tt=0;ttn;tt++);
for(tt=0;ttn;tt++);
for(tt=0;ttn;tt++);
}
/*****************************************
//按键初始化函数,原理图中按键连在P0_4和P0_5,所以进行了修改
voidInitKey(void)
{
P1SEL=~0X0C;//作用是将P12P13设为普通I/O口,但默认就是,不知道为什么还要加此语句
P1DIR =~0X0C;//按键在P12P13
P1INP |=0x0c;//上、下拉
}
*****************************************/
voidInitKey(void)
{
//P0SEL=~0X30;
P0DIR =~0x30;//将连接按键的P0_4、P0_5口设置为输入
P0INP |=0x30;//将P0_4、P0_5口的输入状态设置为三态,以读取按键的状态
}
/****************************
//初始化程序
*****************************/
voidInitial(void)
{
P1DIR |=0x03;//将连接LED 的P1_0、P11定义为输出
RLED=1;
GLED=1; //将LED 置高电平,LED 灭
}
/*****************************************
//按键扫描函数,检测按键是否按下,若有键按下,则返回相应的值
//如K1键按下,则返回1;K2键按下,则返回2;没有键按下,返回0
//不知道第二个if(K1==0)的作用,在实验三中进行了修改,也可以实现同样的功能
*****************************************/
uchar KeyScan(void)
{
if(K1==0)
{
Delay(100);
if(K1==0)
{
while(!K1);
return(1);
}
};
if(K2==0)
{
Delay(100);
if(K2==0)
{
while(!K2);
return(2);
}
};
return(0);
}
/***************************
//主函数
***************************/
voidm
文档评论(0)