用匯程式設計序實現電子時鐘

2021-09-29 20:25:02 字數 2751 閱讀 4402

基本思想:

當需要編寫程式實現較複雜的功能時,整個程式就如同乙個裝配體(總成),而子程式就如同裝配體中的零件,子程式與主程式的介面就如同機械中的連線件將不同零件裝配起來。

使用子程式能使程式結構更清晰,且邏輯不易發生錯誤。

實現電子時鐘需要的子程式:

1.顯示子程式disp

2.顯示延時子程式dey1

3.中斷服務intt0

4.中斷服務退出子程式out

5.加一子程式add1

6.清空子程式clr0

應注意的事項:

1.位選應與段碼輸送相配合,若使用p2位選,p2.0連線最前端的數碼管,則p2=#00000001b,即p2.0=1時,應輸送小時的最高位段碼

2.若通過p2左移實現顯示,可通過左移次數判斷一次顯示是否完成,也可將p2的值賦給a,通過判斷acc.7是否為1得到一次顯示是否完成,後者在實現上更方便

3.進入中斷服務時,可將中斷允許et0先斷開,在中斷服務退出子程式中再將et0開啟,可減少計時誤差

4.判斷秒鐘、分鐘是否達到60,時鐘是否達到24,用djne語句比用減法後判斷jc更簡單

5.當秒鐘、分鐘達到60,時鐘達到24時,需呼叫清空子程式clr0將其清0

6.加一子程式add1可通過16進製制數加#01h後通過十進位制調整指令da將其轉換為10進製數,通過分別遮蔽高、低4位並通過swap指令分別賦給對應的顯緩區

7.共陽極8位二極體顯示0~9的段碼分別為:

0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
顯示橫槓(——)的段碼為0bfh

共陰極段碼取反即可

程式**如下:

org	0000h

ljmp main

org 000bh

ljmp intt0

org 0100h

main: mov tmod,#01h

mov tl0,#0b0h

mov th0,#3ch

setb ea

setb et0

setb tr0

mov r4,#20

mov 73h,#10

mov 76h,#10

mov dptr,#table

loop: lcall disp

ljmp loop

disp: mov r3,#01h

mov r0,#78h

play: mov a,r3

mov p2,a

mov a,@r0

movc a,@a+dptr

mov p0,a

lcall dey1

mov a,r3

dec r0

jb acc.7,next

rl a

mov r3,a

ljmp play

next:ljmp disp

dey1: mov r6,#10

dl1: mov r7,#19h

dl2: djnz r7,dl2

djnz r6,dl1

retintt0: push acc

push psw

clr et0

clr tr0

mov tl0,#0b0h

mov th0,#3ch

setb tr0

djnz r4,out

adds: mov r4,#20

mov r0,#71h

lcall add1

mov a,r2

clr c

cjne a,#60h,addmin

addmin: jc out

lcall clr0

mov r0,#74h

lcall add1

mov a,r2

clr c

cjne a,#60h,addh

addh: jc out

lcall clr0

mov r0,#77h

lcall add1

mov a,r2

clr c

cjne a,#24h,hourreset

jc out

hourreset: lcall clr0

out: pop psw

pop acc

setb et0

reti

add1: inc r0

mov a,@r0

swap a

dec r0

orl a,@r0

add a,#01h

da a

mov r2,a

anl a,#0fh

mov @r0,a

mov a,r2

anl a,#0f0h

swap a

inc r0

mov @r0,a

retclr0: mov a,#0

mov @r0,a

dec r0

mov @r0,a

rettable: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0bfh

end

使用proteus7.5**的效果如下:

tkinter實現電子時鐘

一 import tkinter import threading import datetime import time tkinter.tk overrideredirect true 不顯示標題欄 attributes alpha 0.9 半透明 attributes topmost 1 總是...

QT實現 電子時鐘

2.時鐘視窗 3.執行效果圖 簡介 1.主視窗 menu.件 ifndef menu h define menu h include include include class menu public qwidget endif menu h menu.cpp檔案 include menu.h in...

常用匯程式設計序轉移指令

1,無條件轉移指令 長轉移 jmp無條件轉移指令 call過程呼叫 ret retf過程返回 2,條件轉移指令 短轉移,128到 127的距離內 當且僅當 sf xor of 1時,op1 ja jnbe不小於或不等於時轉移.意思就是大於則就跳 jae jnb大於或等於轉移.jb jnae小於轉移....