8085程式模擬即時時鐘


現在讓我們來看一個Intel 8085微處理器的程式。在這個程式中,我們將看到如何使用8085生成即時時鐘。

問題陳述:

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

討論:

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

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

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

輸入:

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

流程圖:

程式:

地址
十六進位制程式碼
標籤
助記符
註釋
F000
21, 00, 00
BEG
LXI H,0000H
將HL清零為0000H
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年7月30日

2K+瀏覽量

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告