void UartInit(void) //115200bps@11.0592MHz 獨立波特率發生器
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位數據,可變波特率
AUXR |= 0x04; //獨立波特率發生器時鐘為Fosc,即1T
BRT = 0xFD; //設定獨立波特率發生器重裝值
AUXR |= 0x01; //串口1選擇獨立波特率發生器為波特率發生器
AUXR |= 0x10; //啟動獨立波特率發生器
ES=1;
}
void Timer0Init(void) //5000微秒@11.0592MHz
{
AUXR |= 0x80; //定時器時鐘1T模式
TMOD &= 0xF0; //設置定時器模式
TMOD |= 0x01; //設置定時器模式
TL0 = 0x00; //設置定時初值
TH0 = 0x28; //設置定時初值
TF0 = 0; //清除TF0標志
TR0 = 0; //定時器0開始計時
ET0=1;
EA=1;
}
oid Timer0Interrupt(void) interrupt 1 //定時計數器0中斷 跑夠5ms 即引發此中斷 此中斷用于對消息數據的處理
{//unsigned char i;
TR0=0; //關閉定時器0
TL0 = 0x00; //設置定時初值
TH0 = 0x28; //設置定時初值
receive_time++;
if(receive_time>500) //20ms的時間到了
{
P1=~P1;
EA=0;
ly_SendOneByte('0'); //2S發送一個心跳包
EA=1;
receive_time=0; //定時時間清0
receive_x=0; //接收位置清0
if(receive_mode==1) //模式來自于手機消息
{
receive_order=receive_date[1]; //取出指令碼
receive_mode=0; //關閉控制模式
}
else; //否則啥都不執行。
}
TR0=1; //打開定時器0
}
進入定時器0中斷后。receive_time>500這個條件滿足后。就不在返回main里。。而是一直在定時中斷里循環。 重復發送'0'
麻煩遇到的大神指點一下唄。。困擾兩天了。。各種想不明白。
|