实验19pwm呼吸灯基于timer1_第1页
实验19pwm呼吸灯基于timer1_第2页
实验19pwm呼吸灯基于timer1_第3页
实验19pwm呼吸灯基于timer1_第4页
实验19pwm呼吸灯基于timer1_第5页
已阅读5页,还剩3页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、无锡谷雨电子实验五呼吸灯(基于 Timer1)实验2014/1/27在此处键入文档的摘要。摘要通常是对文档内容的简短总结。在此处键入文档的摘要。摘要通常是对文档内容的简短总结。http目录前言2必要条件2原理图2编程参考2源码分析46 编译调试67 使用 Flash Programmer程序61http1 前言是在的基础上,调整高低电平的时间比例,经典应用就是用来调节灯光亮度,本实验就利用信号来控制 LED 等的亮度。2 必要条件A 硬件1、 SmartRF 系列开发板,CC2530 或者 CC2531 2、 CC-Debugger 仿真器B1、 IAR for 8051 开发环境,版本:8.

2、102、 Flash Programmer 固件烧写。3 原理图当 P1.0是 LED1 亮,低电平是LED1 灭;4 编程参考Timer1 定时器需要配置三个寄存器 T1CTL、T1S、IRCON2http宏定义函数 BV()。 #define BV(x)1x;/将 1每个位。x 位,这样可以非常方便而且非常清晰的控制寄存器的/设置端口为输出P1DIR|= BV(0)|BV(1);/设置端口为外设端口,非 gpioP1SEL|= BV(0)|BV(1);/由于 uart 等会占用去。当前使用的端口,因此需要将 uart 等重到别的端口PERCFG |= 0 x40;/ Move USART1

3、&2 to alternate2 location sot T1 is visible/ Initialize Timer 1T1CTL = 0 x0C; T1CCTL1 = 0 x0C; T1CCTL2 = 0 x0C; T1CCTL3 = 0 x0C;TL = 0;/ Div = 128, CLR, MODE = Suspended/ IM = 0; CMP = Clear output on compare; Mode = Compare/ IM = 0; CMP = Clear output on compare; Mode = Compare/ IM = 0, CMP = Clear

4、 output on compare; Mode = Compare/ Reset timer to 0;3http5 源码分析#include #include .h/P0.0/P0.1pins:uu u16 gRed;16 gGreen;16 gBlue;void/设置_init()端口为输出P1DIR|= BV(0)|BV(1);/设置端口为外设端口,非 gpioP1SEL|= BV(0)|BV(1);/由于 uart 等会占用口去。PERCFG |= 0 x40;visible当前使用的端口,因此需要将 uart 等重到别的端/ Move USART1&2 to alternate2

5、location sot T1 is/ Initialize Timer 1T1CTL = 0 x0C; T1CCTL1 = 0 x0C;CompareT1CCTL2 = 0 x0C;CompareT1CCTL3 = 0 x0C;CompareTL = 0;/ Div = 128, CLR, MODE = Suspended/ IM = 0; CMP = Clear output on compare; Mode =/ IM = 0; CMP = Clear output on compare; Mode =/ IM = 0, CMP = Clear output on compare; Mo

6、de =/ Reset timer to 0;T1CCTL0 = 0 x4C;T1CC0H = 0 x01; T1CC0L = 0 x77;T1CC1H = 0 x01;T1CC1L = 0 x77; T1CC2H = 0 x01; T1CC2L = 0 x77;4httpT1CC3H = 0 x01;T1CC3L = 0 x77;EA=1;IEN1 |= 0 x02;/ Enable T1 cpuerruptvoidPulse(u16 red, u16 green, u16 blue)u16 r,g,b;/ stop,注意,不能加这句,加了周期偏差十几倍,具体原因未查明/T1CTL &= B

7、V(0)|BV(1);#if 0r=375; g=1; b=1;#elser=red; g=green; b=blue;#endif/ Set up the timer registersT1CC1L = (uT1CC1H = (u T1CC2L = (u T1CC2H = (u T1CC3L = (u T1CC3H = (u8)r;8)(r 8);8)g;8)(g 8);8)b;8)(b 8);/ Reset timerTL = 0;/ Start timerT1CTL |= 0 x02;odulo mode.void setRGB(u16 red, u16 green, ugRed=red; gGreen=green;16 blue)5httpgBlue=blue;/#pragma register_b=2#pragma vector = T1_VECTOR errupt voidu8 flags = T1S/ T1 ch 0if (flags & 0 x01)ISR (void) ;Pulse(gRed,gGreen,gBlue);T1S= flags;6 编译调试根据实验 1 中的方法调试程序,若有语法错误,根据提示修改语句。程序灯。不少后可以看到 LED1 和 LED2 逐渐

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论