我是靠谱客的博主 危机口红,这篇文章主要介绍ZigBee入门-CC2530-实验(三)-(定时/计数)器控制LED代码,现在分享给大家,希望可以做个参考。

CC2530的定时/计数器

CC2530共有5个定时/计数器,其中我们常用的是定时器T1和定时器T3。
:定时器 1 是一个16 位定时器。
:定时器 3 是一个 8 位定时器。

复制代码
1
2
3
4
5
6
我用思维导图的方式给小伙伴们~ 总结了CC2530定时/计数器相关的模式选择,寄存器配置, 使用定时器/计数器的核心思想,以及编程思想。 想详细了解的小伙伴就去看CC2530的数据手册~ 话不多说直接上代码~
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/* 本次代码实现: 配置定时器T1,采用定时器中断的方式 每间隔0.5s的时间LED1状态改变一次, 每间隔1s的时间LED2改变一次状态*/ #include <ioCC2530.h> #define uchar unsigned char //宏定义uchar为unsigned char #define uint unsigned int //宏定义uint为unsigned int #define OFF 1 //LED熄灭状态 #define LED1 P1_0 //定义P1.0口为LED1控制端 #define LED2 P1_4 //定义P1.4口为LED2控制端 uchar count = 0; //定时计数 void Init_LED(); //声明LED初始化函数 void Init_Timer1(); //声明定时器T1初始化函数 /*===================主程序入口====================*/ void main(void) { Init_LED(); Init_Timer1(); while(1) { if(count0 == 5) //定时到0.5s { LED1 = ~LED1; //LED1闪烁 count0 = 0; //定时计数0清零 } if(count1 == 10) //定时到1s { LED2 = ~LED2; //LED1闪烁 count1 = 0; //定时计数1清零 } } } /*==================LED初始化函数==================*/ void Init_LED() { P1SEL &= ~0X11; //将P1_0和P1_4设置为通用I/O端口 P1DIR |= 0X11; //将P1_0和P1_4的端口设置为输出 LED1 = OFF; LED2 = OFF; //初始化LED1~2为熄灭状态 } /*===============定时器1初始化函数==================*/ void Init_Timer1() { T1CC0L = 0xd4; //定时初值低8位 T1CC0H = 0x30; //定时初值高8位 定时:0.1s T1CCTL0 |= 0x40; //开启通道0的输出比较模式 T1IE = 1; //开启定时器1中断 T1OVFIM = 1; //开启定时器1溢出中断 EA = 1; //开启总中断 T1CTL =0X0E; //128分频,模模式,开启定时 } /*================定时器1中断服务函数================*/ #pragma vector = T1_VECTOR __interrupt void Time1_ISR() { T1STAT &= ~0x01; //清除定时器1通道0的中断标志 count0++; //定时计数0+1 count1++; //定时计数1+1 }

最后

以上就是危机口红最近收集整理的关于ZigBee入门-CC2530-实验(三)-(定时/计数)器控制LED代码的全部内容,更多相关ZigBee入门-CC2530-实验(三)-(定时/计数)器控制LED代码内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(102)

评论列表共有 0 条评论

立即
投稿
返回
顶部