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+浏览量

启动你的职业生涯

通过完成课程获得认证

开始
广告