This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Timer

Hi

This program i am using has two different timer routines and i dont what each one of them is doing.In the first one i do not understand what is meant by the Timer Register for the high byte(TH0) and v being shifted by 8. Also for routine number 2, what is meant by SCON = 0x50; and TMOD |= 0x20 ;.Where did the value 213 for TH1 come from(TH1=213)?


1)void timer0 (void) interrupt 1 using 1 { /* Int Vector at 000BH, Reg Bank 1 */
unsigned char i;
unsigned int v;
TR0 = 0; // stop timer
v = TL0 | (TH0>>8);
v += (unsigned int) (T0_CLOCK);
TL0 = (unsigned char) v;
TH0 = (unsigned char) (v >> 8);
TR0 = 1; // start timer

2)void main (void) {
bit CanMessageReq = 0; // Remote Frame Requested
// init serial interface
SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 213; /* TH1: reload value for 1200 baud @ 20MHz */
TR1 = 1; /* TR1: timer 1 run */
TI = 1; /* TI: set TI to send first char of UART */
// ToDo take timer from RTX51 Tiny
#define PERIOD -500 /* 250 usec interrupt period */
/* setup the timer 0 interrupt */
TL0 = (unsigned char) (T0_CLOCK);
TH0 = (unsigned char) (T0_CLOCK >> 8);
TMOD = TMOD | 0x01; /* select mode 1 */
TR0 = 1; /* start timer 0 */
ET0 = 1; /* enable timer 0 interrupt */

Parents
  • Well, I'd guess it's calculating the reload value for timer 0 required to generate an interrupt approximately every millisecond with a 20MHz clock.

    I think you need to have a look at a good book on 'C'. I'd recommend:

    "C: A Reference Manual"
    by Harbison and Steele
    ISBN 0-13-326224-3

    I think you should also read the datasheet for the device in conjunction with the "Intel MCS 51 Microcontroller Family User's Manual" which you can find on the Intel website.

    Stefan

Reply
  • Well, I'd guess it's calculating the reload value for timer 0 required to generate an interrupt approximately every millisecond with a 20MHz clock.

    I think you need to have a look at a good book on 'C'. I'd recommend:

    "C: A Reference Manual"
    by Harbison and Steele
    ISBN 0-13-326224-3

    I think you should also read the datasheet for the device in conjunction with the "Intel MCS 51 Microcontroller Family User's Manual" which you can find on the Intel website.

    Stefan

Children
No data