Open In App

8085 program for hexadecimal counter

Last Updated : 11 Apr, 2023
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.

Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads