




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)課程設(shè)計(jì):電子鐘實(shí)現(xiàn)功能能夠?qū)崿F(xiàn)準(zhǔn)確計(jì)時(shí),以數(shù)字形式顯示時(shí)、分、秒的時(shí)間。小時(shí)以24小時(shí)計(jì)時(shí)形式,分秒計(jì)時(shí)為60進(jìn)位,能夠調(diào)節(jié)時(shí)鐘時(shí)間。鬧鐘功能,一旦走時(shí)到該時(shí)間,能以聲或光的形式告警提示。能夠?qū)崿F(xiàn)按鍵啟動(dòng)與停止功能。能夠?qū)崿F(xiàn)整點(diǎn)報(bào)時(shí)功能。能夠?qū)崿F(xiàn)秒表功能。設(shè)計(jì)思路1、芯片介紹VCC:電源。GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳備選功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時(shí)器0外部輸入)P3.5T1(記時(shí)器1外部輸入)P3.6/WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。顯示電路就時(shí)鐘而言,通??刹捎靡壕э@示或數(shù)碼管顯示。由于一般的段式液晶屏,需要專門的驅(qū)動(dòng)電路,而且液晶顯示作為一種被動(dòng)顯示,可視性相對(duì)較差;對(duì)于具有驅(qū)動(dòng)電路和微處理器接口的液晶顯示模塊(字符或點(diǎn)陣),一般多采用并行接口,對(duì)微處理器的接口要求較高,占用資源多。另外,89C2051本身無專門的液晶驅(qū)動(dòng)接口,因此,本時(shí)鐘采用數(shù)碼管顯示方式。數(shù)碼管作為一種主動(dòng)顯示器件,具有亮度高、價(jià)格便宜等優(yōu)點(diǎn),而且市場(chǎng)上也有專門的時(shí)鐘顯示組合數(shù)碼管。對(duì)于實(shí)時(shí)時(shí)鐘而言,顯示顯然是另一個(gè)重要的環(huán)節(jié)。通常LED顯示有兩種方式:動(dòng)態(tài)顯示和靜態(tài)顯示。靜態(tài)顯示的優(yōu)點(diǎn)是程序簡(jiǎn)單、顯示亮度有保證、單片機(jī)CPU的開銷小,節(jié)約CPU的工作時(shí)間。但占有I/O口線多,每一個(gè)LED都要占有一個(gè)I/O口,硬件開銷大,電路復(fù)雜。需要幾個(gè)LED就必須占有幾個(gè)并行口,比較適用于LED數(shù)量較少的場(chǎng)合。當(dāng)然當(dāng)LED數(shù)量較多的時(shí)候,可以使用單片機(jī)的串行口通過移位寄存器的方式加以解決,但程序編寫比較麻煩。LED動(dòng)態(tài)顯示硬件連接簡(jiǎn)單,但動(dòng)態(tài)掃描的顯示方式需要占有CPU較多的時(shí)間,在單片機(jī)沒有太多實(shí)時(shí)測(cè)控任務(wù)的情況下可以采用。本系統(tǒng)需要采用6位LED數(shù)碼管來分別顯示時(shí)、分、秒,因數(shù)碼管個(gè)數(shù)較多,故本系統(tǒng)選擇動(dòng)態(tài)顯示方式。此次設(shè)計(jì)主要是應(yīng)用單片機(jī)來設(shè)計(jì)電子時(shí)鐘,硬件部分主要分以下電路模塊:顯示電路用6個(gè)共陰數(shù)碼管分別顯示,小時(shí)、分鐘和秒,通過動(dòng)態(tài)掃描進(jìn)行顯示,從而避免了譯碼器的使用,同時(shí)節(jié)約了I/0端口,使電路更加簡(jiǎn)單。單片機(jī)采用AT89S51系列,這種單片機(jī)應(yīng)用簡(jiǎn)單,適合電子鐘設(shè)計(jì)。針對(duì)要實(shí)現(xiàn)的功能,采用AT89S51單片機(jī)進(jìn)行設(shè)計(jì),AT89S51單片機(jī)是一款低功耗,高性能CMOS8位單片機(jī),片內(nèi)含4KB在線可編程(ISP)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu)。這樣,既能做到經(jīng)濟(jì)合理又能實(shí)現(xiàn)預(yù)期的功能。在程序方面,采用分塊設(shè)計(jì)的方法,這樣既減小了編程難度、使程序易于理解,又能便于添加各項(xiàng)功能。程序可分為鬧鐘的聲音程序、時(shí)間顯示程序,秒表顯示程序,時(shí)間調(diào)整程序、鬧鐘調(diào)整程序、定時(shí)調(diào)整程序,延時(shí)程序、整點(diǎn)報(bào)時(shí)等。運(yùn)用這種方法,關(guān)鍵在于各模塊的兼容和配合,以免各模塊不匹配會(huì)出現(xiàn)意想不到的錯(cuò)誤。首先,在編程之前必須了解硬件結(jié)構(gòu)尤其是各引腳的用法,以及內(nèi)部寄存器、存儲(chǔ)單元的用法,否則,編程無從下手,電路也無法設(shè)計(jì)。這是前期準(zhǔn)備工作。第二部分是硬件部分:依據(jù)想要的功能分塊設(shè)計(jì)設(shè)計(jì),比如輸入需要開關(guān)電路,輸出需要顯示驅(qū)動(dòng)電路和數(shù)碼管電路等。第三部分是軟件部分:先學(xué)習(xí)理解匯編語言的編程方法再根據(jù)設(shè)計(jì)的硬件電路進(jìn)行分塊的編程調(diào)試,最終完成程序設(shè)計(jì)。第四部分是軟件畫圖部分:設(shè)計(jì)好電路后進(jìn)行畫圖,包括電路圖和仿真圖的繪制。第五部分是軟件仿真部分:軟硬件設(shè)計(jì)好后將軟件載入芯片中進(jìn)行仿真,仿真無法完成時(shí)檢查軟件程序和硬件電路并進(jìn)行修改直到仿真成功。在已經(jīng)正確的設(shè)計(jì)基礎(chǔ)上,添加額外的功能!在設(shè)計(jì)的的過程中,主要采用分塊設(shè)計(jì)的方法,進(jìn)行分塊調(diào)試在進(jìn)行整體組合。在設(shè)計(jì)實(shí)時(shí)顯示時(shí)間和秒表時(shí)主要是時(shí)間的計(jì)算,才能精確計(jì)時(shí)間,和兩個(gè)定時(shí)器的優(yōu)先級(jí)問題才能進(jìn)行兩個(gè)模塊的切換。設(shè)計(jì)流程圖保護(hù)現(xiàn)場(chǎng)重裝定時(shí)器初值循環(huán)次數(shù)減1否滿20次?是秒單元加1否60s到?是秒單元清0,分單元加1否60分到?是分單元清0,時(shí)單元加1否24小時(shí)到?是時(shí)單元清0恢復(fù)現(xiàn)場(chǎng)返回計(jì)時(shí)模塊流程圖四、設(shè)計(jì)功能模塊時(shí)間調(diào)整模塊s4按鍵按下(p1.3)進(jìn)入時(shí)間調(diào)整狀態(tài),判斷S4鍵,若再次按下開始進(jìn)行小時(shí)調(diào)整,每次按下s4鍵時(shí)小時(shí)加一,若S4鍵未按下判斷S0鍵(p1.4)是否按下,若S0鍵按下,分鐘加一,若S0未按下,判斷S1鍵,若s1鍵按下,返回主程序,進(jìn)行時(shí)間與鬧鐘的切換。鬧鐘模塊若S0鍵按下,開啟鬧鐘,進(jìn)入鬧鐘判斷模塊,若滿足鬧鐘的分鐘與時(shí)鐘的分鐘相等,并且鬧鐘的小時(shí)與時(shí)鐘的小時(shí)相等,進(jìn)入喇叭響應(yīng)模塊。S0鍵釋放則關(guān)閉鬧鐘。秒表模塊若S2鍵(P1.1)按下,進(jìn)入秒表模塊,顯示秒表初始值。若S5鍵(p3.0)按下,顯示秒表初始值并開始秒表計(jì)時(shí)。若彈起S5鍵則停止秒表計(jì)數(shù)并復(fù)位。若彈起S2鍵重新進(jìn)行時(shí)間顯示。整點(diǎn)報(bào)時(shí)模塊26H中存放整點(diǎn)報(bào)時(shí)的標(biāo)志位,若時(shí)間模塊中存放分鐘的地址中數(shù)為60,則將存放小時(shí)的數(shù)傳遞給A并使A自增1,若A不等于0,,進(jìn)入喇叭響應(yīng)模塊,若A為0返回主程序。時(shí)鐘定時(shí)模塊定時(shí)50ms,定時(shí)為T0方式1,初始值TH0=3CHTL0=0B0H,X=216-50X0.001/0.000001=15536秒表定時(shí)模塊由于使用兩個(gè)定時(shí)器,T0的自然優(yōu)先級(jí)高于T1的,所以在執(zhí)行秒表按鍵時(shí),T1的優(yōu)先級(jí)應(yīng)高于T0,應(yīng)對(duì)IP進(jìn)行設(shè)置,使IP為08H。定時(shí)10ms,定時(shí)為T1方式1,初始值TH0=0FCHTL0=18H,X=216-10X0.001/0.000001=64536延時(shí)模塊延時(shí)25msDELAY:MOVR4,#015HDL00:MOVR5,#0FFHDL11:MOVR6,#9HDL12:DJNZR6,DL12DJNZR5,DL11DJNZR4,DL00RETproteus程序仿真圖仿真結(jié)果分析通過S1、S0、S3和S4四個(gè)按鍵,對(duì)時(shí)間進(jìn)行修改和鬧鐘的設(shè)置,S0控制鬧鐘的啟動(dòng)和停止。通過S2來進(jìn)入秒表模式,按下S5進(jìn)行秒表正確計(jì)時(shí)。彈起S5和S2進(jìn)入時(shí)間顯示。按下S1鍵顯示鬧鐘,松開后顯示時(shí)間;按進(jìn)入時(shí)間修改模式,再按S4鍵時(shí)間的時(shí)加1,按S2分加1,調(diào)整結(jié)束后按下S1恢復(fù)正常顯示;按下S3鍵進(jìn)入鬧鐘修改模式,再按S3鍵鬧鐘的時(shí)加1,按S2分加1,調(diào)整結(jié)束后按下S1恢復(fù)正常顯示。設(shè)計(jì)心得體會(huì)本次課程設(shè)計(jì),即將告一段落,但收獲卻是彌足珍貴。一分耕耘,一分收獲。部親自去嘗試,你很難去體驗(yàn)?zāi)欠蓍_心。我們經(jīng)過了這半年對(duì)單片機(jī)由一無所知到逐步了解,現(xiàn)在開始了一些小的制作。課程設(shè)計(jì)是一項(xiàng)好的方向,讓我們?nèi)プ晕姨岣?,很有裨益。?shí)驗(yàn)開始前,同組的同伴就開始了收集資料,嘗試著去努力實(shí)現(xiàn)一些功能。起初,我對(duì)單片機(jī)知道很少,還是經(jīng)過看看細(xì)節(jié)性的東西,才漸漸有些入門。當(dāng)然,實(shí)驗(yàn)的過程中也遇到了許多的難題。1、實(shí)現(xiàn)電子鐘的數(shù)碼顯示,在這一過程中,顯示部分總是會(huì)出現(xiàn)這樣那樣的問題。2、按鍵問題我的設(shè)計(jì)中,大部分功能選擇是通過按鍵開關(guān)實(shí)現(xiàn)的。在仿真中發(fā)現(xiàn),調(diào)整數(shù)值時(shí),有時(shí)按鍵反應(yīng)太快,按一次,跳了幾下,使設(shè)置時(shí)間很不方便。但是仿真多了之后,找到了按鍵(實(shí)際上是按鼠標(biāo))的節(jié)奏,對(duì)按鍵的掌控力提高了不少,不怎么會(huì)出現(xiàn)跳變的情況了。有些開關(guān)我采用了長(zhǎng)按鍵的方式來防抖,效果不錯(cuò),但是每次都要長(zhǎng)按鍵,調(diào)整效率太低,我沒有普及。本來想把所有的按鍵都加延時(shí)防抖電路,但仿真中感覺對(duì)鍵盤的控制力沒提高多少。定時(shí)/計(jì)數(shù)器的使用問題。在實(shí)驗(yàn)過程中多次運(yùn)用到定時(shí)器T0\T1,我們?cè)谑褂脮r(shí)忽略了中斷的優(yōu)先級(jí),從而使同級(jí)的中斷存在時(shí),而不能很好的達(dá)到目的。程序: ORG0000H LJMPSTART ORG000BH LJMPTIMEORG001BH LJMPTIMEA;********初始化*********START:MOVSP,#50H MOV20H,#00H;定義秒 MOV21H,#00H;定義分MOV22H,#00H;定義時(shí)MOV23H,#01H;定義鬧鐘分鐘MOV24H,#01H;定義鬧鐘小時(shí)MOV25H,#00H MOV26H,#00HMOV30H,#00H;時(shí)間SECOND送顯緩沖區(qū)MOV31H,#00HMOV32H,#00H;時(shí)間MINUTE送顯緩沖區(qū)MOV33H,#00HMOV34H,#00H;時(shí)間HOUR送顯緩沖區(qū)MOV35H,#00HMOV36H,#01H ;鬧鐘分鐘送顯緩沖區(qū)MOV37H,#00HMOV38H,#01H ;鬧鐘小時(shí)十位送顯緩沖區(qū)MOV39H,#00H ;鬧鐘小時(shí)個(gè)位送顯緩沖區(qū) MOV50H,#00H ;按鍵次數(shù) MOV27H,#00H ;秒表最低兩位 MOV28H,#00H ;秒表秒計(jì)數(shù)單元 MOV29H,#00H ;秒表分計(jì)數(shù)單元 MOVTMOD,#11H;16位計(jì)數(shù)器MOVTH0,#03CH;賦初值MOVTL0,#0B0H MOVTH1,#0FCH;賦初值MOVTL1,#018HMOVIE,#8AH;中斷允許SETBTR0;啟動(dòng)T0MOVR2,#14H MOVR1,#0AHMOVP2,#0FFH;*********主程序**********MAIN:JBP1.4,GBLCALLTIMEPRO ;調(diào)用鬧鐘判斷GB: LCALLDISPLAY1 ;調(diào)用時(shí)間顯示JBP1.3,M1;P1.3=1時(shí)轉(zhuǎn)移S4沒有按下LCALLSETTIME;調(diào)用SETTIME調(diào)時(shí)子程序LJMPMAINM1:JBP1.2,M2;P1g.2=1時(shí)轉(zhuǎn)移S3LCALLSETATIME;調(diào)用SETATIME子程序LJMPMAINM2:JBP1.0,M4;P1.0=1時(shí)轉(zhuǎn)移S1LCALLLOOKATIME;調(diào)用LOOKATIME顯示鬧鐘子程序LJMPMAINM4: JBP1.1,M5 ;P1.1=1時(shí)轉(zhuǎn)移主程序LCALLDISPLAY1;調(diào)用秒表顯示LCALLLOOKM5:LJMPMAIN;*********存時(shí)間程序**********M7: MOV A,20HMOVB,#0AHDIVABMOV31H,A;將A的低4位存入31單元MOV30H,B;將A的高4位存入30單元 MOVA,21HMOVB,#0AHDIVABMOV33H,A;將A的低4位存入33單元MOV32H,B;將A的高4位存入32單元 MOV A,22HMOVB,#0AHDIVABMOV35H,A;將A的低4位存入35單元MOV34H,BM8: RET;*********秒表送出始值到顯示緩沖區(qū)**********MJ: MOV27H,#00H MOV28H,#00H MOV29H,#00HMOV A,27HMOVB,#0AHDIVABMOV31H,A;將A的低4位存入31單元MOV30H,B;將A的高4位存入30單元 MOVA,28HMOVB,#0AHDIVABMOV33H,A;將A的低4位存入33單元MOV32H,B;將A的高4位存入32單元MOV A,29HMOVB,#0AHDIVABMOV35H,A;將A的低4位存入35單元MOV34H,BMK: RET ;*********延時(shí)子程序********LOOK:LCALLDISPLAY1MM1:JNBP3.0,LERLCALLM7 LCALLMJCLRTR1 CLRPT1 LCALLDISPLAY1 LJMPM6LER:MOVIP,#08HSETBTR1LCALLDISPLAY1M6: RET;***********時(shí)間調(diào)整*******SETTIME: ;設(shè)置時(shí)間L0:LCALLDISPLAY1JBP1.3,L1;P1.3=1時(shí)轉(zhuǎn)移MOVC,P1.3JCMM1LCALLDELAY1;延時(shí)JCMM1MSTOP1:MOVC,P1.3 ;P1.3為0時(shí)轉(zhuǎn)移JNCMSTOP1LCALLDELAY1 ;延時(shí) MOVA,50H INC50H CJNEA,#00H,HJ1 LJMPL0HJ1:INC22H;小時(shí)自加一MOVA,22HCJNEA,#18H,GO12;小時(shí)計(jì)數(shù)循環(huán)MOV22H,#00H;復(fù)位MOV34H,#00HMOV35H,#00HLJMPL0L1:JBP1.4,L2;P1.1=1時(shí)轉(zhuǎn)移MOVC,P1.4JCL1LCALLDELAY1;延時(shí)JCL1MSTOP2:MOVC,P1.4 ;P1.1=0時(shí)轉(zhuǎn)移JNCMSTOP2LCALLDELAY1;延時(shí)MOVC,P1.4JNCMSTOP2INC21H;分鐘加一MOVA,21HCJNEA,#3CH,GO11;分鐘計(jì)數(shù)循環(huán)MOV21H,#00H;復(fù)位MOV32H,#00HMOV33H,#00HLJMPL0GO11:MOVB,#0AHDIVABMOV32H,B;將A的低4位存入32單元MOV33H,A;將A的高4位存入33單元LJMPL0GO12:MOVB,#0AHDIVABMOV34H,B;將A的低4位存入34單元MOV35H,A;將A的高4位存入35單元LJMPL0L2:JBP1.0,L0;P1.0=1時(shí)轉(zhuǎn)移MOVC,P1.0JCL2LCALLDELAY1;延時(shí)MOVC,P1.0JCL2STOP1:MOVC,P1.0 ;P1.0=0時(shí)轉(zhuǎn)移JNCSTOP1LCALLDELAY1;延時(shí)MOVC,P1.0JNCSTOP1 MOV50H,#00HMMM:LJMPMAIN;*******設(shè)置鬧鐘*******SETATIME:LCALLDISPLAY2;調(diào)用DISPLAY2顯示鬧鐘N0:LCALLDISPLAY2MM2:JBP1.2,N1;P1.2=1時(shí)轉(zhuǎn)移MOVC,P1.2JCMM2LCALLDELAY1;延時(shí)JCMM2MSTOP3:MOVC,P1.2 ;P1.2=0時(shí)轉(zhuǎn)移JNCMSTOP3LCALLDELAY1;延時(shí) MOVA,50H INC50H CJNEA,#00H,HJ2 LJMPN0HJ2:INC24H;小時(shí)加一MOVA,24HCJNEA,#24,GO22;小時(shí)計(jì)數(shù)循環(huán)MOV24H,#00H;復(fù)位MOV38H,#00HMOV39H,#00HLJMPN0N1:JBP1.4,N2;P1.1=1時(shí)轉(zhuǎn)移MOVC,P1.4JCN1LCALLDELAY1;延時(shí)JCN1MSTOP4:MOVC,P1.4 ;P1.1=0時(shí)轉(zhuǎn)移JNCMSTOP4LCALLDELAY1;延時(shí)MOVC,P1.4JNCMSTOP4INC23H;分鐘加一MOVA,23HCJNEA,#60,GO21;分鐘計(jì)數(shù)循環(huán)MOV23H,#00H;復(fù)位MOV36H,#00HMOV37H,#00HLJMPN0GO21:MOVB,#0AHDIVABMOV36H,B;將A的低4位存入36單元MOV37H,A;將A的高4位存入37單元LJMPN0GO22:MOVB,#0AHDIVABMOV38H,B;將A的低4位存入38單元MOV39H,A;將A的高4位存入39單元LJMPN0N2:JBP1.0,N0;P1.0=1時(shí)轉(zhuǎn)移MOVC,P1.0JCN2LCALLDELAY1;延時(shí)MOVC,P1.0JCN2STOP2:MOVC,P1.0JNCSTOP2LCALLDELAY1MOVC,P1.0JNCSTOP2 MOV50H,#00HLJMPMAIN;*******鬧鐘判斷*****************TIMEPRO:MOVA,21HMOVB,23HCJNEA,B,BK;判斷定時(shí)鬧鐘的分鐘MOVA,22HMOVB,24HCJNEA,B,BK;判斷定時(shí)鬧鐘的小時(shí)SETB25H.0MOVC,25H.0LCALLTIMEOUT;調(diào)用TIMEOUTBK:RET;**************喇叭報(bào)警*****************TIMEOUT:CLR26HX1:LCALLBZ;調(diào)用喇叭響應(yīng)程序CLR25H.0;調(diào)用喇叭響應(yīng)程序結(jié)束LCALLDELAY ;延時(shí)CLR25H.0LJMPDISPLAY1BZ:MOVC,25H.1MOVP1.6,CCLRP1.7MOVR7,#0FFH;喇叭響應(yīng)時(shí)間T2:MOVR6,#0FFHT3:DJNZR6,T3DJNZR7,T2SETBP1.7RET;*************顯示鬧鐘時(shí)間************LOOKATIME:LCALLDISPLAY2MM:JNBP1.0,LOOKATIMELCALLDELAY1LJMPMAINDELAY1:MOVR4,#15H;時(shí)間延時(shí)DL001:MOVR5,#0FFHDL111:DJNZR5,DL111DJNZR4,DL001RET;***********定時(shí)**************TIME:PUSHACC;保護(hù)現(xiàn)場(chǎng)PUSHPSWMOV TH0,#03CH;初值 MOV TL0,#0B0H DJNZR2,RET0 MOV R2,#14H MOVA,20H INCA;秒自加一 CJNE A,#3CH,GO1;秒計(jì)數(shù)循環(huán) MOV20H,#0;復(fù)位MOV30H,#0MOV31H,#0 MOV A,21H INCA;分鐘自加一CJNEA,#3CH,GO2 SETB26H JB26H,AA AA:LCALLTIMEOUT1 CLR26H;分鐘計(jì)數(shù)循環(huán)MOV21H,#0H;復(fù)位MOV32H,#0MOV33H,#0 MOV A,22H INC A;小時(shí)自加一 CJNEA,#18H,GO3;小時(shí)計(jì)數(shù)循環(huán) MOV22H,#00H;復(fù)位MOV34H,#0MOV35H,#0 AJMPRET0GO1: MOV 20H,AMOVB,#0AHDIVABMOV31H,A;將A的低4位存入31單元MOV30H,B;將A的高4位存入30單元 AJMPRET0GO2:MOV21H,AMOVB,#0AHDIVABMOV33H,A;將A的低4位存入33單元MOV32H,B;將A的高4位存入32單元 AJMP RET0GO3: MOV 22H,AMOVB,#0AHDIVABMOV35H,A;將A的低4位存入35單元MOV34H,B;將A的高4位存入34單元 AJMP RET0RET0:POPPSW;恢復(fù)現(xiàn)場(chǎng)POPACCRETITIMEOUT1:MOVR1,22H INCR1X11:LCALLBZ1 LJMPDISPLAY1;調(diào)用喇叭響應(yīng)程序LCALLDELAY2LJMPDISPLAY1BZ1:MOVC,25H.1MOVP1.6,CCLRP1.7MOVR7,#0FFH;喇叭響應(yīng)時(shí)間T21:MOVR6,#0FFHT31:DJNZR6,T31DJNZR7,T21SETBP1.7 DJNZR1,X11RETDELAY:MOVR4,#015HDL00:MOVR5,#0FFHDL11:MOVR6,#9HDL12:DJNZR6,DL12DJNZR5,DL11DJNZR4,DL00RET;*********秒表定時(shí)**********TIMEA:MOV TH1,#0FCH;初值 MOV TL1,#018H DJNZR1,RET0 MOV R1,#0AH MOVA,27HINCA;毫秒自加一 CJNE A,#60H,GO1A;毫秒秒計(jì)數(shù)循環(huán) MOV27H,#0;復(fù)位MOV30H,#0MOV31H,#0 MOV A,28H INCA;秒自加一CJNEA,#3CH,GO2A MOV28H,#0H;復(fù)位MOV32H,#0MOV33H,#0 MOV A,29H INC A;分鐘自加一 CJNEA,#3CH,GO3A;分鐘計(jì)數(shù)循環(huán) MOV29H,#00H;復(fù)位MOV34H,#0MOV35H,#0 AJMPRET0GO1A: MOV 27H,AMOVB,#0AHDIVABMOV31H,A;將A的低4位存入31單元MOV30H,B;將A的高4位存入30單元 AJMPRET0GO2A:MOV28H,AMOVB,#0AHDIVABMOV33H,A;將A的低4位存入33單元MOV32H,B;將A的高4位存入32單元 AJMP RET0GO3A: MOV 29H,AMOVB,#0AHDIVABMOV35H,A;將A的低4位存入35單元MOV34H,B;將A的高4位存入34單元 AJMP RET0RET0A:RETI;********顯示子程序**********DISPLAY1: MOV R0,#30HMOVR3,#0FEHMOVA,R3PLAY1:MOVP2,AMOVA,@R0;取要顯示的數(shù)據(jù)MOVDPTR,#DSEG1;指向字形段碼首地址MOVCA,@A+DPTRCJNER0,#34H,PAORLA,#8
溫馨提示
- 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年高中英語 Unit 22 Environmental Protection Section Ⅶ Writing-報(bào)告(教師用書)教學(xué)實(shí)錄 北師大版選修8
- 人工智能訓(xùn)練師(高級(jí))職業(yè)技能鑒定參考題(附答案)
- 2025年度福建省職業(yè)院校技能大賽-護(hù)理技能賽項(xiàng)-高職組考試題庫(kù)-含答案
- 預(yù)防艾滋病活動(dòng)總結(jié)
- 圖書館工作總結(jié)
- 2025技術(shù)合作項(xiàng)目合同書(模板)
- 寫字樓物業(yè)管理服務(wù)合同范本
- 不銹鋼電梯門套制作安裝合同范本
- 2025照明設(shè)備采購(gòu)合同范本樣本
- 醫(yī)學(xué)資料 醫(yī)院護(hù)理交接班制度培訓(xùn)-2 學(xué)習(xí)課件
- 浙江嘉華晶體纖維有限公司年產(chǎn)300噸超高溫陶瓷纖維棉及600噸高溫陶瓷纖維棉制品環(huán)境影響報(bào)告表
- 學(xué)習(xí)質(zhì)量評(píng)價(jià):SOLO分類理論
- 2023年上海學(xué)業(yè)水平考試生命科學(xué)試卷含答案
- 胰膽線陣超聲內(nèi)鏡影像病理圖譜
- 中醫(yī)內(nèi)科學(xué)總論-課件
- 免疫學(xué)防治(免疫學(xué)檢驗(yàn)課件)
- 消防水泵房操作規(guī)程
- 腹腔雙套管沖洗操作
- 《微型消防站建設(shè)標(biāo)準(zhǔn)》
- 中國(guó)少年先鋒隊(duì)入隊(duì)申請(qǐng)書 帶拼音
- 環(huán)氧粉末涂料爆炸危險(xiǎn)性評(píng)估
評(píng)論
0/150
提交評(píng)論