


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程名称:Zigbee技术及应用实验项目:LED灯闪烁实验指导教师:专业班级:姓名:学号:成绩:1. 实验目的(1) 学习单片机IO口配置与驱动,实现指示灯LED1闪烁,频率为1Hz;(2) 通过模块化编程,养成良好编程习惯。2. 实验设备(1) CC2530K心板一块;(2) 传感器底板一个;(3) 仿真器一个;(4) 方口USBtfe一根;实验原理3.1硬件设计原理本实验的原理如图1-1所示。其中,LED1和LED3都申联一个R27刑R275艮流电阻,然后连接到CC2530勺P1口的P1_1和P1_C©脚上。当P1_1为低电平时,LED1上有电流流过,LED1被点亮,反之熄灭。3
2、JVLED1T&4IR275I4-0RkbLED3勺-图1-1LED灯原理图限流电阻R的计算:图中R27刑R275艮流电阻,其计算公式如下:R=(U-UF)/ID(1-1)式中,U为电路供电电压,UF为LED正向压降,ID为LED的工作电流。对于普通LED发光二极管,其正向压降:黄色为1.4V、红色为1.6V、蓝/白色为2.5V;点亮工作电流为3-20mA。由图1-1可知,电路供电电压为U=3.3V,LED1选择为黄色发光二极管(压降是1.4V,带入(1-1)式可得R的取值范围是95-633Q,电阻只要在此范围内即可,一般选择了470Q的常用电阻。从图1-1可以看出,如果要让LED1发
3、光,需要设置CC253时应的I/O口将LED电平拉低。本实验我们只点亮LED1指示灯,所以只要设置LED1为低电平即可,所以只要我们知道LED1与CC2530®个管脚相连就可以进行编程。随着这个思路我们在原理图中找到LED1与CC253洗片的P1_1管脚连接,将P1_1管脚拉低LED1即被点亮。3.2程序设计原理(1)主程序分析本实验的程序流程如图1-2所示,其重点IO口的配置。如果以1Hz的频率点亮LED1闪烁,贝U需要配置P1_1为输出,然后在P1_1输出1Hz的脉冲信号。*图1-2程序逻辑流程图(2)IO端口配置P1口通过特殊功能寄存器P1SEL(P1口功能选择寄存器)和P1D
4、IR(P1口方向寄存器)进行配置,其定义如下。P1SEL(P1功能选择寄存器,P0SEL同理):位号码名称复位R/W描述7:0SELP1_7:00x00R/WP1.7到P0.0功能选择0:通用I/O1:外设功能P1DIR(P1方向寄存器,P0DIR同理):位号码名称复位R/W描述7:0SELP1_7:00x00R/WP1.7到P1.0的I/O方向0:输入1:输出特殊功能寄存器的配置方法:通过位操作实现对特殊功能寄存器的配置。【例如,如果需要对P1SEL的第3位设置为1,则可用P1SEL|=0x08(二进制表示为:00001000来实现;如果需要对P1SEL勺第3位设置为0,则可用P1SEL&a
5、mp;=0xF7来实现。】(3) 延时子程序设计延时函数原型如下,在16MHz主时钟频率下,参数time的值表示延时了多少ms。(本例使用的cc253西片机上电默认使用内部RC振荡器产生系统主时钟,内部主时钟RC振荡器频率为16MHz)voidDelay_munsignedinttime)(unsignedinti,j;for(i=0;i<time;i+)for(j=0;j<50Qj+);以上C语舌代码由IAR编译生成的汇编代码如图1-3所小。结合C语言的延时函数和从汇编指令我们可以看到寄存器R0/R1保存变量j的值,R2/R3保存参数time的值,R4/R5保存变量i的值。根据c
6、c253O据手册和用户指南上对8051内核的介绍,cc253的核为兼容标准8051的单周期内核,大多数单字节指令在一个机器周期内都能执行完成。下面我们结合图1-3中的汇编指令详细分析一下延时时间的具体计算方法。此处我们忽略入栈代码段的时间消耗。地址00006B-00006F将参与比较计算的寄存器R4/R5活零,然后跳转至00008瞅行。地址00008A-00008FR4/R5(变量i)与R2/R3(参数time)进行减法运算,如果两次都没没有产生借位,即CY=0。则说明R4/R5累加到了time指定的次数,程序执行到“JNC0x0097'PC指针将调转到地址000097ft出延时循环,
7、否则循序向下执行。地址000091-000095对R0/R1活零,将PC旨针跳转到地址00007萩行地址00079-000080活除借位寄存器值后将R0/R1与字面量500®行减法运算,然后判断借位寄存器CY的值,如果CY=0则循序执行地址00008珀指令,否则PC指针跳转到地址00007佻执行地址000071-000078将R0/R1中保存的变量做自加1操作。地址000082-000089将R4/R5中保存的变量做自加1操作。DisassEnnlvLogcoiCodcDisdssemUyfoi(1=0;i<time;i-H-)00D6B7COOMO7R4.#OxOOUJUUb
8、D7DOU00006F6019far(3*0,000071ES0300722401030074F0000075E3D0Q07634OO0JO07SF3ior(j-0;omnTA300007AE00007E94F4DD007BE9U0U07E94U103000040EFfor(i0:icnon(ia2ECD000332401Q?0C35FC000036ED00003734OO000063FDiOCT(1=0;1<OlOfiSJLC3D0008BEC03008C9AU0U08DED0JD08E?BOOOOOF50OGfor(j=Q;03Q09178OODM09379OO03009580E2M
9、OkRb.JFUxOUSJMP3xOOSA3<&oa:MWAPOADDA.#0x01MOVRO.AMOVA.ElADDC口MOVR1.Aj<EOO;ji);CLPCKOV4ROSUBB以gF4mommSUBBA.JfUEOlJCJxDO?ltime;in)MOVADDAOxOlMOVRLAMOVAKADDC知mmoMOVRS,Atime;UM-CLRMO73U3BMOVSUBBJMCj<500;g):MOVMOVSJMPR00x00Sl.tfOxOQ00009?2QC39LJMP?BKET_FFL=dl_.dnain00009112OO54LCALLledl_Imt.
10、:?rel*vReqisterR2=0kF4R3=OkOIR4=0x00暗=0x00RG=OkOOR7=OkOOSF=UxCSGFP=SPX=DPTR-OOOED7CDANK=OkOOPC=OkOOGE图1-3延时函数汇编代码由以上分析可知,地址000091-000095000071-000080是C语言代码for(j=0;j<50Qj+)的汇编指令。每次循环,地址00091-00009殷指令执行1次,地址000071-000080指令执行50必。查询80C51汇编指令集得到一次for(j=0;j<50Qj+)循环CC253需要执行(6+13*500)个指令周期。在上文中我们查询C
11、C253O据手册和用户手册得知CC253弛理大多数单字节指令只需要一个机器周期。假设所有指令都在一个机器周期内执行完成。CC253的行一次for(j=0;j<50Qj+)循环最少需要(6+13*500)个机器周期。单片机一个机器周期等丁一个时钟周期,CC253E个时钟周期为1/16M,所以该次循环最少用时约400us假设双字节指令需要的机器周期与标准8051相同。CC253歌行一次for(j=0;j<500j+)循环最多需要6*12+9*500+3*12*50%机器周期。同理该次循环最多用时约1400us由丁TI没有开源CC253时汇编的取址和译码操作。所以这里我们不能明确CC25
12、30旨令每一个汇编指令的用时。只能粗略估算。上述代码中循环的50吹是一个经验值,也可以借助示波器将1m卵延时次数计算出来。3. 实验步骤步骤一:编写LED灯闪烁程序,编译无误。步骤二:将CC2530莫块(CC253CM心板与传感器底板,以后简称CC2530莫块)与仿真器连接,仿真器用USB®接线与电脑进行连接。步骤三:点击IAR软件中的DownloadandDebug按钮进行编译下载。步骤四:然后单击调试工具栏中的GO按钮。步骤五:此时LED1指示灯闪烁,则成功;否则返回步骤一,直至调试成功。4. 实验部分参考代码main函数文件:/* fnmain* briefThemainfun
13、ction.* paramNone* returnNone*/voidmain(void)(/*LED1初始化*/Led1_Init();while(1)(/*开LED1*/LED1_ON();/*延时约500ms*/Delay_ms(500);/*关LED1*/LED1_OFF();/*延时约500ms*/Delay_ms(500);le我文件:#ifndef_LED_H#define_LED_H#include<ioCC2530.h>#defineLED1P1_1/*宏定义开LED1*/#defineLED1_ON()LED1=0/*宏定义关LED1*/#defineLED1_
14、OFF()LED1=1/*函数声明部分*/externvoidLed1_Init(void);externvoidDelay(unsignedinttime);#endif/_LED_HLed灯控制文件:#include<ioCC2530.h>#include"led.h"/* fnLed1_Init* briefLED1initialization.* paramNone* returnNone*/voidLed1_Init(void)/*配置寄存器将P1_1配置成普通I/O口*/P1SEL&=0x02;/*配置寄存器将P1_1配置成输出模式*/P1D
15、IR|=0x02;LED1=1;/* fnDelay_ms* briefThisisadelayfunction.*param(in)time-Delaytime* returnNone*/voidDelay_ms(unsignedinttime)unsignedinti,j;for(i=0;i<time;i+)for(j=0;j<500;j+);5. 实验结果LED1指示灯闪烁一次,频率是1Hz。6. 附录:时钟周期知识扩展8051CPU简介增强型8051内核使用标准的8051指令集。因为以下原因指令执行比标准的8051更快:每个指令周期是一个时钟,而标准的8051每个指令周期是12个时钟。消除了总线状态的浪费因为一个指令周期与可能的内存存取是一致的,大多数单字节指令在一个时钟周期内执行。除了速度提高之外,增强型8051内核还包括结构上的改善:第二个数据指针一个扩展的18源中断单元8051内核的对象代码兼容业界标准的8051微控制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 英语三年级上册人教版三年级英语上册recycle1第二课时模板-英语
- 钢铁物流货运车辆挂靠承运合作协议
- 生物制药研发项目知识产权质押融资合同
- 数据中心机房基础设施改造与智能化升级合同
- 矿山设备工业设计专利许可与技术输出合同
- 网红饮品品牌授权与品牌推广合作合同
- 健身俱乐部私教课程全年销售与服务合同
- 繁华街区广告位租赁及品牌合作宣传协议
- 旅游度假区租赁合同(休闲娱乐)
- 新能源汽车电池租赁业务保险理赔操作规范合同
- GB/T 37356-2019色漆和清漆涂层目视评定的光照条件和方法
- GB/T 262-2010石油产品和烃类溶剂苯胺点和混合苯胺点测定法
- GB/T 22720.1-2017旋转电机电压型变频器供电的旋转电机无局部放电(Ⅰ型)电气绝缘结构的鉴别和质量控制试验
- 机柜间主体施工方案
- 福格行为模型
- 银级考试题目p43测试题
- 有限空间作业及应急物资清单
- 思想道德与法治教案第一章:领悟人生真谛把握人生方向
- 0-6岁儿童随访表
- 江西新定额2017土建定额说明及解释
- 国家电网有限公司十八项电网重大反事故措施(修订版)-2018版(word文档良心出品)
评论
0/150
提交评论