編輯
定時器中斷是由微控制器中的定時器溢位而申請的中斷。
51微控制器中有兩個定時器t0和t1:
tf0:定時器t0溢位中斷請求。當定時器to產生溢位時,to中斷請求標誌tf0置1,請求中斷處理。
tf1:定時器t1溢位中斷請求。當定時器tl產生溢位時,t1中斷請求標誌tf1置1,請求中斷處理。
stm32共有11個定時器:
1.兩個高階定時器:tim1、tim8-------------------------apb2
2.四個通用定時器:tim2~tim5-------------------------apb1
3.兩個基本定時器:tim6、tim7-------------------------apb1
4.兩個看門狗
5.乙個系統嘀嗒定時器(systick)
編輯定時/計數器t0和t1分別是由兩個8位的專用暫存器組成,即定時/計數器t0由th0和tl0組成,t1由th1和tl1組成。此外,其內部還有2個8位的特殊功能暫存器tmod和tcon,tmod負責控制和確定t0和t1的功能和工作模式,tcon用來控制t0和t1啟動或停止計數,同時包含定時/計數器的狀態。 [1]
tf1:定時器1溢位標誌。定時/計數器溢位時由硬體置位。中斷處理時由硬體清除。或用軟體清除。
tf0:定時器0溢位標誌。定時/計數器溢位時由硬體置位。中斷處理時由硬體清除,或用軟體清除。
編輯定時器工作的流程可以按照這個順序(以51為例用定時器0方式一產生10毫秒的定時)
1、確定使用哪個定時器,使用哪種方式,這一步通過tmod設定,tmod的低四位是設定定時器0的,高四位是用來設定定時器1的,其中的m0,m1是用來設定定時器工作在哪種方式,gate一般用不要設定,c/t是選擇計數模式還是定時模式的,如:tmod = 0x01,就說明定時器0工作在方式1。
2、接下來就要設定定時的時間,用定時器定時50毫秒,可以用這種方式th0 = (65535 - 10000) / 256,tl0 = (65535 - 10000) % 256;可以這樣理解:因為這是定時器的初值,也就是說計數脈衝就是在這個數的基礎上向上遞增,到達65535後就溢位產生中斷。
3、第三步開啟中斷,使用ie暫存器,首先開啟總中斷ea = 1,這一步是所有中斷所必須的,然後開啟定時器0中斷,et0 =1。
4、這時準備工作結束,啟動定時器,使用tcon暫存器,tr0 = 1,實現了乙個10毫秒的定時。
**如下:
#include
#define dataport p1 // 巨集定義,如果換介面,需要修改這裡
sbit seg_latch = p2^2; //段鎖存
sbit bit_latch = p2^3; //位鎖存
unsigned char code seg_code = ; //段碼
unsigned char code bit_code = ; //位碼
void display(unsigned char m,unsigned char num,unsigned int n);
static unsigned int n = 0;
static unsigned int x = 0;
static unsigned int y = 0;
int main(void)
}void t0_isr(void) interrupt 1
else
else}}
ea = 1;
}void display(unsigned char m,unsigned char num,unsigned int i) //m表示從第幾個數碼管開始,num表示到第num個數碼管,i表示需要顯示的數字
else
}}
微控制器定時器學習彙總
1時鐘週期 1 晶振頻率m 1機器週期 12 51系列12t,若1t則為1 x時鐘週期 12 1 x 1 晶振頻率m 1 us 1 12 us 1us機器週期脈衝數 晶振頻率f 12 假設12mhz晶振工作在51微控制器12t模式下,需要使用定時器進行50ms定時操作,定時器工作在方式1 12m的晶...
51微控制器用定時器0實現流水燈
51微控制器用定時器0實現流水燈的 如下,用p1口接led燈,如下都有注釋就不具體解釋了,英語不怎麼好,有的地方將就一下嘍,本次主要講一下p1口怎麼賦值。原先寫的都是用查表來移位的,個人感覺不怎麼好,麻煩。直接用位運算的比較好。n初始值為0,然後n每次迴圈都加1,p1口賦值語句為 p1 0x01 n...
51微控制器 定時器
定時 計數器的結構和工作原理 定時 計數器的實質是加1計數器 16位 由高8位和低8位兩個暫存器組成。80c51 微控制器定時 計數器的工作是由兩個特殊功能暫存器控制的。tmod是定時 計數器的工 作方式暫存器,確定工作方式和功能,低四位用於t0,高四位用於t1。t con是控制寄 存器,控制t0和...