# 8085 program for hexadecimal counter

Write a program to count continuously in hexadecimal from FFH to 00H in a system with clock frequency 0.5 microseconds. Use register C to set up a delay of 1ms between each count and display output at one of the output ports.

Problem Analysis:

1. The hexadecimal counter is set by loading a register with starting number and decrementing it till zero is reached and then again decrementing it to will produce -1, which is two’s complement of FFH. Hence, the register again reaches FFH.
2. The 1ms time delay is set up by the procedure shown in flowchart-

The register is loaded with appropriate number such that the execution of above loop produces a time delay of 1ms.

Program:

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

The C register is the time delay register which is loaded by a value COUNT to produce a time delay of 1ms.
To find the value of COUNT we do-

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

The delay loop includes two instructions- DCR C (4 T-states) and JNZ (10 T-states)
So TL = 14*Clock period*COUNT
=> 14*(0.5*10-6)*COUNT
=> (7*10-6)*COUNT

Delay outside the loop includes-
DCR B : 4T
MVI C, COUNT : 7T
MOV A, B : 4T
OUTPORT : 10T
JMP : 10T
Total : 35T

TO= 35*Clock period => 17.5 microseconds

So, 1ms= (17.5+ 7*COUNT)microsecond

Therefore, COUNT=(140)10

My Personal Notes arrow_drop_up

Student at Netaji Subhas Institute of Technology

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : Kartikaybhutani