電子時(shí)鐘定時(shí)算法_第1頁
電子時(shí)鐘定時(shí)算法_第2頁
電子時(shí)鐘定時(shí)算法_第3頁
電子時(shí)鐘定時(shí)算法_第4頁
電子時(shí)鐘定時(shí)算法_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

電子時(shí)鐘定時(shí)算法第1頁,共40頁,2023年,2月20日,星期一定時(shí)/計(jì)數(shù)器的基本結(jié)構(gòu)如圖所示:

第2頁,共40頁,2023年,2月20日,星期一例1、設(shè)單片機(jī)晶振頻率為6MHZ,使用定時(shí)器1以方式0產(chǎn)生周期為500us的等寬正方波連續(xù)脈沖,并由P1.0輸出,以查詢方式完成。第3頁,共40頁,2023年,2月20日,星期一解:1、計(jì)算計(jì)數(shù)初值要產(chǎn)生500us的等寬正方波脈沖,只需在P1.0端以250us為周期交替輸出高低電平即可實(shí)現(xiàn),為此定時(shí)時(shí)間為250us。使用6MHZ晶振,則一個(gè)機(jī)器周期為2us,方式0為13位計(jì)數(shù)結(jié)構(gòu),設(shè)初值為X,則:(213-X)*12*1/6=250得:X=8067,二進(jìn)制數(shù)表示為:1111110000011,十六進(jìn)制表示為,高8位為:0FCH,低5位為:03H。其中高8位裝入TH1,即TH1=0FCH,低5位裝入TL1,即TL1=03H。第4頁,共40頁,2023年,2月20日,星期一2、TMOD寄存器初始化為把定時(shí)器/計(jì)數(shù)器設(shè)定為方式0,則M1M0=00;為實(shí)現(xiàn)定時(shí)功能,應(yīng)使C/T=0;為實(shí)現(xiàn)定時(shí)器/計(jì)數(shù)器1的運(yùn)行控制,則GATE=0。定時(shí)器/計(jì)數(shù)器T0不用,有關(guān)位設(shè)定為0,因此TMOD寄存器初始化為00H。3、由定時(shí)器控制器TCON中的TR1位控制定時(shí)的啟動(dòng)和停止,TR1=1啟動(dòng)

,TR1=0停止。4、使用查詢就禁止中斷IE=00H第5頁,共40頁,2023年,2月20日,星期一5、程序設(shè)計(jì):

MOVTMOD,#00H;設(shè)置T1為工作方式0

MOVTH1,#0FCH;設(shè)置計(jì)數(shù)初值

MOVTL1,#03HMOVIE,#00H;禁止中斷SETBTR1

;啟動(dòng)定時(shí)LOOP:

JBCTF1,LOOP1;查詢計(jì)數(shù)溢出

AJMPLOOPLOOP1:MOVTH1,#0FCH;重新設(shè)置計(jì)數(shù)初值

MOVTL1,#03HCPLP1.0;輸出取反

AJMPLOOP;重復(fù)循環(huán)第6頁,共40頁,2023年,2月20日,星期一例3、使用定時(shí)器0以工作方式2產(chǎn)生100us定時(shí),在P1.0輸出周期為200us的連續(xù)方波脈沖,已知晶振頻率fosc=6MHZ。第7頁,共40頁,2023年,2月20日,星期一解:1、計(jì)算計(jì)數(shù)初值6MHZ晶振下,一個(gè)機(jī)器周期為2us,以TH0作重裝載的預(yù)置寄存器,TL0作8位計(jì)數(shù)器,則:(28-X)*12*1/6=100,得X=206=11001110B=0CEH把0CEH分別裝入TH0和TL0中。2、TMOD初始化為把定時(shí)器/計(jì)數(shù)器設(shè)定為方式2,則M1M0=10;為實(shí)現(xiàn)定時(shí)功能,應(yīng)使C/T=0;為實(shí)現(xiàn)定時(shí)器/計(jì)數(shù)器0的運(yùn)行控制,則GATE=0。定時(shí)器/計(jì)數(shù)器T1不用,有關(guān)位設(shè)定為0,因此TMOD寄存器初始化為00000010,即:02H第8頁,共40頁,2023年,2月20日,星期一3、由定時(shí)器控制器TCON中的TR0位控制定時(shí)的啟動(dòng)和停止,TR0=1啟動(dòng)

,TR0=0停止。4、使用中斷方式,應(yīng)開中斷

EA位和ET0位置“1”第9頁,共40頁,2023年,2月20日,星期一5、程序設(shè)計(jì)(查詢方式)

MOVTMOD,#02H;設(shè)置T0為工作方式2

MOVTH0,#0CEH;設(shè)置計(jì)數(shù)初值

