ZigBee实验——按键控制开关.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

ranfand + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档