http://www.jh-tec.cn/archives/7818
以下是定时器初始化子程序
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Timer0_Init(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0 = (65536 - 18432) / 256; //重新赋值 20ms
TL0 = (65536 - 18432) % 256;
EA = 1; //总中断打开
ET0 = 1; //定时器中断打开
TR0 = 1; //定时器开关打开
}
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_Interrupt(void) interrupt 1
{
static unsigned char time20ms = 0;
TH0 = (65536 - 18432) / 256; //重新赋值 20ms
TL0 = (65536 - 18432) % 256;
time20ms++;
if (time20ms > 50)
{
time20ms = 0;
readTempFlag = 1; //读标志位置1
}
if (time20ms % 25 == 0)
{
dispFlag = 1;
}
}
void UART_Init(void)
{
// SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
// TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
// TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
// TL1 = TH1;
// TR1 = 1; // TR1: timer 1 打开
// EA = 1; //打开总中断
// ES = 1; //打开串口中断
SCON = 0x50;
TH2 = 0xFF;
TL2 = 0xFD;
RCAP2H = 0xFF; //(65536-(FOSC/32/BAUD)) BAUD = 115200 FOSC = 11059200
RCAP2L = 0xFD;
/*****************/
TCLK = 1;
RCLK = 1;
C_T2 = 0;
EXEN2 = 0;
/*****************/
TR2 = 1;
ES = 1; //打开串口中断
EA = 1; //打开总中断
}