MOVTL0,#0CEHMOVIE,#00H;禁止中斷

SETBTR0;啟動(dòng)定時(shí)

LOOP:JBCTF0,LOOP1;查詢計(jì)數(shù)溢出

AJMPLOOPLOOP1:CPLP1.0;輸出取反

AJMPLOOP;重復(fù)循環(huán)第10頁,共40頁,2023年,2月20日,星期一5、程序設(shè)計(jì)(中斷方式)

MOVTMOD,#02H;設(shè)置T0為工作方式2

MOVTH0,#0CEH;設(shè)置計(jì)數(shù)初值

MOVTL0,#0CEHSETBEA;開中斷

SETBET0;定時(shí)器1允許中斷LOOP:SETBTR0;啟動(dòng)定時(shí)HERE:SJMP$;等待中斷

AJMPLOOP中斷服務(wù)程序:

CPLP1.0;輸出取反

RETI;中斷返回第11頁,共40頁,2023年,2月20日,星期一設(shè)某用戶系統(tǒng)中已使用了兩個(gè)外部中斷源,并置定時(shí)器T1工作在模式2,作串行口波特率發(fā)生器用。現(xiàn)要求再增加一個(gè)外部中斷源,并由P1.0輸出一個(gè)5KHz的方波。Fosc=12MHz。第12頁,共40頁,2023年,2月20日,星期一分析:目的:1)增加一個(gè)外部中斷;2)使P1.0輸出一個(gè)方波。條件:1)兩個(gè)外部中斷源已被使用2)定時(shí)器T1已用于串行口波特率發(fā)生器因此:可利用定時(shí)/計(jì)數(shù)器T0,使之工作在模式3,1)利用TL0擴(kuò)展外部中斷源2)利用TH0作定時(shí)器使用,輸出方波

第13頁,共40頁,2023年,2月20日,星期一設(shè)置初值:1)TL0=0FFH2)因?yàn)檩敵龇讲╢=5kHz,故方波周期為200us,用TH0產(chǎn)生100us的定時(shí),故TH0的初值X=256–(定時(shí)時(shí)間/機(jī)器周期)=256-(100us*晶振頻率/12)=156設(shè)定T0工作方式,TMOD,TCON.第14頁,共40頁,2023年,2月20日,星期一程序:

MOVTMOD,#27H;T0:模式3,計(jì)數(shù)方式;T1:模式2,定時(shí)方式

MOVTL0,#0FFH;一旦加1,馬上溢出,申請(qǐng)中斷

MOVTH0,#156;TH0初值

MOVTH1,#data;根據(jù)波特率要求而定

MOVTL1,#data

MOVTCON,#55H;01010101MOVIE,#9FH;開放全部中斷TL0INT:MOVTL0,#0FFH;TL0重新賦值…..

RETITH0INT:MOVTH0,#156;TH0重新賦值

CPLP1.0RETI

第15頁,共40頁,2023年,2月20日,星期一低頻信號(hào)發(fā)生器驅(qū)動(dòng)程序設(shè)計(jì)一個(gè)控制程序,使89c51的P1口輸出8路低頻方波脈沖,頻率分別為100,50,25,20,10,5,2,1Hz。第16頁,共40頁,2023年,2月20日,星期一1.計(jì)算定時(shí)器初值使用T0,產(chǎn)生5ms的定時(shí),若晶振選12MHz,則5ms相當(dāng)于5000個(gè)機(jī)器周期,T0應(yīng)工作在模式1,初值x為:x=65536-5000=60536,用十六進(jìn)制表示,則x=0EC78H。(注意TH,TL分開賦值---因?yàn)門0/T1都是16位)2.設(shè)立8個(gè)計(jì)數(shù)器對(duì)應(yīng)于P1.0~P1.7,設(shè)立8個(gè)計(jì)數(shù)器,初值分別為1,2,4,5,10,20,50,100,由T0的溢出中斷服務(wù)程序?qū)λ鼈儨p“1”計(jì)數(shù),當(dāng)減為0時(shí)恢復(fù)初值,并使相應(yīng)的口引腳改變狀態(tài),這樣就可以使P1口輸出所要求的方波。第17頁,共40頁,2023年,2月20日,星期一程序:ORG0START:AJMPMAINORG0BHPTP0:MOVTL0,#78H;T0中斷服務(wù)程序MOVTH0,#0ECHCPLP1.0DJNZ31H,PF01;對(duì)各路時(shí)間計(jì)數(shù)器進(jìn)行減1計(jì)數(shù)MOV31H,#2;計(jì)數(shù)器減為1,恢復(fù)計(jì)數(shù)初值CPLP1.1;輸出取反PF01:DJNZ32H,PF02MOV32H,#4CPLP1.2PF02:DJNZ33H,PF03MOV33H,#5CPLP1.3第18頁,共40頁,2023年,2月20日,星期一PF03:DJNZ34H,PF04MOV34H,#10CPLP1.4PF04:DJNZ35H,PF05MOV35H,#20CPLP1.5PF05:DJNZ36H,PF06MOV36H,#50CPLP1.6PF06:DJNZ37H,PF07MOV37H,#100CPLP1.7PF07:RETI第19頁,共40頁,2023年,2月20日,星期一MAIN:MOVSP,#70H;主程序棧指針初始化MOV31H,#2;各路計(jì)數(shù)器置初值MOV32H,#4MOV33H,#5MOV34H,#10MOV35H,#20MOV36H,#50MOV37H,#100

