單片機(jī)電子鐘匯編.doc_第1頁
單片機(jī)電子鐘匯編.doc_第2頁
單片機(jī)電子鐘匯編.doc_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

ORG 0000H AJMP START;中斷入口 ORG 000BH AJMP T0INT;RAM區(qū)變量定義 DISBUF EQU 30H ;顯示參數(shù)傳遞 POSIT EQU 38H ;位選 NUM EQU 40H ;秒循環(huán)次數(shù) SEC EQU 50H ;秒 MIN EQU 51H ;分鐘 HOR EQU 52H ;小時(shí);程序開始部分(主函數(shù))ORG 0100HSTART:MOV SP, #60H ;設(shè)置堆棧指針位置 MOV TMOD, #01H ;設(shè)置定時(shí)器T0的工作方式為定時(shí)器模式,方式一 MOV TH0, #42H ;給定時(shí)器賦初值 MOV TL0, #0A0H MOV DISBUF+2, #16 ;給顯示部分賦值- MOV DISBUF+5, #16 MOV SEC, #58 ;設(shè)置秒的初值 MOV MIN, #59 ;設(shè)置分鐘的初值 MOV HOR, #09 ;設(shè)置小時(shí)的初值 MOV NUM, #19 ;設(shè)置定時(shí)器循環(huán)的次數(shù),也就是確定循環(huán)多少次為一秒 SETB TR0 ;啟動定時(shí)計(jì)數(shù)器T0 SETB ET0 ;開啟定時(shí)計(jì)數(shù)器T0的中斷 SETB EA ;開啟單片機(jī)的總中斷LOOP: LCALL CHANGE ;調(diào)用小時(shí),分秒處理子程序 LCALL DISPLAY ;調(diào)用顯示程序 AJMP LOOP;8路數(shù)碼管驅(qū)動DISPLAY:MOV POSIT, #80H ;用于指示數(shù)碼管位選,初始化為第一個數(shù)碼管亮 MOV R1, #08H ;用于指示程序循環(huán),8個數(shù)碼管每個送一次數(shù)后,本子程序結(jié)束 MOV DPTR, #DISCODE ;指向數(shù)碼管的碼表 MOV R0, #DISBUF ;指向顯示數(shù)組;為方便起見,只將第一個數(shù)碼管的執(zhí)行過程講明,其余依次類推DISLOOP:MOV A, R0 ;當(dāng)R0=#DISBUF時(shí),通過間接尋址將DISBUF中的內(nèi)容放入A中 MOVC A, A+DPTR ;通過查表,A為地址偏移量,找出A中的數(shù)所對應(yīng)的碼值(即段碼),還放在A中 MOV P0,A ;將A中的數(shù)送至P0端口,單此時(shí)并未送至數(shù)碼管 SETB P1.3 ;使能573鎖存器,此時(shí),段碼才送至數(shù)碼管的段選端 CLR P1.3 ;關(guān)閉573鎖存器,此時(shí),數(shù)據(jù)鎖存在數(shù)碼管的段選端 MOV P0, POSIT ;送位選至P0,以便指示哪一個數(shù)碼管亮 SETB P1.2 ;使能573鎖存器,此時(shí),位選信號才送至數(shù)碼管的位選端,相應(yīng)的數(shù)碼管亮 CLR P1.2 ;關(guān)閉573鎖存器,此時(shí),數(shù)據(jù)鎖存在數(shù)碼管的位選端 CALL DELAY ;使相應(yīng)數(shù)碼管亮一段時(shí)間 MOV P0, #00H ;送位選為00至P0口,即關(guān)閉所有的數(shù)碼管,一產(chǎn)生消隱作用,避免數(shù)碼管上產(chǎn)生重影現(xiàn)象 SETB P1.2 CLR P1.2 MOV A, POSIT ;當(dāng)一個數(shù)碼管完成顯示后,對位選進(jìn)行移位操作,以便為下一個數(shù)碼管 RR A ;的顯示作好準(zhǔn)備,此時(shí),位選指向下一個數(shù)碼管MOV POSIT, A INC R0 ;使R0的數(shù)自加一,指向下一個要顯示的數(shù)字,若上一次指向DISBUF,則 DJNZR1, DISLOOP ;本次指向DISBUF+1,并受R1控制,完成8個數(shù)在數(shù)碼管上的顯示 RET ;所以,在使用此顯示程序時(shí),只需將欲顯示的數(shù)字放入對應(yīng)的DISBUF即可;延時(shí)程序DELAY:MOV R3, #250L1: NOP NOP DJNZ R3, L1 RET;顯存更新程序CHANGE:PUSH ACC ;保護(hù)現(xiàn)場,將累加器A入棧 MOV A, SEC ;將秒變量分十位和個位,分別存放在兩個顯存空間中 MOV B, #10 DIV AB MOV DISBUF+6, A MOV DISBUF+7, B MOV A, MIN ;將分變量分十位和個位,分別存放在兩個顯存空間中 MOV B, #10 DIV AB MOV DISBUF+3, A MOV DISBUF+4, B MOV A, HOR ;將小時(shí)變量分十位和個位,分別存放在兩個顯存空間中 MOV B, #10 DIV AB MOV DISBUF, A MOV DISBUF+1, B POP ACC ;釋放累加器A RET;定時(shí)器T0中斷服務(wù)程序T0INT:PUSH ACC ;保護(hù)現(xiàn)場,將累加器A入棧 MOV TL0, #0A0H ;重新賦初值 MOV TH0, #42H DJNZ NUM, OUT ;判斷1秒時(shí)間是否到達(dá) MOV NUM, #19 INC SEC ;如果1秒時(shí)間到達(dá),對秒加一 MOV A, SEC CJNE A, #60, OUT ;判斷秒是否超過60 MOV SEC, #0 ;如果超過60,將秒變量清零,同時(shí)將分變量加一 INC MIN MOV A, MIN CJNE A, #60, OUT;判斷分變量是否超過60 MOV MIN, #0 ;如果超過60,將分變量清零,同時(shí)將小時(shí)變量加一 INC HOR MOV A, HOR CJNE A, #24, OUT ;判斷小時(shí)變量是否超過23 MOV HOR, #0 ;超過23,對小時(shí)變量清零OUT:POP ACC ;釋放累加器A RETI;共陽數(shù)碼管碼表DISCODE:DB 0C0H,0F9H,0A4H,0B0H,9

溫馨提示

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

評論

0/150

提交評論