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

2022-05-03 17:39:08 字數 1949 閱讀 9147

一.前言

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

二.原理分析

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

三.程式

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

/*************************  函 數 名  : 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)

四.總結與分析

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

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 中斷向...