00001 /************************************************** 00002 * Function: Driver for 8051 timer 00003 * 00004 * File: tiemr.c 00005 * Author: Book Chen 00006 * 2008.08.08 00007 **************************************************** 00008 */ 00009 #include "..\inc\includes.h" 00010 00011 void F_TimePowerOnInit() LargeReentrant; 00012 00013 void F_TimePowerOnInit() LargeReentrant{ 00014 /******************* 00015 Timer 0 sfr setting in mode 1 16 bit timer 00016 For Irda signal time counter 00017 ********************/ 00018 TMOD|=0x01; // Set timer0 to mode 1...16 bit timer/counter 00019 TH0=(65536-9216)/256; // 10ms=(12/11.0592M)*clock...clock=9216 00020 TL0=(65536-9216)%256; // 10ms=(12/11.0592M)*clock...clock=9216 00021 TR0=1; // Timer starts 00022 ET0=1; // Timer 0 intrq enable 00023 /******************* 00024 Timer 1 sfr 00025 ********************/ 00026 TMOD|=0x10; // use Timer1 in mode 1...16 bit 00027 TL1=0; // 10ms 1 tcik 00028 TH1=0; // 00029 TR1=0; // Timer 1 start to count. 00030 ET1=0; // Timer interrupt disable 00031 /******************* 00032 Timer 2 sfr 00033 ********************/ 00034 RCLK=1; // Timer 2 is baudrate generator 00035 TCLK=1; // Timer 2 is baudrate generator 00036 #if (BAUDRATE==9600) 00037 RCAP2L=0xFF-35; // Timer 2 reload low 00038 RCAP2H=0xFF; // Timer 2 reload high 00039 TL2=0xFF-35; // 65536-36=0xFFFF-35 00040 TH2=0xFF; // 65536-36=0xFFFF-35 00041 #elif (BAUDRATE==19200) 00042 RCAP2L=0xFF-17; // Timer 2 reload low 00043 RCAP2H=0xFF; // Timer 2 reload high 00044 TL2=0xFF-17; // 65536-18=0xFFFF-17 00045 TH2=0xFF; 00046 #elif (BAUDRATE==28800) 00047 RCAP2L=0xFF-11; // Timer 2 reload low 00048 RCAP2H=0xFF; // Timer 2 reload high 00049 TL2=0xFF-11; // 65536-12=0xFFFF-11 00050 TH2=0xFF; 00051 #elif (BAUDRATE==38400) 00052 RCAP2L=0xFF-8; // Timer 2 reload low 00053 RCAP2H=0xFF; // Timer 2 reload high 00054 TL2=0xFF-8; // 65536-9=0xFFFF-8 00055 TH2=0xFF; 00056 // #elif (BAUDRATE==57600) 00057 // RCAP2L=0xFF-5; // Timer 2 reload low 00058 // RCAP2H=0xFF; // Timer 2 reload high 00059 // TL2=0xFF-5; // 65536-6=0xFFFF-5 00060 // TH2=0xFF; 00061 // #elif (BAUDRATE==115200) 00062 // RCAP2L=0xFF-2; // Timer 2 reload low 00063 // RCAP2H=0xFF; // Timer 2 reload high 00064 // TL2=0xFF-2; // 65536-3=0xFFFF-5 00065 // TH2=0xFF; 00066 #endif 00067 TR2=1; // Timer 2 starts 00068 //ET2=1; // Timer 2 interrupt 00069 }