{
TMOD=0x21 ; //定時器T1工作方式2(自動裝載初值的8位定時器),T0方式1
SCON = 0x50; //REN=1允許串行接受狀態,串口工作模式1 (全雙工方式)
PCON=0x80; //SMOD=1,波特率加倍
TH1=0xF3; //baud*2 /* 波特率4800、數據位8、停止位1。效驗位無 (12M)
TL1=0xF3;
TR1 = 1;
TH0 = (65536-10000)/256; //10ms
TL0 = (65536-10000)%256;
ET0=1;
TR0 = 1;
ES= 1; //開串口中斷
EA=1;
}
main()
{ unsigned char i;
system_Ini();
while(1)
{
SBUF=0x20;
while(!TI);// // 等特數據傳送(TI發送中斷標誌)
TI=0;
GetTemp();
}
}
T0在以下用到:
void GetTemp()
{
if(TIM==100) //每隔 1000ms 讀取溫度
{ TIM=0;
TemperatuerResult();
}
}
void T0zd(void) interrupt 1 //1表示定時器0中斷
{
TH0 = 0xD8; //10ms
TL0 = 0xF0;
TIM++;
}