AT-C-制電子鐘時鐘源程序_第1頁
AT-C-制電子鐘時鐘源程序_第2頁
AT-C-制電子鐘時鐘源程序_第3頁
AT-C-制電子鐘時鐘源程序_第4頁
AT-C-制電子鐘時鐘源程序_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

AT89C2051 AT89C2051時鐘程 ;T0、T150MS,T0為秒計數(shù)用,T1;P3.7為調整按鈕,P1 中斷入口程 ORG0000H START;跳到標號START執(zhí)ORG0003H ;外中斷0中斷程序入口 ;外中斷0中斷返回ORG000BH ;定時器T0中斷程序入口 INTT0;跳至INTTO執(zhí)行ORG0013H ;外中斷1中斷程序入口 ;外中斷1中斷返回ORG001BH ;定時器T1中斷程序入口 INTT1;跳至INTT1執(zhí)行ORG0023H 主程 START:MOVR0,#70H ;清70H-7AH共11個內存單元MOVR7,#0BH CLEARDISP:MOV@R0,#00H INCR0 DJNZR7,CLEARDISPMOV ;20H(標志用MOV ;放入"熄滅符" ;T0、T116MOVTL0,#0B0H ;50MS定時初值(T0計時用)MOVTH0,#3CH ;50MS定時初值MOVTL1,#0B0H ;50MS定時初值(T1閃爍定時用)MOVTH1,#3CH ;50MS定時初值SETBEA SETBET0 ;允許T0中斷SETB ;T0MOVR4,#14H ;1秒定時用初值(50MS×20)START1:LCALLDISPLAY P3.7,SETMM1;P3.7口為0時轉時間調整程序SJMPSTART1 ;P3.7口為1時跳回START1 LJMPSETMM; 1秒計時程 ;T0INTT0:PUSHACC PUSHPSW CLRET0 ;關T0中斷允許CLR MOVA,#0B7H ADDA,TL0 ;低8位初值修正MOVTL0,A ;重裝初值(低8位修正值)MOVA,#3CH ;高8位初值修正ADDC MOVTH0,A ;重裝初值(高8位修正值)SETBTR0 ;開啟定時器T0DJNZR4, ;20ADDSS:MOV ;20次中斷到(1秒)重賦初值 ACALLADD1 ;調用加1程序(加1秒操作)MOVA,R3 ;秒數(shù)據(jù)放入A(R3為2位十進制數(shù)組合) CJNE ADDMM: ;60ACALLCLR0 ;大于或等于60秒時對秒計時單元清0 ACALLADD1 ;分計時單元加1分鐘 CLRC CJNE ADDHH:JC ;小于60分時中斷退出ACALLCLR0 ;大于或等于60分時分計時單元清0 ACALLADD1 ;小時計時單元加1小時MOVA,R3 CLRC CJNEA,#24H,HOUR HOURJC ;24ACALLCLR0 ;大于或等于24小時小時計時單元清0OUTT0:MOV72H,76H MOV73H,77H MOV74H,78H MOV POPACC SETB ;T0 ; 閃動調時程 ;T1中斷服務程序,用作時間調整時調整單元閃爍指示 PUSHACC PUSH MOVTL1,#0B0H ;裝定時器T1定時初值MOVTH1,#3CH DJNZ ;0.3秒未到退出中斷(50MS6次MOVR2,#06H ;重裝0.3秒定時用初值CPL02H ;0.3秒定時到對閃爍標志取反 ;02H位為1時顯示單元"熄滅"MOV72H,76H ;02H位為0時正常顯示MOV73H,77H;MOV74H,78H;MOV75H,79HINTT1OUT:POPPSW;POPACC ; 01H,FLASH2;01H位為1時,轉小時熄滅控制MOV72H,7AH ;01H位為0時,"熄滅符"數(shù)據(jù)放入分MOV73H,7AH 73H,MOV74H,78H MOV AJMP MOV72H,76H ;01H位為1時,"熄滅符"數(shù)據(jù)放入小時MOV73H,77H 75H,MOV74H,7AH MOV AJMP 加1子程 ADD1:MOV SWAP ;A ;前一地址中數(shù)據(jù)放入A中低四位 ;A加1操作 ;MOV ;R3 MOV@R0,A;放回前一地址單元MOVA,R3;R3中暫存數(shù)據(jù)INCR0;指向當前地址單元 ;A中數(shù)據(jù)高四位與低四位交換 ;高四位變0 清零程 ;CLR0: ; 時鐘調整程 ;SETMM:cLR ;關定時器T0中斷 ;關閉定時器T0 ;1 P3.7,CLOSEDIS;鍵按下時間小于1秒,關閉顯示(省電) ;T1 SET2:JNB , ;鍵釋放,分調整閃爍標志置1SET4: ; ;0.5JNBP3.7,SETHH;0.5秒轉調小時狀態(tài)MOVR0,#77H;0.51分鐘操作LCALLADD1;1子程序 A,#60H,HHH;60HHH:JC ;調整單元數(shù)據(jù)小于60轉SET4循環(huán) ;調整單元數(shù)據(jù)大于或等于60時清0 ;SET4CLOSEDIS:SETB ;省電(LED不顯示)狀態(tài)。開T0中斷 ;開啟T0定時器(開時鐘)CLOSE: P3.7,CLOSE; P3.7,CLOSE;是干擾返回CLOSE等待WAITH: P3.7,WAITH; ;返回主程序(LED數(shù)據(jù)顯示亮)SETHH:CLR SETHH1:JNB ;小時調整標志置1SET6:JB ;0.5 P3.7,SETOUT;按下時間大于0.5秒退出時間調整 R0,#79H ;按下時間小于0.5秒加1小時操作 ;調加1子程序 ;計時單元數(shù)據(jù)與24比較HOUU:JC ;小于24轉SET6循環(huán) ;大于或等于24時清0操作 ;跳轉到SET6循環(huán)SETOUT:JNB P3.7,SETOUT1;調時退出程序。等待鍵釋放 ;是抖動,返回SETOUT再等待 ;關定時器T1中斷 ;開啟定時器T0 ;開定時器T0中斷(計時開始) SET1:LCALLDISPLAY AJMPSET2 SET3:LCALLDISPLAY AJMPSET4SET5:LCALL ;鍵釋放等待時調用顯示程序(調小時AJMP ;SET7:LCALLDISPLAY AJMPSET6SETOUT1:LCALL ;AJMP 顯示程 ;70H-75HLED共陽數(shù)碼管顯示,P1口輸出段碼數(shù)據(jù),P3;掃描控制,每個LED數(shù)碼管亮1MS時間再逐位循環(huán)。DISPLAY:MOV PLAY:MOV ;掃描字放入A ;P3 ;取顯示數(shù)據(jù)到A DPTR,#TAB;取段碼表地 A,@A+DPTR;查顯示數(shù)據(jù)對應段碼 ;段碼放入P1口 ; ; ACC.5,ENDOUT;ACC.5=0 ;A中數(shù)據(jù)循環(huán)左移 ;放回R5內 ;跳回PLAY循環(huán)ENDOUT:SETB ;一次顯示結束,P3口復位 ;P1口復位 ;TAB:DB;共陽段碼 "0""1"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論