zigbee學習之路(八):定時器1(中斷)


一.前言

    通過上次的實驗,我們已經學會了定時器3的中斷方式,這次,我們來看看定時器1通過中斷怎么控制。

二.原理分析

    定時器1的初始化跟前面提到的一樣,也是要配置寄存器T1CTL,還要進行開中斷的操作,由T1IE和EA控制。

三.程序

   

#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 InitT1(void);              //Timer1中斷方式初始化函數

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

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

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

void main(void)

{     

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

InitT1();    

while(1)   

  {     }

}

/**************  函 數 名  : T1_ISR  功能描述  : 中斷服務函數  輸入參數  : NONE   輸出參數  : NONE  返 回 值  : NONE *****************/

#pragma vector = T1_VECTOR  //Timer1中斷向量

 __interrupt void T1_ISR(void)

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

if((++count)==1)        //1次中斷后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 |= 0x13;  //P1_0、P1_1、P1_4義為輸出    

LED1 = 1;       //LED1燈熄滅    

LED2 = 1;       //LED2燈熄滅    

LED3 = 1;       //LED3燈熄滅

}

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

void InitT1(void)

{         T1CTL|=0X0d;               //128分頻,自由運行模式    

T1IE = 1;                  //開Timer1中斷    

EA = 1;                    //開總中斷 }

四.總結與分析

   程序的功能與之前一樣,就是讓led閃爍,目的只是熟悉定時器的使用,大家要注意區分的是定時器1和2都是16位的,而3和4都是8位的。至此為止,定時器所進行和了解的差不多了,下一節,我們主要開始學習串口。


免責聲明!

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



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