![simple delay function for 8051 in c simple delay function for 8051 in c](https://www.engineersgarage.com/wp-content/uploads/2019/10/Circuit-Diagram-of-How-to-interface-LEDs-with-8051-microcontroller-AT89C51.gif)
See this link to know the LCD and its 8-bit mode programming. In the previous article, I have already discussed the LCD and its pin configuration. Programs for different square waves are shown below the circuit diagram.We can program 16*2 alphanumeric LCD in two modes 8-bit mode and 4 bit mode. The circuit diagram is shown below and it can be used for any square wave, but the program has to be accordingly. The result will be a square wave of the desired frequency at the selected port pin. After the subroutine is finished, repeat the cycle again. After the delay subroutine is finished, make the corresponding port pin low and call the delay subroutine gain. Make any port pin high and call the delay subroutine. Write up a delay subroutine with delay equal to half the time period of the square wave. Square waves of any frequency (limited by the controller specifications) can be generated using the 8051 timer. Maximum delay possible using a single 8051 timer is 65536µS and minimum is 1µS provided that you are using a 12MHz crystal for clocking the microcontroller.If interrupt is not used, then we have to check the timer flag (TF) is set using some conditional branching instruction.We can configure the desired timer to create an interrupt when the TF flag is set.Once the timer overflows, the programmer must reload the initial start values to the TH and TL registers to begin counting up from.The programmer must clear the TR bit in order to stop the timer. The timer does not stop after the timer flag is set.Once timer flag (TF) is set, the programmer must clear it before it can be set again.RET Few points to remember while using timers. The above delay routine can be looped twice in order to get a 2mS delay and it is shown in the program below. HERE: JNB TF0,HERE // Loops here until TF0 is set (ie until roll over) MOV TL0,#018H // LOads TL0 register with 18H MOV TH0,#0FCH // Loads TH0 register with FCH DELAY: MOV TMOD,#00000001B // Sets Timer 0 to MODE1 (16 bit timer). Here Timer 0 of 8051 is used and it is operating in MODE1 (16 bit timer). Also you can put this in a loop for creating longer time delays (multiples of 1mS). The program shown below can be used for generating 1mS delay and it is written as a subroutine so that you can call it anywhere in the program. Therefore TH=FC and TL=18 Program for generating 1mS delay using 8051 timer. Let the required delay be 1000uS (ie 1mS).Ħ4536 is considered in decimal and converting it t0 hexadecimal gives FC18 Then, THTL = Hexadecimal equivalent of (65536-X) where (65536-X) is considered in decimal.Let TH be the value value that has to be loaded to TH registed and TL be the value that has to be loaded to TL register.2^16 = 65536 is the maximim number of counts possible for a 16 bit timer.For a time delay of “X” uS the timer has to make “X” increments.That means, the time taken for the timer to make one increment = 1/1MHz = 1uS.That means, the timer clock input will be 12MHz/12 = 1MHz.Assume the processor is clocked by a 12MHz crystal.While designing delay programs in 8051, calculating the initial value that has to be loaded inot TH and TL registers forms a very important thing. Designing a delay program using 8051 timers. We will see all these in detail in next sections of this article. Delays longer than this can be implemented by writing up a basic delay program using timer and then looping it for a required number of time. That means the the timer advances once in every 1uS and the maximum time delay possible using a single 8051 timer is ( 2^16) x (1µS) = 65536µS. That means for an 8051 running at 12MHz, the timer clock input will be 1MHz. In 8051, the oscillator output is divided by 12 using a divide by 12 network and then fed to the Timer as the clock signal. When the counter is running on an external clock source (may be a periodic or aperiodic external signal) it is called a “Counter” itself and it can be used for counting external events.
![simple delay function for 8051 in c simple delay function for 8051 in c](https://3.bp.blogspot.com/-x2OpOCSpXvQ/UQ8FyNKV17I/AAAAAAAAASg/SUra6GJ94CU/s1600/2.jpg)
When the counter is running on the processor’s clock, it is called a “Timer”, which counts a predefined number of processor clock pulses and generates a programmable delay. Delay using timer is the most accurate and surely the best method.Ī timer can be generalized as a multi-bit counter which increments/decrements itself on receiving a clock signal and produces an interrupt signal up on roll over.
#SIMPLE DELAY FUNCTION FOR 8051 IN C SOFTWARE#
Generating delay using pure software loops have been already discussed here but such delays are poor in accuracy and cannot be used in sensitive applications. The 8051 microcontroller has two independent 16 bit up counting timers named Timer 0 and Timer 1 and this article is about generating time delays using the 8051 timers.