單片機(jī)電子時(shí)鐘匯編語言程序_第1頁
單片機(jī)電子時(shí)鐘匯編語言程序_第2頁
單片機(jī)電子時(shí)鐘匯編語言程序_第3頁
單片機(jī)電子時(shí)鐘匯編語言程序_第4頁
單片機(jī)電子時(shí)鐘匯編語言程序_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、51單片機(jī)架構(gòu)下時(shí)鐘控制程序;KEYA A鍵功能程序 開啟/關(guān)閉定時(shí)器 ;KEYB B鍵功能程序 時(shí)值加1;KEYC C鍵功能程序 分值加1;KEYDD鍵功能程序 秒值加1;KEYEE鍵功能程序 12/24時(shí)值轉(zhuǎn)換;BEEP_BL整點(diǎn)報(bào)時(shí);P0 顯示接口 ;系統(tǒng)初始化程序* KEYA EQU P3.0 ;單片機(jī)控制設(shè)置 KEYB EQU P3.1 ;單片機(jī)控制設(shè)置 KEYC EQU P3.2 ;單片機(jī)控制設(shè)置 KEYD EQU P3.3 ;單片機(jī)控制設(shè)置 KEYE EQU P3.4 ;單片機(jī)控制設(shè)置 BEEP EQU P3.7 ;單片機(jī)控制設(shè)置 ORG 0000H AJMP MAIN;轉(zhuǎn)到系統(tǒng)

2、初始化程序 ORG 000BH AJMP PITO;轉(zhuǎn)到定時(shí)器0中斷服務(wù)程序 ORG 0100H MAIN: MOV SP, #60H;確立堆棧區(qū) MOV TMOD, #01H;設(shè)定定時(shí)器0為工作方式1 MOV TL0, #0DCH;裝計(jì)數(shù)器初值 MOV TH0, #0BH CLR 21H.0 CLR TR0;TR0置0,定時(shí)關(guān)閉 SETB EA;EA置1,中斷總允許 SETB ET0 ; ET0置1,定時(shí)器0中斷 ; 允許 MOV 30H, #10H;循環(huán)次數(shù) MOV 7EH, #0AH;P.點(diǎn)顯示初始化 MOV R0, #79H MOV R1, #05H PP: MOV R0, #0BH

3、INC R0 DJNZ R1, PP MOV R0, #31H;時(shí)、分、秒值存儲(chǔ)單元清零 MOV R1, #06H Q00: MOV R0, #00H INC R0 DJNZ R1, Q00;監(jiān)控程序* LOOP: LCALL DIR;調(diào)顯示子程序 LCALL KEY ;調(diào)鍵掃描子程序 LOOP1: JB 20H.0, KEYA ; A鍵是否按下,是跳轉(zhuǎn)到A鍵功能程序 開啟/關(guān)閉定時(shí)器 JB 20H.1, KEYB ; B鍵是否按下,是跳轉(zhuǎn)到B鍵功能程序 時(shí)值加1 JB 20H.2, KEYC ; C鍵是否按下,是跳轉(zhuǎn)到C鍵功能程序 分值加1 JB 20H.3, KEYD ; D鍵是否按下,是

4、跳轉(zhuǎn)到D鍵功能程序 秒值加1JB 20H.4, KEYE ; E鍵是否按下,是跳轉(zhuǎn)到E鍵功能程序 12/24時(shí)值轉(zhuǎn)換 LCALL DIR LJMP LOOP;跳轉(zhuǎn)到監(jiān)控程序;A鍵功能子程序* KEYA: CPL TR0 ;開啟/關(guān)閉定時(shí)器 SETB 21H.0 AJMP LOOP ;返回;B鍵功能子程序* KEYB: JB TR0, KEYB1 ; 定時(shí)器是否運(yùn)行,是跳轉(zhuǎn) JNB 21H.0, KEYB2 MOV R0, #36H; 時(shí)值存儲(chǔ)單元地址送R0 LCALL DAAD1 ; 調(diào)加1子程序 MOV A, R3 ; 時(shí)值加1后的值送累加器ALCALL BEEP_BL ; 整點(diǎn)報(bào)時(shí) XRL

