Interfacing hex keypad to 8051

Hex keypad.

In an 8051 microcontroller, it requires 12  cycles of the processor clock for executing a single instruction cycle.  For an 8051 microcontroller clocked by a 12MHz crystal, the time taken for executing one instruction cycle is 1µS and it is according to the equation,  Time for 1 instruction cycle= 12 /12MHz = 1µS.  The shortest instructions will execute in 1µS and other instructions will take 2 or more micro seconds depending up on the size of the instruction. Thus a time delay of any magnitude can be generated by looping suitable instructions a required number of time. Any way, keep one thing in mind that software delay is not very accurate because we cannot exactly predict how much time its takes for executing a single instruction. Generally an instruction will be executed  in the theoretical amount of time but some times it may advance or retard due to other reasons. Therefore it is better to use  8051 Timer for generating delay in time critical applications. How ever software delay routines are very easy to develop  and well enough for less critical and simple applications.

Interfacing hex keypad to 8051

Program  to delay 1mS.

DELAY: MOV R6,#250D
       MOV R7,#250D
LABEL1: DJNZ R6,LABEL1
LABEL2: DJNZ R7,LABEL2
        RET

The above program roughly produces a delay of 1mS. The instruction DJNZ Rx,LABEL is a two cycle instruction and it will take 2µS to execute. So repeating this instruction 500 times will generate a delay of 500 x 2µS = 1mS. The program is written as a subroutine and it works this way. When called the sub routine DELAY, Registers R6 and R7 are loaded by 250D. Then DJNZ R6,LABEL1 is executed until R6 becomes zero and then DJNZ R7,LABEL2 is executed until R7 is zero. This creates a loop of DJNZ Rx, LABEL  repeating 500 times and the result will be a 1mS delay. As I said earlier, this just a rough delay and when you test this program you may find  slight differences in the output. You can make adjustments on the initial values of R6 and R7 to make the result more accurate.

Interfacing hex keypad to 8051 Schematic

Program to delay 1 second.

The program shown below produces a delay of  around 1 second.  In this program subroutine for delaying 1mS (DELAY) is called 4 times back to back and the entire cycle is repeated 250 times. As result, a delay of  4 x 1mS x 250 = 1000mS = 1 second is produced.

DELAY1: MOV R5,#250D
LABEL: ACALL DELAY
       ACALL DELAY
       ACALL DELAY
       ACALL DELAY
       DJNZ R5,LABEL
       RET
DELAY: MOV R6,#250D
       MOV R7,#250D
LOOP1: DJNZ R6,LOOP1
LOOP2: DJNZ R7,LOOP1

 

For more detail: Interfacing hex keypad to 8051


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top