基于AT89C51單片機的數(shù)字電子時鐘設(shè)計.docx
單片機課程設(shè)計題目:數(shù)字電子時鐘設(shè)計指導(dǎo)老師: 制作人員: 學(xué)號 班級:自動化 日期: 總評成績:課程任務(wù)設(shè)計書設(shè)計題目:數(shù)字電子時鐘的設(shè)計設(shè)計任務(wù):1.設(shè)計一款時,分,秒可調(diào)數(shù)字電子時鐘可整點報時;2.設(shè)計三個按鍵K1,K2和K3,用于調(diào)節(jié)時鐘的時間;3.用8個、七段LED數(shù)碼管作為顯示設(shè)備,開機顯示00-00-00;摘要本設(shè)計采用AT89C51單片機為核心器件。具有電子鐘顯示,時間調(diào)整,整點報時等功能。此數(shù)字鐘是一個將“時”、“分”、“秒”顯示于人的視覺器官的計時裝置。根據(jù)60秒為一分、60分為1小時的計數(shù)周期,構(gòu)成秒、分、時的計數(shù),實現(xiàn)計時的功能。而且能顯示清晰、直觀的數(shù)字符號。針對數(shù)字鐘會產(chǎn)生誤差的現(xiàn)象,就設(shè)計有校準(zhǔn)時間的功能。 AT89C51單片機控制的數(shù)字鐘的硬件結(jié)構(gòu)與軟件設(shè)計,給出了匯編語言源程序。此數(shù)字鐘是一個將“時”、“分”、“秒”顯示于人的視覺器官的計時裝置。它的計時周期為24小時,顯示滿刻度為24時00分00秒,另外應(yīng)有校時功能。電路由時鐘脈沖發(fā)生器、時鐘計數(shù)器、譯碼驅(qū)動電路和數(shù)字顯示電路以及時間調(diào)整電路組成。用晶體振蕩器產(chǎn)生時間標(biāo)準(zhǔn)信號,這里采用石英晶體振蕩器。根據(jù)60秒為1分、60分為1小時、24小時為1天的計數(shù)周期,分別組成兩個60進制(秒、分)、一個24進制(時)的計數(shù)器。顯示器件選用LED八段數(shù)碼管。在譯碼顯示電路輸出的驅(qū)動下,顯示出清晰、直觀的數(shù)字符號。針對數(shù)字鐘會產(chǎn)生走時誤差的現(xiàn)象,在電路中就設(shè)計有有校準(zhǔn)時間功能的電路。關(guān)鍵字:Proteus,KeiluVision,AT89C51,電子鐘,整點報時目錄摘 要3第1章概述.51.1 設(shè)計背景.51.2系統(tǒng)方案論證與設(shè)計.5第2章系統(tǒng)硬件設(shè)計.72.1 系統(tǒng)總電路的設(shè)計72.1.1系統(tǒng)的總框圖2.1.2芯片的選擇72.2最小系統(tǒng)設(shè)計92.2.1時鐘電路的選擇與設(shè)計102.2.2復(fù)位電路的選擇與設(shè)計102.3 發(fā)聲電路的選擇與設(shè)計102.4 按鍵電路的選擇與設(shè)計112.5顯示電路的選擇與設(shè)計11第3章 系統(tǒng)軟件設(shè)計12 3.1 系統(tǒng)流程圖12 3.2 子程序的介紹133.2.1顯示子程序133.2.2按鍵掃描程序14第4章 軟件仿真164.1 Protues軟件的介紹164.2keil軟件的介紹164.3仿真電路圖174.4仿真結(jié)果與分析17小結(jié)19參考文獻20附錄A 電路圖21附錄B程序21第1章概述1.1 設(shè)計背景單片機是20世紀(jì)70年代中期發(fā)展起來的一種大規(guī)模集成電路器件。它在一塊硅芯片內(nèi)集成了各種計算機功能部件,構(gòu)成一種單片式的微型計算機。20世紀(jì)80年代以來,隨著國際上單片機迅速發(fā)展,其應(yīng)用不斷深入,新技術(shù)層出不窮。也因為其體積小,功能強,成本地,尤其是隨著CMOS工藝的發(fā)展,耗電也大大低于其它相似的電子產(chǎn)品,被廣泛應(yīng)用于智能產(chǎn)品和工業(yè)控制之中。其中最著名的生產(chǎn)商就是INTEL公司,其開發(fā)的51系列單片機是目前市場上最典型和最有代表性的一種,也是國內(nèi)市場用的最多的單片機。在其之后,世界上許多著名的半導(dǎo)體廠商相繼生產(chǎn)和這個系列兼容的單片機,這就使得其產(chǎn)品型號不斷地增加,品種不斷豐富,功能不斷增強。在國內(nèi)外單片機應(yīng)用中占有非常重要的地位。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalshProgrammableandErasableReadOnlyMemory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案1.2 系統(tǒng)方案論證與設(shè)計方案一:由若干個74LS160、電阻、開關(guān)、電容、LED數(shù)碼管、與非門和74153組成。這個方案較復(fù)雜,組成部件較多,連線復(fù)雜,不夠簡潔;但是思路清晰。方案二:由主芯片AT89C51、電阻、電容、8個8段LED數(shù)碼管、開關(guān)組成。這個方案較為簡化,應(yīng)用部件少,連線簡單。為了節(jié)約時間成本,所以在本設(shè)計中采用方案二來設(shè)計數(shù)字時鐘電路。第2章系統(tǒng)硬件設(shè)計2.1 系統(tǒng)總電路的設(shè)計2.1.1 系統(tǒng)的組成與總框圖數(shù)字鐘實際上是一個對標(biāo)準(zhǔn)頻率(1HZ)進行計數(shù)的計數(shù)電路,由于計數(shù)的起始時間不可能與標(biāo)準(zhǔn)時間一致,故需要在電路上加一個校時電路,同時標(biāo)準(zhǔn)的1MHZ時間信號必須做到準(zhǔn)確穩(wěn)定,通常使用石英晶體振蕩器電路構(gòu)成數(shù)字鐘。時鐘電路由主芯片AT89C51和時鐘電路,復(fù)位電路,按鍵電路,LED顯示,聲響電路組成。數(shù)字鐘系統(tǒng)的總框圖如圖2.1所示:AT89C51時鐘電路LED顯示復(fù)位電路按鍵電路發(fā)聲電路圖2.1 系統(tǒng)的總框圖2.1.2 芯片的選擇通過對多種單片機性能的分析,最終認(rèn)為AT89C51是最理想的電子時鐘開發(fā)芯片。所以本設(shè)計采用AT89C51芯片,AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器,器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,且具有4K字節(jié)可編程閃爍存儲器和1000寫/擦循環(huán),數(shù)據(jù)保留時間為10年等特點,是最好的選擇。圖2.2 AT89C51AT89C51:VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏極開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。2.2 最小系統(tǒng)設(shè)計2.2.1 時鐘電路的選擇與設(shè)計時鐘電路是產(chǎn)生CPU校準(zhǔn)時序,是單片機的控制核心。AT89C51的時鐘信號可通過內(nèi)部振蕩方式和外部振蕩方式兩種方式得到。本次設(shè)計使用的是片內(nèi)振蕩方式,通過外接12MHz的晶振來實現(xiàn)時鐘電路的時序控制。在使用片內(nèi)振蕩器時,XTAL1和XTAL2分別為反向放大器的輸入端和輸出端。外接晶體以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中。當(dāng)使用外部時鐘驅(qū)動時,XTAL2引腳應(yīng)懸空,而由XTAL1引腳上的信號驅(qū)動,或者XTAL1引腳應(yīng)懸空,而由XTAL2引腳上的信號驅(qū)動。外部振蕩器再通過一個2分頻的觸發(fā)器來形成內(nèi)部時鐘所需要的信號。具體的電路接法如圖2.3:圖2.3 時鐘電路2.2.2 復(fù)位電路的選擇與設(shè)計根據(jù)應(yīng)用的要求,復(fù)位操作通常由上電復(fù)位和開關(guān)復(fù)位2種基本形式。本系統(tǒng)使用的復(fù)位電路是在基本復(fù)位電路的基礎(chǔ)上所改進的一種混合方法,使其兩種形式巧妙地糅合在一起,即做到了上電復(fù)位,又可以在發(fā)生預(yù)料之外的問題時,隨時進行開關(guān)復(fù)位單片機。具體的電路連接接法如圖2.4:圖2.4 復(fù)位電路單片機復(fù)位后的狀態(tài):單片機的復(fù)位操作使單片機進入初始化過程,其中包括使程序計數(shù)器PC0000H,P0P3FFH,SP07H,其他寄存器處于零。這表明程序從0000H地址單元開始執(zhí)行。單片機復(fù)位后不改變片內(nèi)RAM區(qū)中的內(nèi)容。2.3 發(fā)聲電路的選擇與設(shè)計報時器一端p1.0,一端接地,當(dāng)分顯示到達60,報時器報時。圖2.5 發(fā)聲電路2.4 按鍵電路的選擇與設(shè)計P2.6/A14,P2.7/A15,P3.0/RXD,P3.5/T1,P3.6/WR,P3.7/RD并聯(lián)接開關(guān)再接地。按ST按鍵計時開始;PA為復(fù)位按鍵,開始復(fù)位;CL為清零按鍵,全部清零,S為秒按鍵,按下秒加1;M為分按鍵,按下分加1;H為小時按鍵,按下小時加1圖2.6 按鍵電路2.5 顯示電路的選擇與設(shè)計系統(tǒng)默認(rèn)的電源是5V,AT89C51也是5V,可以直接接入。第3章 系統(tǒng)軟件設(shè)計3.1 系統(tǒng)流程圖開始初始化秒加1NY+秒=60?分加1NY分=60?小時加1N小時=24?圖3.1 系統(tǒng)流程圖3.2 子程序的介紹3.2.1顯示子程序T0INT: MOV TH0,#03CH;定時中斷子程序。重裝定時常數(shù) MOV TL0,#0B0H ;TL0=0B0H MOV R4,#20 ;R4=20 DJNZ R4,T0INTR ;50msX20=1S,未滿20次,跳出中斷子程序 INC 26H ;1S,秒存儲單元內(nèi)數(shù)+1 INC R0 ;響鈴時間 MOV A,26H;A=26H CJNE A,#60,T0INTR ;未滿60S,跳出中斷。 MOV 26H,#0 ;滿60S,秒單元清零 INC 27H ;分+1 MOV A,27H;A=27H CJNE A,#60,T0INTR;比較立即數(shù)和A,不相等則轉(zhuǎn)移 MOV 27H,#0;27H=0 INC 28H;28H=28H+1 MOV A,28H;A=28H CJNE A,#24,T0INTR;比較立即數(shù)和A,不相等則轉(zhuǎn)移 MOV 28H,#0;28H=03.2.2 按鍵掃描程序kS: ACALL DISP;調(diào)用子程序DISP ACALL ALARM ;調(diào)用子程序ALARM JB SEC,KM ;秒調(diào)整按鍵 ACALL DISP;調(diào)用子程序DISP JNB SEC,$-2 ;直接尋址位為“0”,則轉(zhuǎn)移 AJMP SINC;絕對轉(zhuǎn)移kM: JB MIN,KH ;分調(diào)整按鍵 ACALL DISP;調(diào)用子程序DISP JNB MIN,$-2 ;直接尋址位為“0”,則轉(zhuǎn)移 AJMP MINC;絕對轉(zhuǎn)移KH: JB HOUR,K1 ;時調(diào)整按鍵 ACALL DISP;調(diào)用子程序DISP JNB HOUR,$-2 ;直接尋址位為“0”,則轉(zhuǎn)移 AJMP HINC ;絕對轉(zhuǎn)移第四章 軟件仿真4.1 Protues軟件的介紹Proteus軟件是英國Lab Center Electronics公司出版的EDA工具軟件它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前比較好的仿真單片機及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機愛好者、從事單片機教學(xué)的教師、致力于單片機開發(fā)應(yīng)用的科技工作者的青睞。一臺計算機、一套電子仿真軟件,在加上一本虛擬實驗教程,就可相當(dāng)于一個設(shè)備先進的實驗室。以虛代實、以軟代硬,就建立一個完善的虛擬實驗室。在計算機上學(xué)習(xí)電工基礎(chǔ),模擬電路、數(shù)字電路、單片機應(yīng)用系統(tǒng)等課程,并進行電路設(shè)計、仿真、調(diào)試等?;静僮鞑襟E: 1打開PROTEUS 操作界面。2選擇“P”,從元件庫中提取需要的元器件(選中雙擊),選擇完點OK。 3在編輯區(qū)畫電路圖,修改元件參數(shù)。4進行電路仿真。 5保存文件。4.2 keil軟件的介紹Keil C51是美國Keil Software公司出品的51系列兼單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括c編譯器、宏匯編、鏈接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(Vision)將這些部分組合在一起。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調(diào)試工具也會令你事半功倍。本次設(shè)計采用的 keil uvision4。它是2009年2月發(fā)布的,Keil Vision4引入靈活的窗口管理系統(tǒng),使開發(fā)人員能夠使用多臺監(jiān)視器,并提供了視覺上的表面對窗口位置的完全控制的任何地方。新的用戶界面可以更好地利用屏幕空間和更有效地組織多個窗口,提供一個整潔,高效的環(huán)境來開發(fā)應(yīng)用程序。4.3 仿真電路圖該電路圖是由AT89C51和時鐘電路,復(fù)位電路,按鍵電路,LED顯示,聲響電路組成。圖4.1仿真電路圖4.4 仿真結(jié)果與分析圖4.2開始電路圖當(dāng)摁下H鍵時顯示結(jié)果01-00-00,如下圖所示:圖4.3 時鐘顯示01-00-00并且摁下分鐘鍵,分鐘也會相應(yīng)加一,秒鐘也是如此。ST為開始按鍵,摁下后始終開始運行,P鍵為復(fù)位鍵,CL鍵為清除鍵,摁下后時鐘顯示為00-00-00。小 結(jié)本設(shè)計與論文用了近兩個星期的時間,系統(tǒng)設(shè)計以單片機AT89系列為核心的控制模塊,充分利用了所學(xué)知識,單片機最小系統(tǒng),LED數(shù)碼管顯示模塊電路,以及信號的控制,從而實現(xiàn)了時分秒顯示和時間顯示調(diào)整,以及整點報時。然而在因為對程序總在很多忙點,因此產(chǎn)生了很多淺顯的錯誤,導(dǎo)致仿真結(jié)果不能正確顯示,甚至直接失敗。后來通過老師和同學(xué)的指導(dǎo)以及查閱資料,解決了大部分問題,最終完成設(shè)計。由于時間有限,還存在一些不足之處,在功能上的擴展還沒實現(xiàn)。在做設(shè)計的過程中遇到了這樣或那樣的問題,但通過老師和同學(xué)的幫助總的來說還算順利。通過查詢有關(guān)方面的書籍和網(wǎng)頁,增強了自已分析處理電路設(shè)計過程中的問題的能力。在畢業(yè)設(shè)計的這段時間我復(fù)習(xí)了很多知識,對以前的數(shù)字電路又有了一定的新認(rèn)識,在以后的學(xué)習(xí)生活過程中,我會更加的努力學(xué)習(xí)專業(yè)技能以及積極向上的生活態(tài)度。在此我要感謝我的小組組長,組長給了我相對自由的空間,鍛煉了我獨立思考的能力樹立了對自己工作能力的信心,當(dāng)我需要幫助時組長會耐心的幫我講解,使我的設(shè)計能夠順利完成。再次感謝在此次設(shè)計中給我很多幫助的指導(dǎo)老師和同學(xué)。參考文獻1胡輝,單片機應(yīng)用系統(tǒng)設(shè)計與訓(xùn)練,中國水利水電出版社,2004.9 155-1632曹巧媛,單片機原理及應(yīng)用,北京:電子工業(yè)出版社,1997.7 364-370 3趙秀珍,單永磊,單片微型計算機原理及其應(yīng)用,北京:中國水利水電出版社,2001.8 546-5524張毅剛,修林成,胡振江,MCS-51單片機應(yīng)用設(shè)計,哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1990.8 256-235 5張洪潤,蘭清華,單片機應(yīng)用技術(shù)教程,北京:清華大學(xué)出版社,1997.11 375-386附錄A 電路圖附錄B 程序STRT EQU P2.6 ;引腳定義STP EQU P2.7 CLRR EQU P3.0SEC EQU P3.5MIN EQU P3.6 HOUR EQU P3.7 ORG 00H AJMP MAIN ORG 0BH AJMP T0INT ORG 1BH AJMP T1INT ORG 30H MAIN: MOV SP,#60H MOV R4,#20 MOV TMOD,#11H MOV TH0,#03CH; 12M晶振時定時初值取#3CB0H MOV TL0,#0B0H MOV TH1,#0FEH MOV TL1,#0CH SETB EA SETB ET0 SETB ET1kS: ACALL DISP ACALL ALARM JB SEC,KM ;秒調(diào)整按鍵 ACALL DISP JNB SEC,$-2 AJMP SINCkM: JB MIN,KH ;分調(diào)整按鍵 ACALL DISP JNB MIN,$-2 AJMP MINCKH: JB HOUR,K1 ;時調(diào)整按鍵 ACALL DISP JNB HOUR,$-2 AJMP HINC SINC: JB 7FH,SINC_A INC 26H ;秒調(diào)整 MOV A,26H CJNE A,#60,SINC0 MOV 26H,#0 AJMP SINC0SINC_A: INC 36H ;鬧秒調(diào)整 MOV A,36H CJNE A,#60,SINC0 MOV 36H,#0SINC0: AJMP KSMINC: JB 7FH,MINC_A INC 27H ;分調(diào)整 MOV A,27H CJNE A,#60,MINC0 MOV 27H,#0MINC_A:INC 37H ;鬧分調(diào)整 MOV A,37H CJNE A,#60,MINC0 MOV 37H,#0MINC0:AJMP KMHINC: JB 7FH,HINC_A INC 28H ;時調(diào)整 MOV A,28H CJNE A,#24,HINC0 MOV 28H,#0HINC_A:INC 38H ;鬧時調(diào)整 MOV A,38H CJNE A,#24,HINC0 MOV 38H,#0HINC0: AJMP KH k1: ACALL DISP ;開始鍵 JB STRT,K2 ACALL DISP JNB STRT,$-2 AJMP STARTk2: JB STP,K3 ;暫停鍵 ACALL DISP JNB STP,STOP AJMP CL_ALK3: JB CLRR,KS0 ACALL DISP JNB CLRR,CLEAR ;清零鍵 KS0: AJMP KSSTART: CPL TR0 ;開始/暫停 SETB 7DH ;7DH為開始鍵按下標(biāo)志,此作為允許鬧鈴標(biāo)志 AJMP K1STOP: CLR TR0 AJMP K2CL_AL: CPL 7FH ;7FH作時鐘和鬧鈴標(biāo)志位 AJMP K2CLEAR: CLR TR0 ;清零 MOV A,#0 MOV 26H,A MOV 27H,A MOV 28H,A MOV 36H,A MOV 37H,A MOV 38H,A CLR 7DH AJMP KSDISP: JB 7FH,DISP_A MOV 29H,26H ;秒送秒顯示緩存 MOV 2AH,27H MOV 2BH,28H AJMP DISP1DISP_A:MOV 29H,36H MOV 2AH,37H MOV 2BH,38HDISP1: MOV A,29H MOV B,#10 DIV AB MOV 20H,B ;余數(shù)(秒個位數(shù)) MOV 21H,A ;商(秒十位數(shù)) MOV A,2AH MOV B,#10 DIV AB MOV 22H,B ;余數(shù)(分個位數(shù)) MOV 23H,A ;商(分十位數(shù)) MOV A,2BH MOV B,#10 DIV AB MOV 24H,B ;余數(shù)(時個位數(shù)) MOV 25H,A ;商(時十位數(shù)) MOV A,20H ;秒個位 ACALL SEG7 MOV P0,A CLR P2.0 ACALL DLY SETB P2.0 MOV A,21H ;秒十位 ACALL SEG7 MOV P0,A CLR P2.1 ACALL DLY SETB P2.1 MOV A,22H ;分個位 ACALL SEG7 MOV P0,A CLR P2.2 ACALL DLY SETB P2.2 MOV A,23H ;分十位 ACALL SEG7 MOV P0,A CLR P2.3 ACALL DLY SETB P2.3 MOV A,24H ;時個位 ACALL SEG7 MOV P0,A CLR P2.4 ACALL DLY SETB P2.4 MOV A,25H ;時十位 ACALL SEG7 MOV P0,A CLR P2.5 ACALL DLY SETB P2.5 CLR P1.1 ;顯示分隔符 MOV A,#40H MOV P0,A ACALL DLY SETB P1.1 CLR P1.2 ;顯示分隔符 MOV A,#40H MOV P0,A ACALL DLY SETB P1.2 RETALARM: JNB 7DH,RT ;開始鍵未按下跳出 MOV A,28H ;開機時,時分秒都為0,跳出 JZ AL0M AJMP ALARM1AL0M: MOV A,27H JZ AL0S AJMP ALARM1AL0S: MOV A,26H JZ RT ALARM1:MOV A,28H ;比較小時 CJNE A,38H,AL ;不等返回,相等,轉(zhuǎn)分鐘比較 MOV A,27H ;比較分鐘 CJNE A,37H,AL MOV A,26H ;比較秒 CJNE A,36H,AL AJMP ALARM2 ;轉(zhuǎn)鬧鈴AL: MOV A,28H ;整點提醒 JZ RT ;小時不是00,判分是不是00 MOV A,27H JNZ RT ;分不是00,跳出 MOV A,26H JNZ RT AJMP ALARM3 ;秒不為00,跳出。為00,整點提醒ALARM2: SETB TR1 ;鬧鈴3 S MOV R0,#0 AJMP RTALARM3: SETB TR1;整點提醒1S MOV R0,#2RT:RETT0INT: MOV TH0,#03CH;定時中斷子程序。重裝定時常數(shù) MOV TL0,#0B0H MOV R4,#20 DJNZ R4,T0INTR ;50msX20=1S,未滿20次,跳出中斷子程序 INC 26H ;1S,秒存儲單元內(nèi)數(shù)+1 INC R0 ;響鈴時間 MOV A,26H CJNE A,#60,T0INTR ;未滿60S,跳出中斷。 MOV 26H,#0 ;滿60S,秒單元清零 INC 27H ;分+1 MOV A,27H CJNE A,#60,T0INTR MOV 27H,#0 INC 28H MOV A,28H CJNE A,#24,T0INTR MOV 28H,#0T0INTR: RETIT1INT:MOV TH1,#0FEH MOV TL1,#0CH CPL P1.0 CJNE R0,#3,T1RTI ;鬧鈴時間設(shè)為5秒 CLR TR1 ;關(guān)鬧鈴T1RTI:RETIDLY:MOV R7,#20 MOV R6,#25 DJNZ R6,$ DJNZ R7,$-4 RETSEG7: INC A MOVC A,A+PC RETDB 03FH ;0 共陰DB 006H ;1DB 05BH ;2DB 04FH ;3DB 066H ;4DB 06DH ;5DB 07DH ;6DB 007H ;7DB 07FH ;8DB 06FH ;9END