zigbee學習之路(五):定時器1(查詢方式)


一.前言

     今天,我們來學習幾乎所有單片機都有的功能,定時器的使用,定時器對單片機來說是相當重要的,有了它,單片機就可以進行一些復雜的工作。

二.原理與分析

    談到定時器的控制,我們最先想到的是要給它賦初值和選擇工作模式吧,下面我帶大家熟悉一下cc2530中的定時器寄存器。

如上圖所見,DIV寄存器用來確定定時器運行一次所需的時間,MODE用來選擇定時器的工作模式。

定時器中斷的標志位,有中斷發生時,置為1

三.程序

#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這個寄存器,主函數里通過它來判斷定時器是否溢出。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM