文档详情

第二次无线传感器网络实验

天****步
实名认证
店铺
DOCX
17.48KB
约6页
文档ID:291918753
第二次无线传感器网络实验_第1页
1/6

本文格式为Word版,下载可任意编辑第二次无线传感器网络实验 南昌航空大学测验报告 二O 一六 年 四 月 二 日 课程名称: 无线传感器网络 测验名称:CC2530定时器的使用 班级: 姓名: 指导教师评定: 签名: 一、测验目的 1. 通过测验掌管CC2530 芯片GPIO 的配置方法 2. 掌管Led 驱动电路及开关Led 的原理 3. 掌管定时器T1 的配置与使用,通过查询方式操纵LED1周期性闪烁 4. 复习单片机中断的内容,掌管定时器T3(8位)通过中断方式操纵LED1周期性闪烁 二、测验内容 1. 查看数据手册,了解CC2530的定时器,熟谙T1定时器和T3定时器的相 关配置寄放器; 2. 掌管定时器T1的工作方式及配置要求,按照数据手册的内容,对T1 举行配置,按照查询方式使其周期性定时约1秒,以此使LED1间隔1秒闪烁; 3. 掌管定时器T3的工作方式及配置要求,查询手册配置该定时器,使其 工作在中断方式下,操纵LED1每间隔0.5秒闪烁一次。

三、测验相关电路图 由于发光二级管单向导电特性,即只有在正向电压(二极管的正极接正,负极 接负)下才能导通发光P1.0引脚接发光二极管(D1)的负极,所以P1.0引脚输出低电平D1亮,P1.0引脚输出高电平D1熄灭 四、测验过程 一、定时器T1-查询方式 1、LED1灯约1秒周期性闪烁 1)LED1连接P1_0引脚,配置该引脚为输出,下拉电阻方式,初始状态为熄灭; 2)计算定时器一次溢出的时间,系统在不配置工作频率时默认为2分频,即32M/2=16M,128分频时定时时间T=1/(16M/128)*65536=0.524s 3)将LED和定时器初始化之后由主程序的while循环操纵计时器溢出两次(即1秒)LED闪烁一次 2、源代码 #include typedef unsigned char uchar; typedef unsigned int uint; #define LED1 P1_0 // P1.0口操纵LED1 void InitLed(void) { P1DIR |= 0x01; //P1.0定义为输出 P1INP |= 0x01; //开启下拉 LED1 = 1; //使LED1灯上电默认为熄灭 } void InitT1() { T1CTL = 0x0d; //128分频,自动重装 0x0000-0xFFFF T1STAT= 0x21; //通道0,中断有效 } void main(void) { uchar count=0; InitLed(); InitT1(); //调用初始化函数 while(1) { if(IRCON > 0) { IRCON=0; if(count++ >= 1) //约1s周期性闪烁 { count=0; LED1 = !LED1; //LED1闪烁 } } } } 二、定时器T3-中断方式 1、LED1约0.5秒周期性闪烁 1)LED1连接P1_0引脚,配置该引脚为输出,下拉电阻方式,初始状态为熄灭; 2) 配置定时器T3,用128分频,设置定时时间T=1/(16M/128)*65536 =0.524s,开启总中断和T3定时器中断之后启动定时器计时; 3)设计LED1灯在定时器每溢出一次时状态翻转为中断服务,完成周期闪烁。

2、源代码 #include typedef unsigned char uchar; typedef unsigned int uint; #define LED1 P1_0 // P1.0口操纵LED1 uint count; //用于定时器计数 void InitLed(void) { P1DIR |= 0x01; //P1.0定义为输出 LED1 = 1; //使LED1灯上电默认为熄灭 } void InitT3() { T3CTL |= 0x08 ; //开溢出中断 T3IE = 1; //开总中断和T3中断 T3CTL |= 0xE0; //128分频,128/16000000*N=0.5S,N=62500 T3CTL //自动重装 00->0xff 62500/255=245(次) T3CTL |= 0x10; //启动 EA = 1; //开总中断 } //定时器T3中断处理函数 #pragma vector = T3_VECTOR __interrupt void T3_ISR(void) { IRCON = 0x00; //清中断标志, 也可由硬件自动完成 if(count++ > 244) //245次中断后LED取反,约0.5闪烁一次 { //经过示波器测量确保精确 count = 0; //计数清零 LED1 = ~LED1; //变更LED1的状态 } } void main(void) { InitLed(); //设置LED灯相应的IO口 InitT3(); //设置T3相应的寄放器 while(1){}; } 五、测验心得 本次测验主要是通过查询和中断两种方式操纵LED1灯的周期性闪烁,通过 测验稳定了中断的相关学识,掌管了CC2530的定时器两种工作方式下的配置使用方法和基于CC2530的根基应用的开发技能,同时提升了基于硬件编程的才能,进一步熟谙了CC2530的寄放器,对于学习基于ZigBee的应用程序开发有很大扶助。

— 6 —。

下载提示
相似文档
正为您匹配相似的精品文档