5、 A, #12H ;時(shí)值是否到12時(shí)JNZ KEYB0 ; BACK: XRL A, #24H;判是否到24時(shí) JNZ KEYB1 ; 時(shí)值是否到24時(shí),否返回 LCALL CLR0; 時(shí)值存儲(chǔ)單元清零 KEYB0: JB 20H.4, KEYB1; 是否啟用12時(shí)值,否返回 LCALL CLR0; 時(shí)值存儲(chǔ)單元清零 KEYB1: MOV 7DH, 35H MOV 7EH, 36H KEYB2: LJMP LOOP; 返回監(jiān)控程序;C鍵功能子程序* KEYC: JB 8CH, KEYC1 ; 定時(shí)器是否運(yùn)行,否跳轉(zhuǎn) JNB 21H.0, KEYC2 MOV R0, #34H; 分值存儲(chǔ)單元地址

6、送R0 LCALL DAAD1; 調(diào)加1子程序 MOV A, R3; 分值加1后的值送累加器A XRL A, #60H ; JNZ KEYC1; 分值是否到60分,否返回 LCALL CLR0; 分值存儲(chǔ)單元清零 KEYC1: MOV 7CH, 34H MOV 7BH, 33H KEYC2: LJMP LOOP; 返回監(jiān)控程序;D鍵功能子程序* KEYD: JB 8CH, KEYD1 ; 定時(shí)器是否運(yùn)行,否跳轉(zhuǎn) JNB 21H.0, KEYD2 MOV R0, #32H ; 秒值存儲(chǔ)單元地址送R0 LCALL DAAD1 ; 調(diào)加1子程序 MOV A, R3 ; 秒值加1后的值送R0 XRL

7、A, #60H JNZ KEYD1;秒值是否到60秒,否返回 LCALL CLR0;秒值存儲(chǔ)單元清0 KEYD1: MOV 79H, 31H MOV 7AH, 32H KEYD2: LJMP LOOP;返回監(jiān)控程序;中斷服務(wù)程序* PITO: PUSH PSW;中斷服務(wù)程序,現(xiàn)場保護(hù) PUSH A SETB RS0;選第三組通用寄存器 SETB RS1 MOV TL0, #0DCH;計(jì)數(shù)器重新加載 MOV TH0, #0BH MOV A, 30H;循環(huán)次數(shù)減1 DEC A MOV 30H, A JNZ RETO;不滿16次,轉(zhuǎn)RET0返回 MOV 30H, #10H;滿16次開始計(jì)時(shí)操作 MO

8、V R0, #32H;秒顯示單元地址 ACALL DAAD1;秒加1 MOV A, R3;加1后秒值在R3中 XRL A, #60H;判是否到60秒 JNZ RETO;不到轉(zhuǎn)RET0返回 ACALL CLR0;到60秒顯示單元清0 MOV R0, #34H;分顯示單元地址 ACALL DAAD1;分加1 MOV A, R3;加1后分值在R3中 XRL A, #60H;判是否到60分 JNZ RETO;不到轉(zhuǎn)RET0返回 ACALL CLR0;到60分顯示單元清0 MOV R0, #36H;時(shí)顯示單元地址 ACALL DAAD1;時(shí)加1 MOV A, R3 ;加1后時(shí)值在R3中LCALL BEE

9、P_BL; 整點(diǎn)報(bào)時(shí) XRL A, #12H ; 時(shí)值是否到12時(shí)JNZ KEYB3 ; XRL A, #24H;判是否到24時(shí) JNZ RETO;不到轉(zhuǎn)RET0返回 ACALL CLR0;到24時(shí)顯示單元清0 KEYB3:JB 20H.4, RETO; 是否啟用12時(shí)值,否返回 ACALL CLR0; 時(shí)值存儲(chǔ)單元清零 RETO: CLR RS0;返回第0組通用寄存器 CLR RS1 POP A;現(xiàn)場恢復(fù) POP PSWMOV 79H, 31H;時(shí)、分、秒值放緩沖區(qū) MOV 7AH, 32H MOV 7BH, 33H MOV 7CH, 34H MOV 7DH, 35H MOV 7EH, 36

