Open In App

8085 program for hexadecimal counter

Improve
Improve
Like Article
Like
Save
Share
Report

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- time delay 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.

Last Updated : 11 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads