×
单片机 > 单片机程序设计 > 详情

cc2530裸机编程系列笔记3--定时器Timer1自由模式程序

发布时间:2020-09-03 发布时间:
|

定时器1是一个16 位定时器,具有定时器/计数器/脉宽调制功能。它有3 个单独可编程 输入捕获/输出比较信道,每一个信道都可以用来当做PWM 输出或用来捕获输入信号的边沿时间(关于什么是输入捕获/输出比较,以及如何实现PWM 输出,读者可自行查阅CC2530 中文手册)。定时器有一个很重要的概念:操作模式。操作模式包含:自由运行模式(free-running)、模模式(modulo)和 正计数/倒计数模式(up-down)。对定时器Timer1进行自由模式程序的设计如下:


#include

#define uint unsigned int

#define uchar unsigned char

#define RLED P1_0

#define YLED P1_1

uint counter=0; //统计溢出次数

uint TempFlag; //用来标志是否要闪烁

void Initial(void);

void Delay(uint);

/****************************

//普通延时程序

***************************/

void Delay(uint n)

{

uchar i;

while(n--)

{

for(i=200;i>0;i--);

}

}

/****************************

//初始化程序

***************************/

void Initial(void)

{

//初始化P1

P1DIR = 0x03; //P10 P11 为输出

RLED = 1;

YLED = 1; //灭LED

T1CTL = 0x05; //00001101 8 分频 自动重装

}

/***************************

//主函数

***************************/

void main(void)

{

static unsigned char cnt = 0;

Initial(); //调用初始化函数

RLED = 0; //点亮红色LED

while(1) //查询溢出

{

if(IRCON > 0)

{

IRCON = 0; //清溢出标志

cnt++;

if(cnt == 15)

{

cnt = 0;

RLED = !RLED;

}

}

}

}

      本程序用到的主要寄存器有:T1CTL、IRCON。T1CTL寄存器设定的值为0x05,查手册可知,该寄存器将分频配置为8分频即f/8,模式设置为了自由模式及Free-running,计数值将从0x0000-0xFFFF进行计数。IRCON中的第二位为定时器1的中断标志位。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
用Atmega 16单片机驱动字符型液晶显示芯片