基于單片機(jī)的數(shù)字時(shí)鐘_第1頁(yè)
基于單片機(jī)的數(shù)字時(shí)鐘_第2頁(yè)
基于單片機(jī)的數(shù)字時(shí)鐘_第3頁(yè)
基于單片機(jī)的數(shù)字時(shí)鐘_第4頁(yè)
基于單片機(jī)的數(shù)字時(shí)鐘_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單片機(jī)/微機(jī)接口課程設(shè)計(jì)說明書PAGEPAGE5單片機(jī)/微機(jī)接口課程設(shè)計(jì)說明書PAGEI目錄TOC\o"1-2"\h\z\u1設(shè)計(jì)任務(wù)與要求 12設(shè)計(jì)方案 23硬件設(shè)計(jì) 33.1單片機(jī)型號(hào)的選擇 33.2數(shù)碼管顯示工作原理 33.3鍵盤電路設(shè)計(jì) 43.4整個(gè)電路原理圖 54軟件設(shè)計(jì) 64.1程序流程圖 64.2程序設(shè)計(jì) 84.3仿真結(jié)果 124.4仿真結(jié)果分析 135小結(jié) 146附錄 157參考文獻(xiàn) 241設(shè)計(jì)任務(wù)與要求1.設(shè)計(jì)一個(gè)基于單片機(jī)的電子時(shí)鐘,并且能夠?qū)崿F(xiàn)時(shí)分秒的現(xiàn)實(shí)和調(diào)節(jié)。2.設(shè)計(jì)出硬件電路。3.設(shè)計(jì)出軟件編程方法,并寫出源代碼。4.用PROTEUS進(jìn)行仿真。5.用匯方式實(shí)現(xiàn)目的。7.系統(tǒng)的各各功能模塊要編語言編實(shí)現(xiàn)程序設(shè)計(jì)。6.利用查表,中斷等清楚,有序。8.程序運(yùn)行時(shí)有友好的用戶界面。2設(shè)計(jì)方案本設(shè)計(jì)主要設(shè)計(jì)了一個(gè)基于AT89C51單片機(jī)的電子時(shí)鐘。并在數(shù)碼管上顯示相應(yīng)的時(shí)間。并通過一個(gè)控制鍵用來實(shí)現(xiàn)時(shí)間的調(diào)節(jié)和是否進(jìn)入省電模式的轉(zhuǎn)換。應(yīng)用Proteus的ISIS軟件實(shí)現(xiàn)了單片機(jī)電子時(shí)鐘系統(tǒng)的設(shè)計(jì)與仿真。該方法仿真效果真實(shí)、準(zhǔn)確,節(jié)省了硬件資源。該設(shè)計(jì)的硬件部分主要包括89C51多功能接口芯片用于開發(fā)電子時(shí)鐘芯片、LED七段數(shù)碼顯示器用于顯示時(shí)間、8031集成定時(shí)器用于定時(shí)、0.125W、8歐姆的揚(yáng)聲器用于定時(shí)發(fā)聲。軟件部分包括主程序、定時(shí)計(jì)數(shù)中斷程序、時(shí)間調(diào)整程序、延時(shí)程序四大模塊。通過中斷程序進(jìn)行定時(shí)器計(jì)數(shù),時(shí)間調(diào)整程序是當(dāng)鍵按下時(shí)間小于1秒,關(guān)閉顯示(省電)進(jìn)入調(diào)節(jié)時(shí)間狀態(tài),延時(shí)程序用于時(shí)間的延遲。先設(shè)計(jì)個(gè)秒鐘程序,在秒鐘程序中先不設(shè)計(jì)按鈕,直接通電運(yùn)行,使用40H存放計(jì)數(shù)值,從00—59,一直循環(huán),把40H中的數(shù)值拆分成個(gè)位和十位,分別存在30H與31H中,要求動(dòng)態(tài)掃描時(shí),使用21H當(dāng)標(biāo)志位,用指令JB控制顯示個(gè)位與十位,程序中使用中間寄存器R0與R1用于存放拆分后的字型,再傳到30H與31H中去,再設(shè)計(jì)時(shí)鐘程序。3硬件設(shè)計(jì)3.1單片機(jī)型號(hào)的選擇通過對(duì)多種單片機(jī)性能的分析,最終認(rèn)為89C51是最理想的電子時(shí)鐘開發(fā)芯片。89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS8位微處理器,器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的89C51是一種高效微控制器,而且它與MCS-51兼容,且具有4K字節(jié)可編程閃爍存儲(chǔ)器和1000寫/擦循環(huán),數(shù)據(jù)保留時(shí)間為10年等特點(diǎn),是最好的選擇。3.2數(shù)碼管顯示工作原理數(shù)碼管是一種把多個(gè)LED顯示段集成在一起的顯示設(shè)備。有兩種類型,一種是共陽型,一種是共陰型。共陽型就是把多個(gè)LED顯示段的陽極接在一起,又稱為公共端。共陰型就是把多個(gè)LED顯示段的陰極接在一起,即為公共商。陽極即為二極管的正極,又稱為正極,陰極即為二極管的負(fù)極,又稱為負(fù)極。通常的數(shù)碼管又分為8段,即8個(gè)LED顯示段,這是為工程應(yīng)用方便如設(shè)計(jì)的,分別為A、B、C、D、E、F、G、DP,其中DP是小數(shù)點(diǎn)位段。而多位數(shù)碼管,除某一位的公共端會(huì)連接在一起,不同位的數(shù)碼管的相同端也會(huì)連接在一起。即,所有的A段都會(huì)連在一起,其它的段也是如此,這是實(shí)際最常用的用法。數(shù)碼管顯示方法可分為靜態(tài)顯示和動(dòng)態(tài)顯示兩種。靜態(tài)顯示就是數(shù)碼管的8段輸入及其公共端電平一直有效。動(dòng)態(tài)顯示的原理是,各個(gè)數(shù)碼管的相同段連接在一起,共同占用8位段引管線;每位數(shù)碼管的陽極連在一起組成公共端。利用人眼的視覺暫留性,依次給出各個(gè)數(shù)碼管公共端加有效信號(hào),在此同時(shí)給出該數(shù)碼管加有效的數(shù)據(jù)信號(hào),當(dāng)全段掃描速度大于視覺暫留速度時(shí),顯示就會(huì)清晰顯示出來。圖3.1共陰數(shù)碼管3.3鍵盤電路設(shè)計(jì)該設(shè)計(jì)只用了一個(gè)鍵盤,但實(shí)現(xiàn)的功能卻是比較完善,減少了硬件資源的損耗,該鍵盤可以實(shí)現(xiàn)小時(shí)和分鐘的調(diào)節(jié)以及控制是否進(jìn)入省電模式。當(dāng)按鍵按下又松開,可以實(shí)現(xiàn)屏蔽數(shù)碼管顯示的功能,達(dá)到省電的目的;直接按下不松開,則可以通過按鍵實(shí)現(xiàn)分鐘的累加,每按一次分鐘加一;而連續(xù)兩次按下按鍵不放松,則可實(shí)現(xiàn)小時(shí)的調(diào)節(jié),同樣每按一次小時(shí)加一。達(dá)到時(shí)間調(diào)節(jié)的目的。圖3.2多功能控制鍵3.4整個(gè)電路原理圖圖3.3系統(tǒng)電路原理圖4軟件設(shè)計(jì)4.1程序流程圖T0中斷入口T0中斷入口通過查表方式顯示數(shù)據(jù)數(shù)碼位選加1位選數(shù)值=8嗎?位選數(shù)值=0秒計(jì)數(shù)加1秒計(jì)數(shù)=500嗎?秒計(jì)數(shù)=0SECOND加1SECOND=60嗎?SECOND=0,并MINITE加1MINITE=60嗎?MINITE=0,并HOUR加1HOUR=24嗎?HOUR=0顯示數(shù)據(jù)處理中斷返回圖4.2中斷處理流程圖開始開始計(jì)數(shù)單元清零TH0,TL0裝入初值開中斷,并允許T0中斷秒按鍵識(shí)別成功否SECOND加1SECOND=60嗎?SECOND=0顯示數(shù)據(jù)處理分按鍵識(shí)別成功否?MINITE加1MINITE=60嗎?MINITE=0顯示數(shù)據(jù)處理分按鍵識(shí)別成功否?HOUR加1HOUR=24嗎?HOUR=0顯示數(shù)據(jù)處理結(jié)束圖4.2主程序流程4.2程序設(shè)計(jì)本系統(tǒng)的軟件系統(tǒng)主要可分為主程序、定時(shí)計(jì)數(shù)中斷程序、時(shí)間調(diào)整程序、延時(shí)程序四大模塊。在程序設(shè)計(jì)過程中,加強(qiáng)了部分軟件抗干擾措施,下面對(duì)部分模塊作介紹。定時(shí)計(jì)數(shù)中斷程序:MOVTMOD,#00H;寫控制字MOVTH0,#0F0H;寫定時(shí)常數(shù)MOVTLO,#0CHSETBTR0;啟動(dòng)T0SETBETO;允許T0中斷SETBEA;開放CPU中斷AJMP$時(shí)間調(diào)整程序:SETMM:cLRET0;關(guān)定時(shí)器T0中斷CLRTR0;關(guān)閉定時(shí)器T0LCALLDL1S;調(diào)用1秒延時(shí)程序JBP3.7,CLOSEDIS;鍵按下時(shí)間小于1秒,關(guān)閉顯示(省電)MOVR2,#06H;進(jìn)入調(diào)時(shí)狀態(tài),賦閃爍定時(shí)初值SETBET1;允許T1中斷SETBTR1;開啟定時(shí)器T1SET2:JNBP3.7,SET1;P3.7口為0(鍵未釋放),等待SETB00H;鍵釋放,分調(diào)整閃爍標(biāo)志置1SET4:JBP3.7,SET3;等待鍵按下LCALLDL05S;有鍵按下,延時(shí)0.5秒JNBP3.7,SETHH;按下時(shí)間大于0.5秒轉(zhuǎn)調(diào)小時(shí)狀態(tài)MOVR0,#77H;按下時(shí)間小于0.5秒加1分鐘操作LCALLADD1;調(diào)用加1子程序MOVA,R3;取調(diào)整單元數(shù)據(jù)CLRC;清進(jìn)位標(biāo)志CJNEA,#60H,HHH;調(diào)整單元數(shù)據(jù)與60比較HHH:JCSET4;調(diào)整單元數(shù)據(jù)小于60轉(zhuǎn)SET4循環(huán)LCALLCLR0;調(diào)整單元數(shù)據(jù)大于或等于60時(shí)清0CLRC;清進(jìn)位標(biāo)志AJMPSET4;跳轉(zhuǎn)到SET4循環(huán)CLOSEDIS:SETBET0;省電(LED不顯示)狀態(tài)。開T0中斷SETBTR0;開啟T0定時(shí)器(開時(shí)鐘)CLOSE:JBP3.7,CLOSE;無按鍵按下,等待。LCALLDISPLAY;有鍵按下,調(diào)顯示子程序延時(shí)削抖JBP3.7,CLOSE;是干擾返回CLOSE等待WAITH:JNBP3.7,WAITH;等待鍵釋放LJMPSTART1;返回主程序(LED數(shù)據(jù)顯示亮)SETHH:CLR00H;分閃爍標(biāo)志清除(進(jìn)入調(diào)小時(shí)狀態(tài))SETHH1:JNBP3.7,SET5;等待鍵釋放SETB01H;小時(shí)調(diào)整標(biāo)志置1SET6:JBP3.7,SET7;等待按鍵按下LCALLDL05S;有鍵按下延時(shí)0.5秒JNBP3.7,SETOUT;按下時(shí)間大于0.5秒退出時(shí)間調(diào)整MOVR0,#79H;按下時(shí)間小于0.5秒加1小時(shí)操作LCALLADD1;調(diào)加1子程序MOVA,R3;CLRC;CJNEA,#24H,HOUU;計(jì)時(shí)單元數(shù)據(jù)與24比較HOUU:JCSET6小于24轉(zhuǎn)SET6循環(huán)LCALLCLR0;大于或等于24時(shí)清0操作AJMPSET6;跳轉(zhuǎn)到SET6循環(huán)SETOUT:JNBP3.7,SETOUT1;調(diào)時(shí)退出程序。等待鍵釋放LCALLDISPLAY;延時(shí)削抖JNBP3.7,SETOUT;是抖動(dòng),返回SETOUT再等待CLR01H;清調(diào)小時(shí)標(biāo)志CLR00H;清調(diào)分標(biāo)志CLR02H;清閃爍標(biāo)志CLRTR1;關(guān)閉定時(shí)器T1CLRET1;關(guān)定時(shí)器T1中斷SETBTR0;開啟定時(shí)器T0SETBET0;開定時(shí)器T0中斷(計(jì)時(shí)開始)LJMPSTART1;跳回主程序SET1:LCALLDISPLAY;鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)分)AJMPSET2;防止鍵按下時(shí)無時(shí)鐘顯示SET3:LCALLDISPLAY;等待調(diào)分按鍵時(shí)時(shí)鐘顯示用AJMPSET4SET5:LCALLDISPLAY;鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)小時(shí))AJMPSETHH1;防止鍵按下時(shí)無時(shí)鐘顯示SET7:LCALLDISPLAY;等待調(diào)小時(shí)按鍵時(shí)時(shí)鐘顯示用AJMPSET6SETOUT1:LCALLDISPLAY;退出時(shí)鐘調(diào)整時(shí)鍵釋放等待AJMPSETOUT;防止鍵按下時(shí)無時(shí)鐘顯示延時(shí)程序:1MS延時(shí)程序,LED顯示程序用DL1MS:MOVR6,#14HDL1:MOVR7,#19HDL2:DJNZR7,DL2DJNZR6,DL1RET20MS延時(shí)程序,采用調(diào)用顯示子程序以改善LED的顯示閃爍現(xiàn)象DS20MS:ACALLDISPLAYACALLDISPLAYACALLDISPLAYRET4.3仿真結(jié)果圖4.3開始運(yùn)行程序仿真圖圖4.4運(yùn)行一段時(shí)間后仿真圖4.4仿真結(jié)果分析功能太過單調(diào),只能實(shí)現(xiàn)時(shí)分秒的顯示,設(shè)計(jì)比較簡(jiǎn)單。電路圖的設(shè)計(jì)過于單調(diào),用的器件太少,實(shí)現(xiàn)調(diào)節(jié)時(shí)間的按鈕太少,不能很好的實(shí)現(xiàn)時(shí)間的調(diào)節(jié)。在測(cè)試過程中,六位數(shù)碼顯示管只顯示五位數(shù)字,有一位數(shù)字不亮,通過多次的修改程序并在PROTEUS軟件環(huán)境中進(jìn)行仿真,最終解決了這個(gè)問題,同時(shí)也透露出本人在單片機(jī)電路設(shè)計(jì)和程序設(shè)計(jì)方面的不足。不過最后的仿真效果非常好,實(shí)現(xiàn)了預(yù)期的效果,能過通過多功能控制鍵調(diào)節(jié)時(shí)間和是否進(jìn)入省電模式,是一個(gè)比較令人滿意的設(shè)計(jì)。5小結(jié)在朱老師耐心的指導(dǎo)下,我順利完成了這次單片機(jī)課程設(shè)計(jì)課題中的電子時(shí)鐘設(shè)計(jì),通過這次的設(shè)計(jì)使我認(rèn)識(shí)到本人對(duì)單片機(jī)方面的知識(shí)知道的太少了,對(duì)于書本上的很多知識(shí)還不能靈活運(yùn)用,尤其是對(duì)程序設(shè)計(jì)語句的理解和運(yùn)用,不能夠充分理解每個(gè)語句的具體含義,導(dǎo)致編程的程序過于復(fù)雜,使得需要的存儲(chǔ)空間增大。損耗了過多的內(nèi)存資源。本次的設(shè)計(jì)使我從中學(xué)到了一些很重要的東西,那就是如何從理論到實(shí)踐的轉(zhuǎn)化,怎樣將我所學(xué)到的知識(shí)運(yùn)用到我以后的工作中去。在大學(xué)的課堂的學(xué)習(xí)只是在給我們灌輸專業(yè)知識(shí),而我們應(yīng)把所學(xué)的用到我們現(xiàn)實(shí)的生活中去,此次的電子時(shí)鐘設(shè)計(jì)給我奠定了一個(gè)實(shí)踐基礎(chǔ),我會(huì)在以后的學(xué)習(xí)、生活中磨練自己,使自己適應(yīng)于以后的競(jìng)爭(zhēng),同時(shí)在查找資料的過程中我也學(xué)到了許多新的知識(shí),在和同學(xué)協(xié)作過程中增進(jìn)同學(xué)間的友誼,使我對(duì)團(tuán)隊(duì)精神的積極性和重要性有了更加充分的理解。最后,感謝朱老師對(duì)我的細(xì)心的指導(dǎo),正是由于朱老師的細(xì)心的輔導(dǎo)和他提供給我們的參考資料,使得我的課程設(shè)計(jì)能夠順利的完成,6附錄ORG0000H;程序執(zhí)行開始地址LJMPSTART;跳到標(biāo)號(hào)START執(zhí)行ORG0003H;外中斷0中斷程序入口RETI;外中斷0中斷返回ORG000BH;定時(shí)器T0中斷程序入口LJMPINTT0;跳至INTTO執(zhí)行ORG0013H;外中斷1中斷程序入口RETI;外中斷1中斷返回ORG001BH;定時(shí)器T1中斷程序入口LJMPINTT1;跳至INTT1執(zhí)行ORG0023H;串行中斷程序入口地址RETI;串行中斷程序返回主程序開始;START:MOVR0,#70H;清70H-7AH共11個(gè)內(nèi)存單元MOVR7,#0BH;CLEARDISP:MOV@R0,#00H;INCR0;DJNZR7,CLEARDISP;MOV20H,#00H;清20H(標(biāo)志用)MOV7AH,#0AH;放入"熄滅符"數(shù)據(jù)MOVTMOD,#11H;設(shè)T0、T1為16位定時(shí)器MOVTL0,#0B0H;50MS定時(shí)初值(T0計(jì)時(shí)用)MOVTH0,#3CH;50MS定時(shí)初值MOVTL1,#0B0H;50MS定時(shí)初值(T1閃爍定時(shí)用)MOVTH1,#3CH;50MS定時(shí)初值SETBEA;總中斷開放SETBET0;允許T0中斷SETBTR0;開啟T0定時(shí)器MOVR4,#14H;1秒定時(shí)用初值(50MS×20)START1:LCALLDISPLAY;調(diào)用顯示子程序JNBP3.7,SETMM1;P3.7口為0時(shí)轉(zhuǎn)時(shí)間調(diào)整程序SJMPSTART1;P3.7口為1時(shí)跳回START1SETMM1:LJMPSETMM;轉(zhuǎn)到時(shí)間調(diào)整程序SETMM;;1秒計(jì)時(shí)程序;;INTT0:PUSHACC;累加器入棧保護(hù)PUSHPSW;狀態(tài)字入棧保護(hù)CLRET0;關(guān)T0中斷允許CLRTR0;關(guān)閉定時(shí)器T0MOVA,#0B7H;中斷響應(yīng)時(shí)間同步修正ADDA,TL0;低8位初值修正MOVTL0,A;重裝初值(低8位修正值)MOVA,#3CH;高8位初值修正ADDCA,TH0;MOVTH0,A;重裝初值(高8位修正值)SETBTR0;開啟定時(shí)器T0DJNZR4,OUTT0;20次中斷未到中斷退出ADDSS:MOVR4,#14H;20次中斷到(1秒)重賦初值MOVR0,#71H;指向秒計(jì)時(shí)單元(71H-72H)ACALLADD1;調(diào)用加1程序(加1秒操作)MOVA,R3;秒數(shù)據(jù)放入A(R3為2位十進(jìn)制數(shù)組合)CLRC;清進(jìn)位標(biāo)志CJNEA,#60H,ADDMM;ADDMM:JCOUTT0;小于60秒時(shí)中斷退出ACALLCLR0;大于或等于60秒時(shí)對(duì)秒計(jì)時(shí)單元清0MOVR0,#77H;指向分計(jì)時(shí)單元(76H-77H)ACALLADD1;分計(jì)時(shí)單元加1分鐘MOVA,R3;分?jǐn)?shù)據(jù)放入ACLRC;清進(jìn)位標(biāo)志CJNEA,#60H,ADDHH;ADDHH:JCOUTT0;小于60分時(shí)中斷退出ACALLCLR0;大于或等于60分時(shí)分計(jì)時(shí)單元清0MOVR0,#79H;指向小時(shí)計(jì)時(shí)單元(78H-79H)ACALLADD1;小時(shí)計(jì)時(shí)單元加1小時(shí)MOVA,R3;時(shí)數(shù)據(jù)放入ACLRC;清進(jìn)位標(biāo)志CJNEA,#24H,HOUR;HOUR:JCOUTT0;小于24小時(shí)中斷退出ACALLCLR0;大于或等于24小時(shí)小時(shí)計(jì)時(shí)單元清0OUTT0:MOV72H,76H;中斷退出時(shí)將分、時(shí)計(jì)時(shí)單元數(shù)據(jù)移MOV73H,77H;入對(duì)應(yīng)顯示單元MOV74H,78H;MOV75H,79H;POPPSW;恢復(fù)狀態(tài)字(出棧)POPACC;恢復(fù)累加器SETBET0;開放T0中斷RETI;中斷返回;;閃動(dòng)調(diào)時(shí)程序;;;T1中斷服務(wù)程序,用作時(shí)間調(diào)整時(shí)調(diào)整單元閃爍指示INTT1:PUSHACC;中斷現(xiàn)場(chǎng)保護(hù)PUSHPSW;MOVTL1,#0B0H;裝定時(shí)器T1定時(shí)初值MOVTH1,#3CH;DJNZR2,INTT1OUT;0.3秒未到退出中斷(50MS中斷6次)MOVR2,#06H;重裝0.3秒定時(shí)用初值CPL02H;0.3秒定時(shí)到對(duì)閃爍標(biāo)志取反JB02H,FLASH1;02H位為1時(shí)顯示單元"熄滅"MOV72H,76H;02H位為0時(shí)正常顯示MOV73H,77H;MOV74H,78H;MOV75H,79H;INTT1OUT:POPPSW;恢復(fù)現(xiàn)場(chǎng)POPACC;RETI;中斷退出FLASH1:JB01H,FLASH2;01H位為1時(shí),轉(zhuǎn)小時(shí)熄滅控制MOV72H,7AH;01H位為0時(shí),"熄滅符"數(shù)據(jù)放入分MOV73H,7AH;顯示單元(72H-73H),將不顯示分?jǐn)?shù)據(jù)MOV74H,78H;MOV75H,79H;AJMPINTT1OUT;轉(zhuǎn)中斷退出FLASH2:MOV72H,76H;01H位為1時(shí),"熄滅符"數(shù)據(jù)放入小時(shí)MOV73H,77H;顯示單元(74H-75H),小時(shí)數(shù)據(jù)將不顯示MOV74H,7AH;MOV75H,7AH;AJMPINTT1OUT;轉(zhuǎn)中斷退出;;加1子程序;;ADD1:MOVA,@R0;取當(dāng)前計(jì)時(shí)單元數(shù)據(jù)到ADECR0;指向前一地址SWAPA;A中數(shù)據(jù)高四位與低四位交換ORLA,@R0;前一地址中數(shù)據(jù)放入A中低四位ADDA,#01H;A加1操作DAA;十進(jìn)制調(diào)整MOVR3,A;移入R3寄存器ANLA,#0FH;高四位變0MOV@R0,A;放回前一地址單元MOVA,R3;取回R3中暫存數(shù)據(jù)INCR0;指向當(dāng)前地址單元SWAPA;A中數(shù)據(jù)高四位與低四位交換ANLA,#0FH;高四位變0MOV@R0,A;數(shù)據(jù)放入當(dāng)削地址單元中RET;子程序返回;;清零程序;;;對(duì)計(jì)時(shí)單元復(fù)零用CLR0:CLRA;清累加器MOV@R0,A;清當(dāng)前地址單元DECR0;指向前一地址MOV@R0,A;前一地址單元清0RET;子程序返回;;時(shí)鐘調(diào)整程序;;;當(dāng)調(diào)時(shí)按鍵按下時(shí)進(jìn)入此程序SETMM:CLRET0;關(guān)定時(shí)器T0中斷CLRTR0;關(guān)閉定時(shí)器T0LCALLDL1S;調(diào)用1秒延時(shí)程序JBP3.7,CLOSEDIS;鍵按下時(shí)間小于1秒,關(guān)閉顯示(省電)MOVR2,#06H;進(jìn)入調(diào)時(shí)狀態(tài),賦閃爍定時(shí)初值SETBET1;允許T1中斷SETBTR1;開啟定時(shí)器T1SET2:JNBP3.7,SET1;P3.7口為0(鍵未釋放),等待SETB00H;鍵釋放,分調(diào)整閃爍標(biāo)志置1SET4:JBP3.7,SET3;等待鍵按下LCALLDL05S;有鍵按下,延時(shí)0.5秒JNBP3.7,SETHH;按下時(shí)間大于0.5秒轉(zhuǎn)調(diào)小時(shí)狀態(tài)MOVR0,#77H;按下時(shí)間小于0.5秒加1分鐘操作LCALLADD1;調(diào)用加1子程序MOVA,R3;取調(diào)整單元數(shù)據(jù)CLRC;清進(jìn)位標(biāo)志CJNEA,#60H,HHH;調(diào)整單元數(shù)據(jù)與60比較HHH:JCSET4;調(diào)整單元數(shù)據(jù)小于60轉(zhuǎn)SET4循環(huán)LCALLCLR0;調(diào)整單元數(shù)據(jù)大于或等于60時(shí)清0CLRC;清進(jìn)位標(biāo)志AJMPSET4;跳轉(zhuǎn)到SET4循環(huán)CLOSEDIS:SETBET0;省電(LED不顯示)狀態(tài)。開T0中斷SETBTR0;開啟T0定時(shí)器(開時(shí)鐘)CLOSE:JBP3.7,CLOSE;無按鍵按下,等待。LCALLDISPLAY;有鍵按下,調(diào)顯示子程序延時(shí)削抖JBP3.7,CLOSE;是干擾返回CLOSE等待WAITH:JNBP3.7,WAITH;等待鍵釋放LJMPSTART1;返回主程序(LED數(shù)據(jù)顯示亮)SETHH:CLR00H;分閃爍標(biāo)志清除(進(jìn)入調(diào)小時(shí)狀態(tài))SETHH1:JNBP3.7,SET5;等待鍵釋放SETB01H;小時(shí)調(diào)整標(biāo)志置1SET6:JBP3.7,SET7;等待按鍵按下LCALLDL05S;有鍵按下延時(shí)0.5秒JNBP3.7,SETOUT;按下時(shí)間大于0.5秒退出時(shí)間調(diào)整MOVR0,#79H;按下時(shí)間小于0.5秒加1小時(shí)操作LCALLADD1;調(diào)加1子程序MOVA,R3;CLRC;CJNEA,#24H,HOUU;計(jì)時(shí)單元數(shù)據(jù)與24比較HOUU:JCSET6;小于24轉(zhuǎn)SET6循環(huán)LCALLCLR0;大于或等于24時(shí)清0操作AJMPSET6;跳轉(zhuǎn)到SET6循環(huán)SETOUT:JNBP3.7,SETOUT1;調(diào)時(shí)退出程序。等待鍵釋放LCALLDISPLAY;延時(shí)削抖JNBP3.7,SETOUT;是抖動(dòng),返回SETOUT再等待CLR01H;清調(diào)小時(shí)標(biāo)志CLR00H;清調(diào)分標(biāo)志CLR02H;清閃爍標(biāo)志CLRTR1;關(guān)閉定時(shí)器T1CLRET1;關(guān)定時(shí)器T1中斷SETBTR0;開啟定時(shí)器T0SETBET0;開定時(shí)器T0中斷(計(jì)時(shí)開始)LJMPSTART1;跳回主程序SET1:LCALLDISPLAY;鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)分)AJMPSET2;防止鍵按下時(shí)無時(shí)鐘顯示SET3:LCALLDISPLAY;等待調(diào)分按鍵時(shí)時(shí)鐘顯示用AJMPSET4SET5:LCALLDISPLAY;鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)小時(shí))AJMPSETHH1;防止鍵按下時(shí)無時(shí)鐘顯示SET7:LCALLDISPLAY;等待調(diào)小時(shí)按鍵時(shí)時(shí)鐘顯示用AJMPSET6SETOUT1:LCALLDISPLAY;退出時(shí)鐘調(diào)整時(shí)鍵釋放等待AJMPSETOUT;防止鍵按下時(shí)無時(shí)鐘顯示;;顯示程序;;DISPLAY:MOVR1,#70H;指向顯示數(shù)據(jù)首址M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論