8085 program for hexadecimal counter
Last Updated :
11 Apr, 2023
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:
- 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.
- 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:
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 |
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
Advantages:
- This program is simple and efficient, making it easy to implement and understand.
- The program allows for the customization of the initial value of the counter by modifying the values in the C and B registers.
- The program can be modified to count in different bases, such as binary or decimal.
- The program can be easily modified to count up or down by changing the instruction from DCR to INR.
Disadvantages:
- The program assumes that the counter will never exceed 255 in decimal, which may not be suitable for all use cases.
- The program does not output the counter value to a display or other output device, which may limit its usefulness in some applications.
- The program does not handle exceptional cases, such as overflow situations or invalid input.
- The program does not allow for dynamic memory allocation, which may limit its usefulness in more complex applications.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...