Discussion in "8051 Discussion Forum" started by    wounder    Jan 25, 2020.
Sat Jan 25 2020, 05:44 pm
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 //5.0ms@XTAL=12MHz, Period = (10.85/2) ms@XTAL=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 //5.0ms@XTAL=12MHz, Period = (10.85/2)
ms@XTAL=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
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.

### Recent

StevenBrere
Sun Jun 16 2024, 04:23 am
Meganmiz
Sat Jun 15 2024, 09:17 pm
RobertDremn
Sat Jun 15 2024, 02:18 pm
Eugenearilk
Fri Jun 14 2024, 03:16 pm
Bennygal
Fri Jun 14 2024, 11:56 am
PeterHow
Thu Jun 13 2024, 06:00 pm
Desmondhet
Thu Jun 13 2024, 03:10 pm
Bernardhex
Thu Jun 13 2024, 02:23 pm