一.前言函數
今天,咱們來學習幾乎全部單片機都有的功能,定時器的使用,定時器對單片機來講是至關重要的,有了它,單片機就能夠進行一些複雜的工做。學習
二.原理與分析測試
談到定時器的控制,咱們最早想到的是要給它賦初值和選擇工做模式吧,下面我帶你們熟悉一下cc2530中的定時器寄存器。ui
如上圖所見,DIV寄存器用來肯定定時器運行一次所需的時間,MODE用來選擇定時器的工做模式。blog
定時器中斷的標誌位,有中斷髮生時,置爲1it
三.程序io
#include <ioCC2530.h>原理
#define uint unsigned int定時器
#define uchar unsigned char程序
//定義控制LED燈的端口
#define LED1 P1_0 //LED1爲P1_0端口控制
#define LED2 P1_1 //LED2爲P1_1端口控制
#define LED3 P1_4 //LED3爲P1_4端口控制
//函數聲明
void Delayms(uint xms); //延時函數
void InitLed(void); //初始化LED端口
void InitT1(void); //初始化定時器T1
/********* 函 數 名 : main 功能描述 : Timer1測試(Timer1查詢方式的使用) 輸入參數 : NONE 輸出參數 : NONE 返 回 值 : NONE ***************/
void main(void)
{ uchar count=0;
InitLed(); //LED1_IO初始化
InitT1(); //Timer1初始化
while(1)
{
if(IRCON>0) //查詢溢出標誌
{ IRCON=0;
if((++count)==1) //溢出一次約爲0.5s
{ count=0;
LED1 = !LED1; //LED1取反
LED2 = !LED2;
LED3 = !LED3; }
} } }
/********** 函 數 名 : Delayms 功能描述 : 毫秒延時 輸入參數 : xms:延時時間,如 i=xms 即延時i毫秒 輸出參數 : none 返 回 值 : none ******************/
void Delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=587;j>0;j--); }
/************************ 函 數 名 : InitLed 功能描述 : LED_IO初始化函數 輸入參數 : NONE 輸出參數 : NONE 返 回 值 : NONE *****************/ void InitLed(void)
{ P1DIR |= 0xff; //P1端口定義爲輸出
LED1 = 1; //LED燈初始化熄滅
LED2 = 1;
LED3 = 1; }
/************ 函 數 名 : InitT1 功能描述 : Timer1初始化函數 輸入參數 : NONE 輸出參數 : NONE 返 回 值 : NONE **************/
void InitT1(void)
{ T1CTL = 0x0d; //128分頻;
自由運行,從0x0000到0xFFFF反覆計數 }
四.總結
經過本次實驗,相信你們已經基本瞭解定時器1的使用了,須要注意的是IRCON這個寄存器,主函數裏經過它來判判定時器是否溢出。