8085微處理器即時時鐘模擬程式


在這裡,我們將看到一個有趣的問題。我們將瞭解如何使用8085微處理器模擬一個即時時鐘。

問題陳述

編寫一個8085組合語言程式來模擬即時時鐘。

討論

在這個程式中,我們使用8085MPU建立了一個即時時鐘。在這裡,我們生成1秒延遲來更新秒數。這個時鐘是24小時時鐘。我們從00:00:00初始化時鐘。要將值顯示到7段顯示器上,我們必須使用一些埠IC和正確的配置。每60秒更新分鐘欄位,每60分鐘更新小時欄位。對於十進位制更新,在每次增量中使用DAA指令。

我們將小時欄位儲存在8008H中,分鐘欄位儲存在8007H中。秒值儲存在位置8009H。

注意:這裡為了簡單起見,我們將數字儲存在記憶體中。要顯示數字,我們可以使用7段顯示器和其他顯示功能將其顯示在顯示器上。

輸入

這裡我們沒有提供任何輸入。

流程圖

程式

地址
十六進位制程式碼
標籤
助記符
註釋
F000
21, 00, 00
BEG
LXI H,0000H
用0000H清零HL
F003
22, 07, 80
HR_MIN
SHLD 8007H
將HL內容儲存在8007H和8006H中
F006
AF
 
XRA A  
清零A暫存器
F007
32, 09, 80
N_SEC
STA 8009H  
將累加器內容儲存在8009H中
F00A
CD, 34, F0
 
CALL DELAY
延遲1秒
F00D
3A, 09, 80
 
LDA 8009H  
載入秒值
F010
C6, 01
 
ADI 01H
將01加到累加器中
F012
27
 
DAA
調整十進位制
F013
FE, 60
 
CPI 60H
與60H比較
F015
C2, 07, F0
 
JNZ N_SEC  
如果Z=0,跳轉到N_SEC
F018
2A, 07, 80
 
LHLD 8007H
從8007H載入HL
F01B
7D
 
MOV A,L
將L載入到A
F01C
C6, 01
 
ADI 01H
將01加到A
F01E
27
 
DAA
十進位制調整
F01F
6F
 
MOV L,A
將A載入到L
F020
FE, 60
 
CPI 60H
將A與60H比較
F022
C2, 03, F0
 
JNZ HR_MIN
如果Z=0,跳轉到HR_MIN
F025
2E, 00
 
MVI L,00H  
清零L暫存器
F027
7C
 
MOV A,H
將H載入到A
F028
C6, 01
 
ADI 01H
將01加到A
F02A
27
 
DAA
十進位制調整
F02B
67
 
MOV H,A
將A送回H
F02C
FE, 24
 
CPI 24H
將小時與24比較
F02E
C2, 03, F0
 
JNZ HR_MIN
如果Z=0,跳轉到HR_MIN
F031
C3, 00
 
JMP BEG  
跳轉到開始
F034
0E, 02
DELAY
MVI C,02H  
將計數初始化為02H
F036
11, FF, FF
L1
LXI D,FFFFH
將DE載入為FFFFH
F039
1B
L2
DCX D  
減少DE
F03A
7A
 
MOV A,D
將D取到A
F03B
B3
 
ORA E  
對A和E進行或運算
F03C
C2, 16, F0
 
JNZ L2
如果Z=0,跳轉到L2
F03F
0D
 
DCR C  
將C減1
F040
C2, 13, F0
 
JNZ L1
如果Z=0,跳轉到L1
F043
C9
 
RET
從子程式返回

 

輸出

                數字儲存在記憶體位置8008H – 8007H和8009H中。

更新於: 2019年10月5日

591 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告