




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
定時(shí)單片機(jī)_匯編第1頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月模式2及應(yīng)用模式2結(jié)構(gòu)——8位計(jì)數(shù)器第2頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
TL0計(jì)數(shù)溢出時(shí),不僅使溢出中斷標(biāo)志位TF0置1,而且還自動(dòng)把TH0中的內(nèi)容重新裝載到TL0中。這里,16位計(jì)數(shù)器被拆成二個(gè),TL0用作8位計(jì)數(shù)器,TH0用以保護(hù)初值。
在程序初始化時(shí),TL0和TH0由軟件賦予相同的初值。一旦TL0計(jì)數(shù)溢出,便置位TF0,并將TH0中的初值再自動(dòng)裝入TL0,繼續(xù)計(jì)數(shù),循環(huán)重復(fù)。用于定時(shí)工作模式時(shí),其定時(shí)時(shí)間(TF0溢出周期)為
t=(28-TH0初值)×振蕩周期×12
用于計(jì)數(shù)工作方式時(shí),最大計(jì)數(shù)長(zhǎng)度(TH0初值=0)為28=256(個(gè)外部脈沖)。
這種工作模式可省去用戶軟件中重裝常數(shù)的語(yǔ)句,并可產(chǎn)生相當(dāng)精確的定時(shí)時(shí)間,特別適于串行口波特率發(fā)生器。第3頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月在某啤酒自動(dòng)生產(chǎn)線上,需要每生產(chǎn)10瓶執(zhí)行裝箱操作,將生產(chǎn)出的啤酒自動(dòng)裝箱。試用MCS-51單片機(jī)的計(jì)數(shù)器實(shí)現(xiàn)該控制要求。解:如果在啤酒生產(chǎn)線上裝有傳感裝置,每檢測(cè)到一瓶啤酒經(jīng)過(guò)就向單片機(jī)發(fā)送一個(gè)脈沖信號(hào),這樣使用計(jì)數(shù)功能就可實(shí)現(xiàn)。設(shè)用T0的工作方式2來(lái)完成該題目。
MOVTMOD,#06H;00000110B,T0采用方式2計(jì)數(shù)
MOVTL0,#0F6H;裝入初值
MOVTH0,#0F6HMOVIE,#00H;禁止中斷
SETBTR0;啟動(dòng)定時(shí)T0,開(kāi)始計(jì)數(shù)
LOOP:JBCTF0,LOOP1 AJMPLOOPLOOP1:(驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng))
AJMPLOOP
第4頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
例:當(dāng)P3.4引腳上的電平發(fā)生負(fù)跳變時(shí),從P1.0輸出一個(gè)500μs的同步脈沖。請(qǐng)編程實(shí)現(xiàn)該功能。
解:⑴模式選擇
首先選T0為模式2,外部事件計(jì)數(shù)方式。當(dāng)P3.4引腳上的電平發(fā)生負(fù)跳變時(shí),T0計(jì)數(shù)器加1,溢出標(biāo)志TF0置1;然后改變T0為500μs定時(shí)工作方式,并使P1.0輸出由1變?yōu)?。T0定時(shí)到產(chǎn)生溢出,使P1.0引腳恢復(fù)輸出高電平,T0又恢復(fù)外部事件方式。
第5頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
⑵計(jì)數(shù)初值
T0工作在外部事件計(jì)數(shù)方式,當(dāng)計(jì)數(shù)到28時(shí),再加1計(jì)數(shù)器就會(huì)溢出。設(shè)計(jì)數(shù)初值為X,當(dāng)再出現(xiàn)一次外部事件時(shí),計(jì)數(shù)器溢出。則X+1=28
X=28-1=11111111B=0FFHT0工作在定時(shí)方式時(shí),設(shè)晶振頻率為6MHz,500s相當(dāng)于250個(gè)機(jī)器周期。因此,初值X為(28-X)×2μs=500μsX=28-250=6=06H第6頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月⑶程序清單
START:MOVTMOD,#06H;設(shè)置T0為模式2。外部計(jì)數(shù)方式
MOVTH0,#0FFH;T0計(jì)數(shù)器初值
MOVTL0,#0FFHSETBTR0;啟動(dòng)T0計(jì)數(shù)
LOOP1:JBCTF0,PTFO1;查詢T0溢出標(biāo)志,TF0=1時(shí)轉(zhuǎn)移
TF0=0(即查P3.4負(fù)跳變)
SJMPLOOP1PTFO1:CLRTR0;停止計(jì)數(shù)
MOVTMOD,#02H;設(shè)置T0為模式2,定時(shí)方式
MOVTH0,#06H;T0定時(shí)500us初值
MOVTL0,#06H
CLRP1.0;P1.0清0
SETBTR0;啟動(dòng)定時(shí)500us第7頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
LOOP2:JBCTF0,PTFO2;查詢溢出標(biāo)志,定時(shí)到TF0=1轉(zhuǎn)移,且TF0=0(第一個(gè)500us到否?)SJMPLOOP2PTFO2:SETBP1.0;P1.0置1(到了第一個(gè)500us)
CLRTR0;停止計(jì)數(shù)
SJMPSTART第8頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
例:利用定時(shí)器T1的模式2對(duì)外部信號(hào)計(jì)數(shù)。要求每計(jì)滿100次,將P1.0端取反。解:(1)選擇模式
(2)計(jì)算T1的計(jì)數(shù)初值
X=28-100=156D=9CH
因此,TL1的初值為9CH,重裝初值寄存器TH1=9CH外部信號(hào)由T1(P3.5)引腳輸入,每發(fā)生一次負(fù)跳變計(jì)數(shù)器加1,每輸入100個(gè)脈沖,計(jì)數(shù)器發(fā)生溢出中斷,中斷服務(wù)器將P1.0取反一次。
T1計(jì)數(shù)工作方式模式2的模式字為TMOD=60H。T0不用時(shí),TMOD的低4位可任取,但不能使T0進(jìn)入模式3,一般取0。第9頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
(3)程序清單
MAIN:MOVTMOD,#60H;置T1為模式2計(jì)數(shù)工作方式
MOVTL1,#9CH;賦初值
MOVTH1,#9CHMOVIE,#88H;定時(shí)器T1開(kāi)中斷
SETBTR1;啟動(dòng)計(jì)數(shù)器
HERE:SJMPHERE;等待中斷
ORG001BH;中斷服務(wù)程序入口
CPLP1.0RETI第10頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月模式3及應(yīng)用
工作模式3對(duì)T0和T1大不相同。若將T0設(shè)置為模式3,TL0和TH0被分成為兩個(gè)相互獨(dú)立的8位計(jì)數(shù)器,如圖所示。圖T0模式3結(jié)構(gòu):分成二個(gè)8位計(jì)數(shù)器第11頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
TL0使用T0的各控制位、引腳和中斷源,其操作模式和模式0、1相同。
TH0用于簡(jiǎn)單的內(nèi)部定時(shí),它占用定時(shí)器T1的控制位TR1和TF1,其啟動(dòng)和關(guān)閉僅受TR1的控制。
注意問(wèn)題:
TH0僅占用T1的與中斷有關(guān)的IE中的位,但并未占用TMOD中的位,TMOD中的T1的控制位仍然由T1使用。
定時(shí)器T1無(wú)工作模式3,若T1設(shè)置為模式3,就會(huì)使T1立即停止計(jì)數(shù)。第12頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
在定時(shí)器T0用作模式3時(shí),T1仍可設(shè)置為模式0~2,見(jiàn)圖(a)和(b)。由于TR1和TF1被定時(shí)器T0占用,計(jì)數(shù)器開(kāi)關(guān)K已被接通,此時(shí),僅用T1控制位C/T切換其定時(shí)器或計(jì)數(shù)器工作方式就可使T1運(yùn)行。寄存器(8位、13位或16位)溢出時(shí),只能將輸出送入串行口或用于不需要中斷的場(chǎng)合。一般情況下,當(dāng)定時(shí)器T1用作串行口波特率發(fā)生器時(shí),定時(shí)器T0才設(shè)置為工作模式3。此時(shí),常把定時(shí)器T1設(shè)置為模式2,用作波特率發(fā)生器,見(jiàn)圖(b)。第13頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月定時(shí)器控制位(TMOD)啟動(dòng)方式計(jì)數(shù)脈沖引腳定時(shí)/計(jì)數(shù)中斷源TL0模式3GATEC/TM1M0TF0(TCON)TR0=1P3.4定時(shí)/計(jì)數(shù)T0000BHET0(IE)TH0模式3TF1(TCON)TR1=1定時(shí)T1001BHET1(IE)T1模式0-2GATEC/TM1M0C/T切換P3.5定時(shí)/計(jì)數(shù)無(wú)第14頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
例:設(shè)某用戶系統(tǒng)中已使用了兩個(gè)外部中斷源,并置定時(shí)器T1工作模式2,做串行口波特率發(fā)生器用。現(xiàn)要求再增加一個(gè)外部中斷源,并由P1.0引腳輸出一個(gè)5KHz的方波。fosc=12MHz。
解:為了不增加其它硬件開(kāi)銷,可設(shè)置T0工作模式3計(jì)數(shù)方式,把T0的引腳作附加的外部中斷輸入端,TL0的計(jì)數(shù)初值為FFH,當(dāng)檢測(cè)到T0引腳電平出現(xiàn)由1至0的負(fù)跳變時(shí),TL0產(chǎn)生溢出,申請(qǐng)中斷。這相當(dāng)于邊沿觸發(fā)的外部中斷源。
T0模式3下,TL0作計(jì)數(shù)用,而TH0可用作8位的定時(shí)器,定時(shí)控制P1.0引腳輸出5KHz的方波信號(hào)。
TL0的計(jì)數(shù)初值為FFH,TH0的計(jì)數(shù)初值X計(jì)算如下:∵P1.0的方波頻率為5KHz,故周期
T=1/(5KHz)=0.2ms=200us∴用TH0定時(shí)100us時(shí),X=256-100×12/12=156第15頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月定時(shí)器定時(shí)/計(jì)數(shù)功能TL0模式3計(jì)數(shù)檢測(cè)T0引腳負(fù)跳變TH0模式3定時(shí)8位產(chǎn)生5KHz的方波信號(hào)T1模式2定時(shí)8位串行口波特率發(fā)生器第16頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月程序如下:
MOVTMOD,#27H
;T0為模式3,計(jì)數(shù)方式;T1為模式2,定時(shí)方式
00100111BMOVTL0,#0FFH
;置TL0計(jì)數(shù)初值
MOVTH0,#156;置TH0計(jì)數(shù)初值
MOVTH1,#data;data是根據(jù)波特率要求
設(shè)置的常數(shù)(即初值)
MOVTL1,#dataMOVTCON,#55H;外中斷0,外中斷1邊沿觸發(fā),
啟動(dòng)T0,T101010101BMOVIE,#9FH;開(kāi)放全部中斷
┇
第17頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
TL0溢出中斷服務(wù)程序(由000BH轉(zhuǎn)來(lái))TL0INT:MOVTL0,#0FFH;TL0重賦初值(中斷處理)
RETITH0溢出中斷服務(wù)程序(由001BH轉(zhuǎn)來(lái))TH0INT:MOVTH0,#156;TH0重賦初值
CPLP1.0;P1.0取反輸出
RETI
串行口及外部中斷0,外中斷1的服務(wù)程序在此不再一一列出。第18頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
綜合應(yīng)用舉例
例:設(shè)時(shí)鐘頻率為6MHz。試編寫利用T0產(chǎn)生1s定時(shí)的程序。
解:⑴定時(shí)器T0工作模式的確定
因定時(shí)時(shí)間較長(zhǎng),采用哪一種工作模式合適呢?可以算出:模式0最長(zhǎng)可定時(shí)16.384ms;模式1最長(zhǎng)可定時(shí)131.072ms;模式2最長(zhǎng)可定時(shí)512μs。題中要求定時(shí)1s,可選模式1,每隔100ms中斷一次,中斷10次為1s。
⑵求計(jì)數(shù)值X
∴X=15536=3CB0H因此,(TL0)=0B0H,(TH0)=3CH。第19頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月⑶實(shí)現(xiàn)方法
對(duì)于中斷10次計(jì)數(shù),可使T0工作在計(jì)數(shù)方式,也可用循環(huán)程序的方法實(shí)現(xiàn)。⑷源程序清單
ORG0000HLJMPMAIN;上電,轉(zhuǎn)向主程序
ORG000BH;T0的中斷入口地址
AJMPSERVE;轉(zhuǎn)向中斷服務(wù)程序
ORG2000H;主程序
MAIN:MOVSP,#60H;設(shè)堆棧指針
MOVB,#0AH;設(shè)循環(huán)次數(shù)
MOVTMOD,#01H;設(shè)置T0工作模式1
MOVTL0,#0B0H;裝入計(jì)數(shù)值低8位
MOVTH0,#3CH;裝入計(jì)數(shù)值高8位
第20頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
SETBTR0
;啟動(dòng)定時(shí)器T0
SETBET0
;允許T0中斷
SETBEA
;允許CPU中斷
SJMP$
;等待中斷
SERVE:MOVTL0,#0B0H
MOVTH0,#3CH
;重新賦計(jì)數(shù)值
DJNZB,LOOP
CLRTR0
;1s定時(shí)到,停止T0工作
LOOP:RETI
;中斷返回
END
第21頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
例:設(shè)計(jì)定時(shí)時(shí)鐘程序。解:本例涉及到了定時(shí)器與中斷的聯(lián)合應(yīng)用。時(shí)鐘就是以秒、分、時(shí)為單位進(jìn)行計(jì)時(shí)。
(1)實(shí)現(xiàn)時(shí)鐘計(jì)時(shí)的基本方法①計(jì)算計(jì)數(shù)初值。時(shí)鐘計(jì)時(shí)的最小單位是秒,但使用單片機(jī)定時(shí)器/計(jì)數(shù)器進(jìn)行定時(shí),即使按方式1工作,其最大定時(shí)時(shí)間也只能達(dá)131ms.
鑒于此,可把定時(shí)器的定時(shí)時(shí)間定為100ms,這樣,計(jì)數(shù)溢出10次即得到時(shí)鐘計(jì)時(shí)的最小單位-----秒;而10次計(jì)數(shù)可用軟件方法實(shí)現(xiàn)。假定使用定時(shí)器T1,以工作模式1進(jìn)行100ms的定時(shí)。如單片機(jī)晶振頻率為6MHZ,為得到100ms定時(shí),設(shè)計(jì)數(shù)初值為X,則第22頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月②采用中斷方式進(jìn)行溢出次數(shù)的累計(jì),記滿10次即得到秒計(jì)時(shí)。③從秒到分和從分到時(shí)的計(jì)時(shí)是通過(guò)累加和數(shù)值比較實(shí)現(xiàn)的。④時(shí)鐘顯示及顯示緩存區(qū)部分留給讀者自己設(shè)計(jì)。第23頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
(2)程序流程及程序清單①主程序(MAIN)的主要功能是進(jìn)行定時(shí)器T1的初始化編程并啟動(dòng)T1,然后通過(guò)反復(fù)調(diào)用顯示子程序,等待100ms定時(shí)中斷的到來(lái)。其流程圖如圖6-13所示。②中斷服務(wù)程序(PITO)的主要功能是進(jìn)行計(jì)時(shí)操作。程序開(kāi)始先判斷計(jì)數(shù)溢出是否滿了10次,不滿10次表明還沒(méi)達(dá)到最小計(jì)時(shí)單位-----秒,中斷返回;滿10次表示已達(dá)到最小計(jì)時(shí)單位----秒,程序繼續(xù)往下運(yùn)行,進(jìn)行計(jì)時(shí)操作。要求滿1秒則“秒位”32H單元內(nèi)容加1,滿60s則“分位”31H單元內(nèi)容加1,滿60min則“時(shí)位”30H單元內(nèi)容加1,滿24h則將30H,31H,32H的內(nèi)容全部清0。第24頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
設(shè)T1為模式1設(shè)中斷次數(shù)為10清計(jì)時(shí)單元
調(diào)用顯示子程序啟動(dòng)T1開(kāi)中斷圖6-13時(shí)鐘主程序流程第25頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月源程序如下:
ORG0000HAJMPMAIN;上電,轉(zhuǎn)向主程序
ORG001BH;T1的中斷入口地址
AJMPSERVE;轉(zhuǎn)向中段服務(wù)程序MAIN:MOVTMOD,#10H;設(shè)T1工作于模式1MOV20H,#0AH;裝入中斷次數(shù)
CLRAMOV30H,A;時(shí)單元清0MOV31H,A;分單元清0MOV32H,A;秒單元清0SETBET1;允許T1中斷
SETBEA;允許CPU中斷
MOVTH1,#3CHMOVTL1,#0B0H;賦計(jì)數(shù)初值
SETBTR1;啟動(dòng)定時(shí)器T1第26頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
SJMP$;等待中斷(可反復(fù)調(diào)用顯示子程序)SERVE:PUSHPSWPUSHACC;保護(hù)現(xiàn)場(chǎng)
MOVTH1,#3CHMOVTL1,#0B0H;重新賦計(jì)數(shù)初值
DJNZ20H,RETUNT;1s未到,返回
MOV20H,#0AH;重置中斷次數(shù)
MOVA,#01HADDA,32H;“秒位”加1DAAMOV32H,A;轉(zhuǎn)換為BCD碼
CJNEA,#60,RETUNT;未記滿60s,返回
MOV32H,#00H;記滿60s,“秒位”清0MOVA,#01HADDA,31H;“分位”加1第27頁(yè),課件共29頁(yè),創(chuàng)作于2023年2月
DAAMOV31H,A;轉(zhuǎn)換為BCD碼
CJNEA,#60H,RETUNT;未記滿60min,返回
MOV31H,#00H;記滿60min,“分位”清0MOVA,#01HADDA,30H;“時(shí)位”加1DAAMOV30H,A;轉(zhuǎn)換為BCD碼
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 項(xiàng)目組月度工作總結(jié)與問(wèn)題反饋報(bào)告
- 公司申請(qǐng)借貸合同書(shū)
- 手房中介居間合同
- 工程熱力學(xué)熱力學(xué)基礎(chǔ)考試卷
- 委托設(shè)計(jì)專利合同書(shū)
- 《化學(xué)元素周期表制作與解讀》
- 車輛維修技術(shù)機(jī)械故障排除實(shí)踐與考核題
- 幼兒園后勤工作計(jì)劃幼兒園后勤工作計(jì)劃方案
- 2025年度國(guó)家電投集團(tuán)江西電力有限公司校園招聘筆試參考題庫(kù)附帶答案詳解
- 2024福建廣電網(wǎng)絡(luò)集團(tuán)龍巖分公司招聘筆試參考題庫(kù)附帶答案詳解
- RNA病毒復(fù)制過(guò)程中宿主細(xì)胞周期的調(diào)控作用
- 老年護(hù)理技巧培訓(xùn)
- 第15課《家鄉(xiāng)的糧食作物》 課件
- 膽囊結(jié)石伴膽囊炎的護(hù)理查房
- 人工智能在智能物流成本優(yōu)化中的應(yīng)用
- 多元智能教育培養(yǎng)學(xué)生全面發(fā)展的核心能力培訓(xùn)課件
- 學(xué)習(xí)投入度測(cè)量工具
- 各種螺釘尺寸-標(biāo)準(zhǔn)螺釘尺寸表
- 高速通道施工方案
- 頸椎損傷的識(shí)別與處理
- 智能化工程施工重難點(diǎn)分析
評(píng)論
0/150
提交評(píng)論