藍橋杯微控制器之定時器

2021-10-20 17:48:57 字數 1964 閱讀 5480

ie 中斷允許暫存器

中斷函式示例

時鐘週期: 時鐘頻率的倒數

分頻: 晶振的的頻率會變小,時鐘週期變大

詳情見超聲波模組 利用12分頻(即12t模式) 更方便的計算聲波的傳輸距離。

內部中斷:微控制器內部達到某種情況就觸發中斷(定時)

首先是乙個平時我們寫的函式名再加上乙個中斷號

void

timer0

() interrupt 1

中斷號0 2 4…表示外部中斷

中斷號1 3 5…表示定時器/計數中斷

01表示定時計數器0

23表示定時計數器1

34表示定時計數器2

就照這樣的規律就可以自行推斷出外部or定時/計數器中斷啦

低八位為定時器t0,高八位為定時器t1低八位為定時器t0,高八位為定時器t1

gate:門控制。

當gate=1:intx引腳為高電平且trx 要同時為1,定時器tx才啟動。

當gate=0:只要trx =1,定時器tx就啟動,不用理會intx引腳的電平高低。

c/t:決定是使用 定時功能,還是 計數功能

當c/t=0:定時功能。加1計數器對晶元晶振12分頻的脈衝計數,乙個脈衝過來,就加一,直到 tfx 加滿了溢位。(tfx在tcon暫存器中)

當c/t=1:計數功能。加1計數器對來自輸入引腳t0(p3.4)或t1(p3.5)的外部脈衝進行計數,乙個脈衝加一,直到tfx加滿溢位。

一般採用工作方式1

/*一點心得:

有關計數器0外部脈衝

不可以寫m0 m1 =00(這是定時器的方式)

而要計數(16位) 只能m1 m0 = 0 1(16位不可重裝載模式)

*/點開燒錄軟體,設定成上圖的引數生成**,由於是自動重裝載,所以在終端裡tl0,th0也自動設定了初值,即每1ms進入一次中斷~

void

tm0_isr

() interrupt 1 using 1

if(smg_count--==0

)//1ms * 1000 -> 1s

}

定時器引發中斷函式:

#include

sbit led = p1^0;

int i =0;

void

timer1_init()

//51的工作模式

void

main()

}}void

timer1

() interrupt 3

計數器(外部脈衝一次進入中斷)

由於定時器0的脈衝訊號是在p34管腳,定時器1是在p35管腳接收,寫乙個數碼管顯示1s內接收的脈衝數。

例:注釋:當計ne555發出的脈衝數時,1s內官方給的資料是200-20khz,所以我們設定定時器0為工作方式2,中斷函式的中斷號為2,可以計算16bit的資料最大不超過65535,然後每秒統計signal接收的脈衝數(th0*256+tl0)然後計數器值清0。

調節rb4以此來調節脈衝數~

void

timer0init()

//計數器0初始化

//1s檢測一次

void

ne555()

藍橋杯微控制器03 中斷定時器

上圖即為中斷過程示意圖,產生中斷的請求源被稱為中斷源,中斷源向cpu提出的處理請求被稱為中斷請求或中斷申請。cpu暫時中止當前的事件,轉去處理中斷請求所對應的事件稱為cpu的中斷響應過程,對事件的整個處理過程稱為中斷服務 中斷處理 處理完畢後,返回到原先被中止的地方稱為中斷返回。80c51的終端系統...

51微控制器 定時器

定時 計數器的結構和工作原理 定時 計數器的實質是加1計數器 16位 由高8位和低8位兩個暫存器組成。80c51 微控制器定時 計數器的工作是由兩個特殊功能暫存器控制的。tmod是定時 計數器的工 作方式暫存器,確定工作方式和功能,低四位用於t0,高四位用於t1。t con是控制寄 存器,控制t0和...

51微控制器 定時器

標準的51微控制器內部有t0和t1兩個定時器。定時器的計數值儲存在暫存器中。th0 tl0用於t0,th1 tl1用於t1.定時器儲存暫存器 名稱描述 sfr位址 復位值th0 t0高位元組 0x8c 0x00 tl0t0低位元組 0x8a 0x00 th1t1高位元組 0x8d 0x00 tl1t...