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

2022-05-03 17:39:09 字數 2182 閱讀 9941

一.前言

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

二.原理與分析

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

三.程式

#include

#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)

/************************  函 數 名  : 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的執行。

zigbee學習之定時器

以下是我自己的總結,我不會分析 簡單講起來沒有好大意思,主要是抓住核心知識框架。脈衝 32mhz就是一秒鐘32000000個脈衝 時鐘週期 1 f 1 32us 指令週期等於時鐘週期 在51中是機械週期 12 時鐘週期 內部是16mhz,定時器內部乙個脈衝,定時器計數就加一 定時器 1 查詢法 t1...

zigbee學習之睡眠定時器

睡眠定時器 void initsleeptimer void void syspowermode uchar mode 設定系統睡眠模式 mode等於0為pm0 1為pm1 2為pm2 3為pm3 else pcon 0x00 通過中斷喚醒系統 pragma vector st vector 中斷向...

zigbee學習之睡眠定時器

睡眠定時器 void initsleeptimer void void syspowermode uchar mode 設定系統睡眠模式 mode等於0為pm0 1為pm1 2為pm2 3為pm3 else pcon 0x00 通過中斷喚醒系統 pragma vector st vector 中斷向...