用匯編語言編寫電子鐘程序_第1頁
用匯編語言編寫電子鐘程序_第2頁
用匯編語言編寫電子鐘程序_第3頁
用匯編語言編寫電子鐘程序_第4頁
用匯編語言編寫電子鐘程序_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、; 程序清單 ; 標(biāo)題:電子鐘- ; 設(shè)計(jì)者:閆向陽- ; 時(shí)間:2010.07.29 ;LED數(shù)碼管顯示器設(shè)定- ;P0.7-P0.0段控線,接LED的顯示段dp,g,f,e,d,c,b,a ;* ;P2.7-P2.0位控線,從右至左(LED0,LED1,LED2,LED3,LED4,LED5,LED6,LED7 ;時(shí)十位,時(shí)個(gè)位,分十位,分個(gè)位,秒十位,秒個(gè)位對(duì)應(yīng)的儲(chǔ)存單元是(77H,76H,75H,74H,73H,72H) ;鍵值放在20H單元 ;s2-s9的鍵值分別放在(20H.0,20H.1,20H.2,20H.3,20H.4,20H.5,20H.6,20H.7) ;20H.0-20

2、H.7對(duì)于的偽定義是 S2B-S9B ;F0啟動(dòng)停止判斷位 23H.0 停止是否按下判斷位 23H.1啟動(dòng)第一次按下判斷 ;寄存器第零組為監(jiān)控程序 ,寄存器第一組為顯示程序 ,寄存器第二組為中斷程序 ;定時(shí)器1中斷方式工作 定時(shí)50ms 方式1工作 ;堆棧初始化在80H ORG 0000H START: LJMP MAIN ;主程序入口地址 ORG 000BH LJMP TC0 ORG 001BH LJMP TC1 ORG 0030H MAIN: MOV SP, #80H ;確立堆棧區(qū) ;* ;時(shí)分秒的十位和個(gè)位分別偽定義 SECGE EQU 72H SECSHI EQU 73H FENGE

3、EQU 74H FENSHI EQU 75H SHIGE EQU 76H SHISHI EQU 77H ;* ;鍵值偽定義 S2B BIT 20H.0 S3B BIT 20H.1 S4B BIT 20H.2 S5B BIT 20H.3 S6B BIT 20H.4 S7B BIT 20H.5 S8B BIT 20H.6 S9B BIT 20H.7 CLR 23H.4 ;啟動(dòng)停止判斷位 CLR 23H.0 ;停止是否按下判斷位 CLR 23H.1 CLR 23H.2 ;調(diào)整鍵按下判斷位 CLR 23H.3 ;定時(shí)5秒是否到 ;* ;定時(shí)器初始化 MOV TMOD , #11H MOV TH0 ,

4、#3CH MOV TL0 , #0B0H MOV TH1 , #3CH MOV TL0 , #0B0H MOV IE , #8AH ;允許定時(shí)器0中斷 ,定時(shí)器1中斷 ;* MOV PSW , #00H ; psw初始化 MOV R0 , #20H ;RAM區(qū)首地址 MOV R7 , #5FH ;RAM區(qū)單元個(gè)數(shù) ML: MOV R0 , #00H ;RAM初始化 INC R0 DJNZ R7, ML PUSH PSW ;改變當(dāng)期寄存器為2組 SETB RS1 CLR RS0 MOV R1 ,#200 MOV R5, #20 ;設(shè)定中斷服務(wù)程序循環(huán)次數(shù) MOV R6,#0 ;判調(diào)整鍵按下的次數(shù)

5、 MOV R7,#25 ;按鍵是若不松開調(diào)顯示的次數(shù) POP PSW TSF : MOV DPTR , #DISBH ;系統(tǒng)初始化后提示符“P.”字符代碼表首地址 MOV R5 , #08H MOV R0 , #78H DISPTSF:CLR A MOVC A , A+DPTR MOV R0 , A INC R0 INC DPTR DJNZ R5 , DISPTSF ;調(diào)顯示子程序顯示提示符“P.” TT: LCALL DISP LCALL KEY MOV A , 20H ;* ;鍵判斷程序 JB S2B , S2 JB S3B , SA3 JB S4B , SA4 JB S5B , S5 J

6、B S6B , S6 JB S7B , S7 JB S8B , S8 JB S9B , S9 LJMP TT ;* ;鍵功能程序 SA3: LJMP S3 SA4 : LJMP S4 S5 : NOP LJMP TT S6 : NOP LJMP TT S7 : NOP LJMP TT S8 : NOP LJMP TT S9 : NOP LJMP TT ;啟動(dòng)停止鍵功能程序 S2 : PUSH PSW ;改變通用寄存器組為2組 SETB RS1 CLR RS0 JB 23H.0 ,SZT JB 23H.4 , S2TZ ;F0為0執(zhí)行啟動(dòng)程序,否則轉(zhuǎn)向停止程序 SETB 23H.4 SETB T

7、R0 CLR 23H.2 JB 23H.1, S2D1 ;23H.1為1轉(zhuǎn)向啟動(dòng)程序結(jié)束 SETB 23H.1 ;第一次啟動(dòng)電子鐘,標(biāo)志位置1 MOV SECSHI ,#0 MOV SECGE ,#0 MOV FENSHI ,#0 MOV FENGE ,#0 MOV SHISHI ,#0 MOV SHIGE ,#0 S2D1: LCALL KEY ;判鍵是否松開 JB S2B ,S2D1 LJMP SS2 S2TZ: CLR TR0 ;停止程序 SETB 23H.0 CLR 23H.4 S2D2: LCALL KEY ;判鍵是否松開 JB S2B ,S2D2 LJMP SS2 SZT: JNB

8、 23H.0 ,SS2 ;判停止鍵是否按下,沒有按下轉(zhuǎn)向結(jié)束程序 SETB TR1 SETB 23H.2 ;調(diào)整鍵按下,置1 CJNE R6 ,#00H ,S2S ;是第一次按下調(diào)整鍵嗎 INC R6 ;調(diào)整鍵的次數(shù)加1 S2S1: LCALL KEY JB S2B ,S2S1 LJMP SS2 S2S: CJNE R6 ,#01H ,S2F ;是第二次按下調(diào)整鍵嗎 INC R6 ;調(diào)整鍵次數(shù)加1 S2S2: LCALL KEY JB S2B ,S2S2 LJMP SS2 S2F: MOV R6 ,#00H ;第三次按下調(diào)整鍵,把按下調(diào)整鍵的次數(shù)置0 S2S3: LCALL KEY JB S2

9、B ,S2S3 SS2: LCALL TAKE POP PSW LJMP TT ;* ;加1鍵功能程序 S3:PUSH PSW ;改變通用寄存器為2組 SETB RS1 CLR RS0 JNB 23H.2 ,S3G ;判調(diào)整鍵是否按下 CJNE R6, #01H ,S3F ;停止鍵按下的次數(shù)是1次嗎? LCALL TAKE3 ;時(shí)加1 CJNE R2 , #24H, S3D1 ;24小 時(shí)到了嗎 MOV SHISHI ,#00H MOV SHIGE ,#00H S3D1:LCALL DISP ;延時(shí)0.2秒 DJNZ R7 , S3D1 MOV R7 ,#25 LJMP S3G S3F: CJ

10、NE R6 ,#02H ,S3M ;停止鍵按下的次數(shù)是2次嗎? LCALL TAKE2 ;分加1 CJNE R3 ,#60H , S3D2 ;60分到了嗎 MOV FENSHI ,#00H MOV FENGE ,#00H S3D2: LCALL DISP ;延時(shí)0.2秒 DJNZ R7 ,S3D2 MOV R7 ,#25 LJMP S3G S3M: LCALL TAKE1 ;秒加1 CJNE R4 ,#60H ,S3D3 ;60秒到了嗎 MOV SECSHI ,#00H MOV SECGE ,#00H S3D3: LCALL DISP ;延時(shí)0.2秒 DJNZ R7 , S3D3 MOV R7

11、 ,#25 S3G: LCALL TAKE POP PSW LJMP TT ;* ;減1鍵功能程序 S4:PUSH PSW SETB RS1 CLR RS0 JNB 23H.2 ,S4G CJNE R6, #01H ,S4F ;停止鍵按下的次數(shù)是1次嗎 S4DY :LCALL TAKE7 ;時(shí)減1 S4D1:LCALL DISP ;延時(shí)0.2秒 DJNZ R7 , S4D1 MOV R7 ,#25 LJMP S4G S4F: CJNE R6 ,#02H ,S4M ;停止鍵按下的次數(shù)是2次嗎 LCALL TAKE6 ;分減1 S4D2: LCALL DISP DJNZ R7 ,S4D2 MOV

12、R7 ,#25 LJMP S4G S4M: CJNE R6 ,#00H ,S4G ;停止鍵按下的次數(shù)是3次嗎 LCALL TAKE5 ;秒減1 S4D3: LCALL DISP DJNZ R7 , S4D3 MOV R7 ,#25 S4G: LCALL TAKE POP PSW LJMP TT ;* ; ;常數(shù)表格區(qū)- ; ;系統(tǒng)初始化后提示符“P.”字符代碼表 DISBH: DB 10H,10H,10H,10H,10H,10H,10H,11H ;提示符“P.”字符序號(hào) ; ;顯示字符段選碼表(共陽極代碼 TAB: DB 0C0H, 0F9H,0A4H,0B0H,99H,92H,82H,0F8

13、H,80H ;0-8 DB 90H, 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH ;9,A,B,C,D,E,F,滅,p. ,- ;* ;延時(shí)1毫秒子程序 DL: MOV R7, #02H DL1: MOV R6, #0FFH DL2: DJNZ R6, DL2 DJNZ R7, DL1 RET ;* ;顯示子程序 ;入口:78H,79H,7AH,7BH,7CH,7DH,7EH,7FH DISP: PUSH DPH PUSH DPL PUSH ACC PUSH PSW CLR RS1 ;改變當(dāng)前寄存器組為組1 SETB RS0 MOV R1, #78H ;顯示

14、緩沖存儲(chǔ)單元首地址 MOV R2, #0FEH ;從右至左顯示 DISP1: MOV A, R1 MOV DPTR, #TAB MOVC A, A+DPTR MOV P0, A ;送段控 MOV P2, R2 ;送位控 LCALL DL ; 延時(shí)1毫秒 MOV A, R2 JNB ACC.7, DISP2 RL A INC R1 MOV R2, A LJMP DISP1 DISP2: POP PSW ;恢復(fù)當(dāng)前寄存器組的組號(hào) POP ACC POP DPL POP DPH RET ;* ;8個(gè)按鍵S2至S9分別依次接在P1.0至P1.7口線 ;鍵掃子程序KEY ;出口:B,20H KEY: L

15、CALL KEYCHULI ;調(diào)鍵處理子程序 JZ EXIT LCALL DISP ;去抖動(dòng) LCALL DISP LCALL KEYCHULI ;調(diào)鍵處理子程序 JZ EXIT ; MOV B, 20H ;保存鍵值 KEYSF: LCALL KEYCHULI ;調(diào)鍵處理子程序 JZ KEY1 ;按鍵釋放,準(zhǔn)備退出KEY子程序 LCALL DISP KEY1: MOV 20H, B ;恢復(fù)鍵值 EXIT: RET ; ;鍵處理子程序KEYCHULI ;出口:A,20H KEYCHULI: MOV P1, #0FFH ;先向P1口寫1 MOV A, P1 CPL A MOV 20H, A ;保存

16、取反后的鍵值 RET ;* ;* ;顯示處理子程序 TAKE : MOV 7fH ,SHISHI MOV 7eH ,SHIGE MOV 7dH ,#12H MOV 7cH ,FENSHI MOV 7bH ,FENGE MOV 7aH ,#12H MOV 79H ,SECSHI MOV 78H ,SECGE RET ;* ;數(shù)字處理子程序 TAKE1: PUSH PSW ;秒加1子程序 SETB RS1 ;改變當(dāng)期寄存器為2組 CLR RS0 MOV A, SECSHI SWAP A MOV R4 ,A MOV A, SECGE ORL A,R4 ADD A, #01H DA A MOV R4

17、,A SWAP A ANL A, #0FH MOV SECSHI ,A MOV A, R4 ANL A, #0FH MOV SECGE ,A POP PSW RET TAKE2: PUSH PSW ;分加1子程序 SETB RS1 CLR RS0 MOV A, FENSHI SWAP A MOV R3 ,A MOV A, FENGE ORL A,R3 ADD A ,#01H DA A MOV R3 ,A SWAP A ANL A, #0FH MOV FENSHI ,A MOV A, R3 ANL A, #0FH MOV FENGE ,A POP PSW RET TAKE3: PUSH PSW

18、;時(shí)加1子程序 SETB RS1 CLR RS0 MOV A, SHISHI SWAP A MOV R2 ,A MOV A, SHIGE ORL A,R2 ADD A ,#01H DA A MOV R2,A SWAP A ANL A, #0FH MOV SHISHI ,A MOV A, R2 ANL A, #0FH MOV SHIGE ,A POP PSW RET TAKE5: PUSH PSW ;秒減1程序 SETB RS1 CLR RS1 MOV A, SECSHI SWAP A MOV R4 ,A MOV A, SECGE ORL A,R4 SU BB A ,#01H MOV R4 ,A

19、 SWAP A ANL A, #0FH CJNE A ,#0FH ,LOPM ;秒到00嗎? MOV A , #05H LOPM: MOV SECSHI ,A MOV A, R4 ANL A, #0FH CJNE A, #0FH ,LODP ;個(gè)位是0嗎? SUBB A, #6 LODP:MOV SECGE ,A POP PSW RET TAKE6: PUSH PSW ;分減1程序 SETB RS1 CLR RS1 MOV A, FENSHI SWAP A MOV R3 ,A MOV A, FENGE ORL A,R3 SUBB A ,#01H MOV R3 ,A SWAP A ANL A,

20、#0FH CJNE A ,#0FH , LOPF ;分到00嗎? MOV A , #05H LOPF:MOV FENSHI ,A MOV A, R3 ANL A, #0FH CJNE A, #0FH ,LODP1 ;個(gè)位是0嗎? SUBB A, #6 LODP1:MOV FENGE ,A POP PSW RET TAKE7: PUSH PSW ;時(shí)減1程序 SETB RS1 CLR RS1 MOV A, SHISHI SWAP A MOV R2 ,A MOV A, SHIGE ORL A,R2 SUBB A ,#01H MOV R2 ,A SWAP A ANL A, #0FH CJNE A ,#0FH , LOPS ;時(shí)到00嗎? MOV SHISHI ,#02H MOV SHIGE ,#03H LJMP LODP3 LOP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論