概述
CC2530的定时/计数器
CC2530共有5个定时/计数器,其中我们常用的是定时器T1和定时器T3。
:定时器 1 是一个16 位定时器。
:定时器 3 是一个 8 位定时器。
我用思维导图的方式给小伙伴们~
总结了CC2530定时/计数器相关的模式选择,寄存器配置,
使用定时器/计数器的核心思想,以及编程思想。
想详细了解的小伙伴就去看CC2530的数据手册~
话不多说直接上代码~
/* 本次代码实现:
配置定时器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代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复