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 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告