10、H RETI ;中斷返回;加1子程序* DAAD1: MOV A, R0 ; 加1子程序,十位送A DEC R0 SWAP A;十位數(shù)占高4位 ORL A, R0;個(gè)位數(shù)占低4位 ADD A, #01H;加1 DA A;十進(jìn)制調(diào)整 MOV R3, A;全值暫存R3中 ANL A, #0FH;屏蔽十位數(shù),取出個(gè)位數(shù) MOV R0, A;個(gè)位值送顯示緩沖單元 MOV A, R3 INC R0 ANL A, #0F0H;屏蔽個(gè)位數(shù)取出十位數(shù) SWAP A;使十位數(shù)占低四位 MOV R0, A;十位數(shù)送緩沖單元 RET;返回 CLR0: CLR A;清緩沖單元子程序 MOV R0, A;十位緩沖單元清

11、0 DEC R0 MOV R0, A;個(gè)位數(shù)緩沖單元清0 RET;返回 ;鍵盤掃描子程序* KEY: LCALL KEYCHULI;調(diào)鍵值處理子程序 JZ EXIT;沒有鍵按下轉(zhuǎn)到返回 LCALL DIR LCALL DIR;調(diào)顯示去抖動(dòng) LCALL KEYCHULI;調(diào)鍵值處理子程序 JZ EXIT;沒有鍵按下轉(zhuǎn)到返回 MOV B, 20H ;保存鍵值 KEYSF: LCALL KEYCHULI;調(diào)鍵值處理子程序 JZ KEY1;鍵釋放,轉(zhuǎn)到恢復(fù)鍵值 LCALL DIR;調(diào)顯示子程序延時(shí) AJMP KEYSF;等到鍵釋放 KEY1: MOV 20H, B;鍵值送20H單元保存 EXIT: R

12、ET;返回 KEYCHULI: PUSH PSW;保護(hù)現(xiàn)場 CLR RS1;改變寄存器組號 SETB RS0 MOV P1, #0FFH;先向P1口寫1 MOV A, P1;P1口值送累加器A CPL A;A值取反 ANL A, #0FH;保存P1口的低4位 MOV 20H, A;A值送20H保存 CLR RS1;改變寄存器組號 CLR RS0; POP PSW;恢復(fù)現(xiàn)場 RET;顯示子程序* DIR: PUSH PSW ; 恢復(fù)現(xiàn)場 SETB RS1; 改變寄存器組號 CLR RS0 MOV R0, #79H;建立顯示緩沖區(qū)首地址 MOV R3, #0FBH;設(shè)置位控碼 LD0: MOV P

13、2, R3;送位控碼 MOV A, R0; 緩沖區(qū)值送累加器A DISP1: ADD A, #1BH MOVC A, A+PC;取段控碼并送A中 DISP2: MOV P0, A;送段控碼 MOV R2, #09H;設(shè)置延時(shí)循環(huán)次數(shù) ACALL DEY;延時(shí)點(diǎn)亮 INC R0;緩沖區(qū)地址加1 MOV A, R3;位控碼送A JNB ACC.1, HERE;是否到最高位,是轉(zhuǎn)到返回 JBACC.5, LD2 RL A RL A;不到向顯示器高位移位 LD2:RL A MOV R3, A; 位控值保存到R4中 AJMP LD0;繼續(xù)掃描 HERE: CLR RS0 ;改變寄存器組號 CLR RS1 POP PSW ;恢復(fù)現(xiàn)場 RET ;返回 DBB: DB 0C0H DB 0F9H DB 0A4H DB 0B0H DB 99H DB 92H DB 82H DB 0F8H DB 80H DB 90H DB 0CH DB 0FFH;整點(diǎn)報(bào)時(shí)* BEEP_BL: MOV R6,#100 BL1:CALL BL2 CPL BEEP DJNZ R6,BL1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論