概述
1、cc2530有两个LED灯:
定时器有4种工作方式;
可通过定时器 T1 以及 定时器 T3同时来分别控制LED灯的闪烁,我们让定时器1处于8分频的自由模式下,T1 为16位的计数器,计数器每8/(30*1000000)的值加1,在自由模式下计数器计数到0xffff发生溢出中断的时间为0.16秒。而T3为8位的计数器,在自由模式下计数器计数到0xffff发生溢出中断的时间为0.000 064秒。
代码如下:
#include <ioCC2530.h> #define led2 P0_1 #define led3 P0_4 int counter=0;//定时器1的溢出次数 int counter1=0;//定时器3的溢出次数 //led初始化 void LED_Init() { P0SEL &=~0X12; P0DIR |=0X12; } void Init_T1() { CLKCONCMD &=~0X7F;//晶振设置为32MHz while (CLKCONSTA &=0X40);//等待晶振稳定 EA=1;//打开中断 T1IE=1;//开T1溢出中断 T1CTL=0X05;//设置预分频系数为8 } void Init_T3() { CLKCONCMD &=~0X7F;//晶振设置为32MHz while (CLKCONSTA &=0X40);//等待晶振稳定 EA=1;//打开中断 T3IE=1; T3CTL=0X7c; } void main() { LED_Init(); Init_T1(); Init_T3(); led2=0; led3=0; while(1) { } } #pragma vector =T1_VECTOR __interrupt void T1_ISR(void) { IRCON = 0X00;//清除中断标志位 if(counter<300) { counter++; } else { counter=0; led2=!led2; } } #pragma vector =T3_VECTOR __interrupt void T3_ISR(void) { IRCON = 0X00;//清除中断标志位 if(counter1<300) { counter1++; } else { counter1=0; led3=!led3; } }
最后
以上就是欢喜小土豆为你收集整理的cc2530 定时器控制LED灯以不同的频率闪烁的全部内容,希望文章能够帮你解决cc2530 定时器控制LED灯以不同的频率闪烁所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复