定時(shí)器中斷原理

定時(shí)器中斷原理

ID:38654493

大小:17.52 KB

頁數(shù):5頁

時(shí)間:2019-06-17

定時(shí)器中斷原理_第1頁
定時(shí)器中斷原理_第2頁
定時(shí)器中斷原理_第3頁
定時(shí)器中斷原理_第4頁
定時(shí)器中斷原理_第5頁
資源描述:

《定時(shí)器中斷原理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、定時(shí)器中斷原理#define_1231_C_#include"reg51.h"?//sbitOE=P2^3;unsignedintSystemTime;voidtimer0(void)interrupt1using3//中斷部分代碼,見下文的釋疑{???TH0=0xdb;???TL0=0xff;//???TF0=0;???SystemTime++;}voidmain(){???TMOD&=0xF0;???TMOD

2、=0x01;//TMOD的值表示定時(shí)器工作方式選擇???TH0=0xdb;//寫入初始值,初始值可以決定定時(shí)多久???TL0=0xff;//根據(jù)下文的木桶比喻的話,如果TH0=0x0

3、0;TL0=0x00;則表示從桶底開始裝水。//TH0=0xdb;TL0=0xff;可以這樣子理解相當(dāng)于木桶里已經(jīng)有部分液鉛在里面,//TH0和TL0這個(gè)兩個(gè)值表示木桶里液鉛的高度,即此時(shí)桶里只能從液鉛的高度以上開始裝水,//TH0=0xff;TL0=0xff;即表示桶的最高位置.???TF0=0;//計(jì)數(shù)到時(shí)TF0為1,即當(dāng)TH0=0xff;TL0=0xff;再運(yùn)行一步TF0=1;???TR0=1;//開始計(jì)數(shù),從這時(shí)起,每運(yùn)行一步TH0和TL0都會(huì)增加,直到TH0=0xff;TL0=0xff;????????????????//相當(dāng)于開水龍頭,如TR0=0則TH0和TL0不變???ET0=

4、1;//允許定時(shí)器0中斷???EA=1;??//開總中斷//下面是個(gè)死循環(huán),程序里每運(yùn)行一步TH0和TL0都會(huì)增加,當(dāng)增加到TH0=0xff;TL0=0xff;//單片機(jī)會(huì)從死循環(huán)里退出,去執(zhí)行中斷部分的代碼,即開始運(yùn)行voidtimer0(void)interrupt1using3{}//運(yùn)行完中斷部分的代碼后,接著繼續(xù)執(zhí)行死循環(huán)里的代碼。//注意:當(dāng)TH0=0xff;TL0=0xff;再運(yùn)行,TF0并沒有從0變?yōu)?,個(gè)人猜測(cè)TF0=1;時(shí)觸發(fā)了中斷,并重新被置零。//如把ET0=1;和EA=1;注釋掉,當(dāng)TH0=0xff;TL0=0xff;再運(yùn)行,TF0會(huì)變?yōu)?,此時(shí)不會(huì)再執(zhí)行中斷部分代碼

5、。???while(1)???{??????if((SystemTime%100)<50)??????//SystemTime除以100,余數(shù)小于50為真??????{??????????…………;??????}??????else??????{????????????…………;??????}???};}釋疑:voidTimer0()interrupt1using1Timer0??是函數(shù)名,隨便取的interrupt??xx??using??y跟在interrupt??后面的xx??值得是中斷號(hào),就是說這個(gè)函數(shù)對(duì)應(yīng)第幾個(gè)中斷端口,一般在51中0??外部中斷0???1??定時(shí)器02??外部中斷1

6、3??定時(shí)器14??串行中斷實(shí)際上編譯的時(shí)候就是把你這個(gè)函數(shù)的入口地址方到這個(gè)對(duì)應(yīng)中斷的跳轉(zhuǎn)地址using??y??這個(gè)y是說這個(gè)中斷函數(shù)使用的那個(gè)寄存器組,51里面一般有4組??r0??--??r7寄存器,一共有32個(gè),如果你的終端函數(shù)和別的程序用的不是同一個(gè)寄存器組則進(jìn)入中斷的時(shí)候就不會(huì)將寄存器組壓入堆棧返回時(shí)也不會(huì)彈出來節(jié)省代碼和時(shí)間初始值算法:定時(shí)器是當(dāng)總數(shù)達(dá)到FFFFH后產(chǎn)生中斷吧!那你要讓它計(jì)數(shù)10000,是不是用FFFF(16進(jìn)制)減去10000(十進(jìn)制)的數(shù)當(dāng)計(jì)數(shù)初值???TH0=-(10000/256);TL0=-(10000%256)跟FFFF(16進(jìn)制)減去10000(十進(jìn)

7、制)的數(shù)是一樣的。從TH0=-(10000/256);TL0=-(10000%256)開始計(jì)數(shù),計(jì)數(shù)到10000剛好滿。跟用FFFF(16進(jìn)制)減去10000(十進(jìn)制)的數(shù)一樣!??!寫起來更簡(jiǎn)單,不用算?。。】纯丛a、補(bǔ)碼就知道。正數(shù)的補(bǔ)碼是對(duì)應(yīng)的二進(jìn)制數(shù),符號(hào)位為零,負(fù)數(shù)的補(bǔ)碼是它的絕對(duì)值對(duì)應(yīng)的二進(jìn)制數(shù)按位取反再加一,符號(hào)位為一。無符號(hào)數(shù)不考慮符號(hào),那么這個(gè)結(jié)果就跟用FFFF減去它的絕對(duì)值一樣我們學(xué)習(xí)了用指令延時(shí)閃燈,但是用指令方式閃燈有cpu不能做其他工作的缺點(diǎn)。這一課,我們將學(xué)習(xí)如何使用定時(shí)器方式使燈閃爍。中斷的理解。這里將涉及到單片機(jī)中斷的應(yīng)用,在cpu的一步步按照指令運(yùn)行的過程中(主

8、程序),可能會(huì)有其它的更緊急的需要做的事情(中斷服務(wù)程序),需要cpu暫時(shí)停止當(dāng)前的程序(主程序),做完了(中斷服務(wù)程序)之后,又可以繼續(xù)去運(yùn)行先前的程序(主程序)。就像你正在吃飯,一邊又在給水桶里放水,吃著吃著,水滿了,你就得趕快去把水龍頭關(guān)掉或者換一個(gè)空的水桶,再回來吃飯。單片機(jī)的定時(shí)器就像是一個(gè)水桶,你讓它啟動(dòng)了,也就是水龍頭打開了;開始裝水了;定時(shí)在每個(gè)機(jī)器周期不斷自動(dòng)加1,最后溢出了;水

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。