MOVTMOD,#1;GATE=0,C/T=0,M1M0=01MOVTL0,#78H;初值——〉T0MOVTH0,#0ECHMOVIE,#82H;允許T0中斷SETBTR0;允許T0計(jì)數(shù)HERE:SJMPHERE;以踏步表示CPU可以處理其他工作第20頁,共40頁,2023年,2月20日,星期一例利用定時(shí)器T1的模式2對(duì)外部信號(hào)計(jì)數(shù),要求每計(jì)滿100次對(duì)P1.0端取反。第21頁,共40頁,2023年,2月20日,星期一解:(1)計(jì)算計(jì)數(shù)初值X100=28-XX=256-100=156=9CH

(2)模式字

TMOD=0110****B=60H

(3)程序清單;用中斷方式

ORG0000HMAIN:MOVTMOD,#60HMOVTL1,#156MOVTH1,#156MOVIE,#88HSETBTR1SJMP$

ORG001BHCPLP1.0RETI第22頁,共40頁,2023年,2月20日,星期一例脈沖參數(shù)測(cè)量——GATE功能的使用。脈沖高電平(計(jì)數(shù))長度值存于21H、20H中,脈沖低電平長度存于23H、22H中。電路連接如下圖所示。解:復(fù)習(xí)GATE的用法:

GATE=0時(shí),TRi=1,即可啟動(dòng)Ti定時(shí)/計(jì)數(shù)

GATE=1時(shí),TRi=1,且=1,才啟動(dòng)定時(shí)/計(jì)數(shù)。89C51P3.2P3.31被測(cè)信號(hào)21a3T0計(jì)數(shù)T1計(jì)數(shù)第23頁,共40頁,2023年,2月20日,星期一

ORG0000HLJMPMAINORG2000HMAIN:MOVTMOD,#99H;T0、T1均工作在定時(shí),;模式1,GATE=1MOVA,#00H;T0、T1賦計(jì)數(shù)初值00H,

;定時(shí)最長時(shí)間為0000~65536MOVTL0,A

MOVTH0,AMOVTL1,AMOVTH1,A第24頁,共40頁,2023年,2月20日,星期一TEST0:JBP3.2,TEST0;檢測(cè)是否到a點(diǎn)

SETBTR0;到a點(diǎn),TR0=1,做好取計(jì)時(shí)值準(zhǔn)備。TEST1:JNBP3.2,TEST1;檢測(cè)是否到1點(diǎn)

SETBTR1;到1點(diǎn)T0計(jì)時(shí);TR1=1,做好T1計(jì)時(shí)準(zhǔn)備。TEST2:JBP3.2,TEST2;檢測(cè)是否到2點(diǎn)

CLRTR0;到2點(diǎn),停止T0計(jì)時(shí),T1開始計(jì)時(shí)。

MOV20H,TH0;保存T0計(jì)時(shí)結(jié)果

MOV21H,TL0TEST3:JBP3.3,TEST3;檢測(cè)是否到3點(diǎn)

CLRTR1;到3點(diǎn),停止T1計(jì)數(shù)

MOV22H,TH1;保存T1計(jì)數(shù)結(jié)果

MOV23H,TL1LCALLDISPSJMP$第25頁,共40頁,2023年,2月20日,星期一運(yùn)行中讀定時(shí)器/計(jì)數(shù)器80C51可以隨時(shí)讀寫計(jì)數(shù)寄存器TLx和THx(x為0或1),用于實(shí)時(shí)顯示計(jì)數(shù)值等。辦法是:先讀THx,后讀TLx,再重讀THx,若兩次讀得的THx值是一樣的,則可以確定讀入的數(shù)據(jù)是正確的;若兩次讀得的THx值不一致,則必須重讀。第26頁,共40頁,2023年,2月20日,星期一例.飛讀

RDTIME: MOV A,TH0 ;讀TH0 MOV R0,TL0 ;讀TL0并存入R0 CJNE A,TH0,RDTIME ;再讀TH0,與上次 ;讀入的TH0比較,若不等,重讀

