📜  8085十六进制计数器程序

📅  最后修改于: 2021-06-28 16:14:13             🧑  作者: Mango

在时钟频率为0.5微秒的系统中编写一个程序,以从FFH到00H的十六进制连续计数。使用寄存器C在每个计数之间设置1ms的延迟,并在一个输出端口上显示输出。

问题分析:

  1. 十六进制计数器的设置方法是:将起始编号加载到寄存器中,并将其递减直到达到零,然后再将其递减以产生-1,这是FFH的2的补码。因此,寄存器再次达到FFH。
  2. 1ms时间延迟是按照流程图中所示的过程设置的-
    时间延迟
    寄存器中装入了适当的数字,因此执行以上循环会产生1ms的时间延迟。

程序:

Address Label Mnemonics
2000H MVI B, FFH
2002H NEXT DCR B
2003H MVI C, COUNT
2005H DELAY DCR C
2006H JNZ DELAY
2009H MOV A, B
200AH OUTPORT#
200CH JMP NEXT

C寄存器是时间延迟寄存器,由值COUNT加载以产生1ms的时间延迟。
要找到COUNT的值,我们要做的是-

TD = TL + TO
where- TD = Time Delay
TL = Time delay inside loop
TO = Time delay outside loop

延迟循环包括两条指令-DCR C(4个T状态)和JNZ(10个T状态)
所以T L = 14 *时钟周期* COUNT
=> 14 *(0.5 * 10 -6 )*个
=>(7 * 10 -6 )* COUNT

循环外的延迟包括-
DCR B:4T
MVI C,数量:7吨
MOV A,B:4T
出口:10吨
JMP:10吨
合计:35T

T O = 35 *时钟周期=> 17.5微秒

因此,1毫秒=(17.5+ 7 * COUNT)微秒

因此,COUNT =(140) 10