Discussion in "8051 Discussion Forum" started by    wounder    Jan 25, 2020.
Sat Jan 25 2020, 05:44 pm
#1
I have a 8051 micro controller ,it has timer0,1,2,3 with different modes.

in timer0,mode0, i got a sample code (as shown below).

from that code

TH0_INIT=0xFC //[email protected]=12MHz, Period = (10.85/2) [email protected]=22.1184MHz TL0_INIT=0x0F

both TH0,TL0 load with hex values..but could not derive these values from equation below .. (https://exploreembedded.com/wiki/5.8051_Timer_programming) Could you please tell me ,how these hex values derive ??

tick = (1/(Fosc/12)

tick = 12/Fosc$$ For Fosc == 11.0592Mhz, the tick time will be

tick = 12/11.0592M = 1.085069444us = 1.085us

Now the Timer value for the required delay can be calculated as below.

Delay = TimerCount * tick

Count = (Delay/tick)

RegValue = TimerMax- Count RegValue = TimerMax-(Delay/tick) = TimerMax - (Delay/1.085us)

RegValue = TimerMax-((Delay/1.085) * 10^6)$$


#include "SFR_Macro.h"
#include "Function_define.h"

#define TH0_INIT 0xFC //[email protected]=12MHz, Period = (10.85/2)
[email protected]=22.1184MHz
#define TL0_INIT 0x0F


void Timer0_ISR (void) interrupt 1 //interrupt address is 0x000B
{
TH0 = TH0_INIT;
TL0 = TL0_INIT;
P12 = ~P12; // GPIO
toggle when interrupt
}



void main (void)
{
TMOD = 0XFF;
Set_All_GPIO_Quasi_Mode;
TIMER0_MODE0_ENABLE;


clr_T0M;
clr_T1M;

TH0 = TH0_INIT;
TL0 = TL0_INIT;


// set_ET0; //enable Timer0 interrupt
//enable Timer1 interrupt
set_EA; //enable interrupts

set_TR0; //Timer0 run


while(1)
{
TH0 = TH0_INIT;
TL0 = TL0_INIT;
set_TR0;
while(!TF0);
clr_TR0;
P12 = ~P12;
TF0 = 0 ;
}
}
Sun Jan 26 2020, 09:35 am
#2
For a 12MHz crystal using a normal divided by 12 clock.

For a 5mS delay I get
TH0_INIT=0xEC
TL0_INIT=0x78
What do you get ?

The program you posted uses polling and an interrupt to monitor the timer
and toggle P12, choose one, you can't (at least shouldn't) do both.

Get Social

Information

Powered by e107 Forum System

Downloads

Comments

WilliamTup
Mon Nov 28 2022, 02:22 pm
StanleyAvake
Mon Nov 28 2022, 12:41 am
bvnCar
Sun Nov 27 2022, 10:52 am
Andreasaei
Sun Nov 27 2022, 06:50 am
FrancisCog
Sat Nov 26 2022, 09:48 pm
Irincwb
Tue Nov 22 2022, 03:15 pm
Footballhog
Mon Nov 21 2022, 09:15 am
Jamesontot
Mon Nov 21 2022, 08:17 am