ZigBee入门-CC2530-实验(三)-(定时/计数)器控制LED代码

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
}
原创文章 13 获赞 10 访问量 549

猜你喜欢

转载自blog.csdn.net/weixin_45636395/article/details/105774289