We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Sven thanks for the great info. For now i wrote the code for timer0 to get the interrupt every 4.6ms (i have 12Mhz) clk and it seems to be working and i get the port pin to toggle every 4.6ms. However when i use timer2 to do the same thing, i get the port pin high all the time. I am using the 87c51FA version chip which has timer0,1 and 2. if anyone can check the code and see what is wrong, i would appreciate it. the following is the timer 0 code to toggle every 4.6ms and it works.but after this code i have timer2 code that is not working. #include <REG52.H> #include <stdio.h> #include <string.h> sbit P1_0 = P1^0; #define timercount 0xee11 int i; void timer0_ISR (void) interrupt 1 { P1_0 ^= 1; TR0 =0; TL0 = (timercount & 0x00FF); TH0 = (timercount >> 8); TR0 = 1; } void main (void) { /*------------------------------------------------ Setup the serial port for 2400 baud at 12MHz. ------------------------------------------------*/ SCON = 0x52; TMOD = 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */ TH1 = 0xf3; /* TH1: reload value for 2400 baud @ 12MHz */ TR1 = 1; /* TR1: timer 1 run */ TI = 1; /* TI: set TI to send first char of UART */ P1 = 0; TMOD = (TMOD & 0xF0 ) | 0x01; ET0 = 1; TR0 = 1; EA = 1; while (1) { } } NOW ..THIS is the code for Timer2 and i couldn't get it working to get the timer2 to do exactly as timer 0. #include <REG52.H> #include <stdio.h> #include <string.h> #define timercount 0xee11 sbit P1_0 = P1^0; void timer2_ISR (void) interrupt 5 { P1_0 ^= 1; TR2 =0; TL2 = (timercount & 0x00FF); TH2 = (timercount >> 8); TR2 = 1; } void main (void) { /*------------------------------------------------ Setup the serial port for 2400baud at 12MHz. ------------------------------------------------*/ SCON = 0x52; TMOD = 0x21; TH1 = 0xf3; TR1 = 1; TI = 1; P1 = 0; T2CON = 0x00; EA = 1; ET2 = 1; TR2 = 1; while (1) { } }