CC2530之定时器T1

CC2530之定时器T1

在本次学习中,主要通过定时器来控制LED的亮灭。
首先,先查看相关电路图。由图可知,当CC2530端口1的0号引脚输出低电平时,LED1将被点亮。
LED

接下来,先查看与LED(P1_0)配置相关的寄存器。

  1. 端口1功能选择寄存器(P1SEL)。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为普通的I/O口,若设置为1,则将相关引脚设为外设I/O,默认值都为0。
    P1SEL

  2. 端口1方向选择寄存器(P1DIR)。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为输入引脚,若设置为1,则将相关引脚设为输出引脚,默认值都为0。
    P1DIR

  3. 端口1输入模式寄存器(P1INP)。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为上拉/下拉模式,若设置为1,则将相关引脚设为三态模式,其中P1_0和P1_1没有上拉/下拉功能,可以不用配置,默认值都为0。
    P1INP

再来看看与定时器相关的寄存器
1. 定时器1的控制寄存器(T1CTL)_。
该寄存器的bit3和bit2位用来设置分频值
- 00:分频值为1
- 01:分频值为8
- 10:分频值为32
- 11:分频值为128
bit1和bit0位用来设置计数模式
- 00:暂停计数
- 01:自由计数,从0x0000计数到0xFFFF,不断重复计数。
- 10:模计数,从0x0000计数到T1CC0,不断重复计数。
- 11:向上/向下计数,从0x0000计数到T1CC0再从T1CC0计数到0x0000,不断重复。
T1CTL

  1. 定时器1状态标志寄存器(T1STAT)。

    • bit5:定时器1的溢出中断标志
    • bit4:定时器1通道4的中断标志
    • bit3: 定时器1通道3的中断标志
    • bit2:定时器1通道2的中断标志
    • bit1:定时器1通道1的中断标志
    • bit0:定时器1通道0的中断标志
      T1STAT
  2. 中断标志4寄存器(IRCON)。

    • bit1:定时器1中断标志,当中断发生时置为1,当CPU向量指向中断服务例程时置为0
      IRCON
/*设置定时器,当发生溢出中断时,LED进行一次翻转*/
#include <ioCC2530.h>

typedef unsigned char uchar;
typedef unsigned int uint;

#define LED1 P1_0

void LEDInit(void)
{
  P1SEL &= ~0x01;
  P1DIR |= 0x01;
}

void TIM1Init(void)
{
  T1CTL |= 0x0d;//128分频,自由计数模式
}

void main(void)
{
  LEDInit();
  TIM1Init();
  while(1)
  {
    if(IRCON>0)   //是否发生中断
    {
      LED1 = !LED1;
      IRCON = 0;
    }      
  }
}
  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值