zigbee學習之路(七):定時器3(中斷方式)


一.前言

     上次我們學習了了用定時器3進行查詢方式來進行溢出判斷,今天我們來換一種方式,用中斷方式來檢測和查詢定時器3的溢出。

二.原理與分析

      要使用定時器3,我們必須先要配置的是T3CTL,來把定時器3初始化,進行工作模式和頻率的選擇,要使用中斷模式來控制定時器3,我們還要配置中斷的控制寄存器,T3IE和總中斷EA。T3CTL的配置和上次的一樣。

三.程序

 

#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_IO初始化函數

void InitT3(void);              //Timer3中斷方式初始化函數

//由於是中斷函數用到,一定要定義為全局變量

uint count=0;//用於計算溢出中斷的次數

/***************** 函 數 名  : main  功能描述  : Timer3測試(Timer3中斷方式的使用)  輸入參數  : NONE   輸出參數  : NONE  返 回 值  : NONE ******************/

void main(void)

{     

InitLed();  //調用初始化函數    

InitT3();    

while(1)     {     } }

/*********************  函 數 名  : T3_ISR  功能描述  : 中斷服務函數  輸入參數  : NONE   輸出參數  : NONE  返 回 值  : NONE *********************/ #pragma vector = T3_VECTOR  //Timer3中斷向量

 __interrupt void T3_ISR(void)

{     IRCON = 0x00;           //清中斷標志, 也可由硬件自動完成    

if((++count)>254)       //254次中斷后LED取反,閃爍一輪(0.5 秒時間)   

 

  {                

  count = 0;          //計數清零        

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;       //LED1燈熄滅    

LED2 = 1;   

  LED3 = 1; }

/********************  函 數 名  : InitT3  功能描述  : Timer3中斷方式初始化函數  輸入參數  : NONE   輸出參數  : NONE  返 回 值  : NONE *************************/

void InitT3(void)

{        

T3CTL|=0XE0;               //128分頻,    

T3CTL |= 0x08 ;            //開溢出中斷     

T3CTL &= ~0X03;            //自動重裝0x00---0xFF     

T3IE = 1;                  //開Timer3中斷    

EA = 1;                    //開總中斷    

T3CTL |=0X10;              //啟動

}

四.原理與分析

    通過本次實驗,我們應該會用中斷來控制定時器了,通過開總中斷EA和定時器3中斷T3IE來控制定時器3的運行。

 

    


免責聲明!

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



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