信捷精確定時(shí)器et怎么用?
EA是總中斷允許位,EX是外部中斷允許位(EX0,EX1分別指外部中斷INT0,INT1),ET是內(nèi)部定時(shí)器/計(jì)數(shù)器中斷允許位,TR定時(shí)器/計(jì)數(shù)器啟動(dòng)位,它們都是高電平1有效。
TH、TL分別指定時(shí)器/計(jì)數(shù)器的高8位和低8位(后面加0/1表示定時(shí)器/計(jì)數(shù)器0/1,如TH0255表示給定時(shí)器0的高八位賦初值255)。
使用8051定時(shí)器前的初始化步驟?
定時(shí)器/計(jì)數(shù)器的初始化
在使用8051系列單片機(jī)的定時(shí)器/計(jì)數(shù)器前,首先要對(duì)TMOD和TCON寄存器進(jìn)行初始化,同時(shí)還必須計(jì)算定時(shí)的時(shí)間(重點(diǎn))。
(1)確定T/C的工作配置TMOD寄存器。
(2)計(jì)算T/C的計(jì)數(shù)初值,并賦值給TH和TL。
(3)若T/C中斷工作時(shí),必須配置IE寄存器內(nèi)ET0與ET1的值。
(4)啟動(dòng)定時(shí)器/計(jì)數(shù)器。
單片機(jī)用中斷和定時(shí)怎么延時(shí)?
1.軟件延時(shí)
利用多個(gè)指令的執(zhí)行來(lái)延時(shí),累加每個(gè)指令的運(yùn)行時(shí)間,來(lái)計(jì)算出延時(shí)的總時(shí)間。一般寫成一個(gè)延時(shí)函數(shù)。
如,以下是10ms軟件延時(shí)。
delay_10ms(){
intc1000//調(diào)整常數(shù),以達(dá)到要求的延時(shí),但很難!
while(c!0){
c--
}
}
以上函數(shù)被調(diào)用一次,就延時(shí)10ms,多次調(diào)用可以達(dá)到任意更大的時(shí)間要求。
!但是,在延時(shí)時(shí),就其它什么事也做不了了,就是干等啊!
2.硬件延時(shí)
利用定時(shí)器/計(jì)數(shù)器芯片,或用微控制器內(nèi)部的定時(shí)器/計(jì)數(shù)器,實(shí)際上,它就是對(duì)晶振的分頻(分頻系數(shù)可編程設(shè)置),得到一個(gè)精確的低頻的周期信號(hào),用這個(gè)周期信號(hào)(比如10ms)去觸發(fā)中斷,每10ms調(diào)用一次定時(shí)中斷服務(wù)程序。在定時(shí)中斷服務(wù)程序中加入計(jì)數(shù)變量,就可以得到任意的定時(shí)了。
在10ms沒有到時(shí),微控制器可以運(yùn)行其它程序,10ms到時(shí)再自動(dòng)進(jìn)去中斷服務(wù)程序以處理定時(shí)任務(wù),不會(huì)像軟件延時(shí)阻塞了。
3.操作系統(tǒng)中,都有個(gè)硬件延時(shí),和定時(shí)中斷,可以看ucosii中的源碼,節(jié)拍時(shí)鐘,和匯編語(yǔ)言實(shí)現(xiàn)的定時(shí)中斷。
4.硬件延時(shí),要占用一個(gè)定時(shí)器/計(jì)數(shù)器硬件資源。