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