MOV R1,A ;存TH0在R1中

RET第27頁,共40頁,2023年,2月20日,星期一實(shí)時(shí)時(shí)鐘的設(shè)計(jì)(1)實(shí)時(shí)時(shí)鐘實(shí)現(xiàn)的基本思想如何獲得1秒的定時(shí),可把定時(shí)時(shí)間定為100ms,采用中斷方式進(jìn)行溢出次數(shù)的累計(jì),計(jì)滿10次,即得到秒計(jì)時(shí)。片內(nèi)RAM中規(guī)定3個(gè)單元作為秒、分、時(shí)單元,具體安排如下:

32H:“秒”單元;31H:“分”單元;30H:“時(shí)”單元從秒到分,從分到時(shí)是通過軟件累加并進(jìn)行比較的方法來實(shí)現(xiàn)的。時(shí)鐘就是以秒、分、時(shí)為單位進(jìn)行計(jì)時(shí)。用定時(shí)器與中斷的聯(lián)合應(yīng)用。第28頁,共40頁,2023年,2月20日,星期一①假定使用定時(shí)器T0,以工作模式1進(jìn)行100ms的定時(shí)。如fosc=6MHz,則計(jì)數(shù)初值X為:∵(216-X)×12/(6×106)=100×10-3s∴X=15536=3CB0H因此:

(TL0)=0B0H(TH0)=3CH第29頁,共40頁,2023年,2月20日,星期一②采用定時(shí)方式進(jìn)行溢出次數(shù)的累計(jì),計(jì)滿10次即得到秒計(jì)時(shí)。③從秒到分和從分到時(shí)的計(jì)時(shí)是通過累計(jì)和數(shù)值比較實(shí)現(xiàn)的。④時(shí)鐘顯示即及顯示緩沖區(qū)部分在這里略,可自行設(shè)計(jì)。第30頁,共40頁,2023年,2月20日,星期一

①主程序(MAIN)的主要功能是進(jìn)行定時(shí)器T1的初始化編程并啟動(dòng)T1,然后通過反復(fù)調(diào)用顯示子程序,等待100ms定時(shí)中斷的到來。其流程如圖所示。(2)程序流程及程序清單設(shè)T1為模式1設(shè)中斷次數(shù)清計(jì)時(shí)單元開中斷啟動(dòng)T1調(diào)用顯示子程序等待定時(shí)中斷第31頁,共40頁,2023年,2月20日,星期一②中斷服務(wù)程序(PITO)的主要功能 進(jìn)行計(jì)時(shí)操作。程序開始先判斷計(jì)數(shù)溢出是否滿了10次,不滿表明還沒達(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,332H單元內(nèi)容全部清0。中斷服務(wù)程序流程如下圖所示。第32頁,共40頁,2023年,2月20日,星期一保護(hù)現(xiàn)場(chǎng)賦計(jì)數(shù)初值到1s?(32H)加1(32H)=60?(32H)清0(31H)加1(31H)=60?(31H)清0(30H)加1(30H)=24?(30H)清0恢復(fù)現(xiàn)場(chǎng)返回入口aaNNNNYYYY圖

中斷服務(wù)程序流程圖第33頁,共40頁,2023年,2月20日,星期一③源程序如下:

ORG0000HAJMPMAIN;上電,轉(zhuǎn)向主程序ORG001BH;T1的中斷服務(wù)程序入口地址AJMPSERVE;轉(zhuǎn)向中斷服務(wù)程序

第34頁,共40頁,2023年,2月20日,星期一

ORG2000H;主程序MAIN:MOVSP,#60H;設(shè)堆棧指針MOVTMOD,#10H;設(shè)置T1工作于模式1MOV20H,#0AH;設(shè)循環(huán)次數(shù)CLRAMOV30H,A;時(shí)單元清0MOV31H,A;分單元清0MOV32H,A;秒單元清0

第35頁,共40頁,2023年,2月20日,星期一

SETBET1;T1開中斷SETBEA;CPU開中斷

MOVTL1,#0B0H;裝計(jì)數(shù)值低8位MOVTH1,#3CH;裝計(jì)數(shù)值高8位

SETBTR1;啟動(dòng)定時(shí)SJMP$;等待中斷(可反復(fù)調(diào)用顯示子程序)第36頁,共40頁,2023年,2月20日,星期一

SERVE:PUSHPSW;保護(hù)現(xiàn)場(chǎng)

PUSHACCMOVTL1,#0B0H;重新賦初值MOVTH1,#3CHDJNZ20H,RETUNT;1s未到,返回

MOV20H,#0AH;重置中斷次數(shù)

第37頁,共40頁,2023年,2月20日,星期一

MOVA,#01HADDA,32H

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論