使用逻辑控制器的十进制计数器

我们用8085编写一个用汇编语言编写的程序,仅用于实现十进制计数器的实现,该计数器被逻辑控制器接口使用。起始计数的输入必须是通过完整界面的输入,此外,我们在界面上显示计数。

让我们考虑一个示例程序–

紧随其后的程序应始终包含一个无限循环,直到用户的输入仅将有效二进制数字十进制值(仅对端口B)包含在内。之后,通过将其发送至端口A来显示初始计数。每隔0.5秒延迟一次后,计数值将以小数点后1递增,并直接发送到端口A端子进行显示。在将计数值从99滚动到00之后,就可以无条件地重复执行该操作。

这是示例程序代码。

; FILE NAME COUNTER.ASM
ORG C000H

PA EQU D8H
PB EQU D9H
PC EQU DAH

CTRL EQU DBH

DELAY EQU 04BEH

MVI A, 10001010B
OUT CTRL ; Configure 8255 ports in desired modes
; All the next 9 instructions will ensure that control is transferred to next portion of program
; only after Port B receives a valid 2-digit BCD input.
AGAIN: IN PB
ANI 0FH

CPI 0AH
JNC AGAIN

IN PB
ANI F0H

CPI A0H
JNC AGAIN

IN PB
REPEAT: OUT PA ; Now displaying the count value
PUSH PSW

LXI D, FFFFH
CALL DELAY ; Generating delay of 0.5 second

POP PSW
ADI 01H
DAA ; Incrementing A value in decimal
JNZ REPEAT

JMP AGAIN