??? 04/04/10 14:08 Read: times |
#174826 - P89V51RD2 Timing |
Hi, I am having lots of trouble with using Timer 0 on the P89V51RD2 to interrupt every 1 second. I want to use it in Mode 2 (set it and forget it). I am driving it at 18.432 MHz
Here is the code, note that ?? = the number I can't calculate void timer0 (void) interrupt 1 using 1 { if (++cycle == 10000) { secs++; printf("time = %in",secs); } } void main() { TH0 = (unsigned char) ??; TL0 = (unsigned char) ??; TMOD = TMOD | 0x02; TR0 = 1; ET0 = 1; } I would also like to have a wait function using Timer 1 so that I can introduce small delays into the code independent of the overall 1 second Timer 0. Something like this: void Wait(unsigned char t) { unsigned char c; for (c=0;c<t;c++) { TH1 = ??; TL1 = ??; TR1=1; TF1=0; while (TF1==0); TR1 = 0; } } Could someone please guide me through the calculations of the TH0 and TL0 in both cases? What mode should I use for the wait function (e.g. to wait for periods less than a second e.g. 50ms) Many many thanks! |
Topic | Author | Date |
P89V51RD2 Timing | 01/01/70 00:00 | |
Duplicate thread | 01/01/70 00:00 |