📄 remoter.lst
字号:
C51 COMPILER V7.01 REMOTER 05/18/2006 11:54:09 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE REMOTER
OBJECT MODULE PLACED IN remoter.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE remoter.c BROWSE DEBUG OBJECTEXTEND CODE
stmt level source
1 #if 0
// Data frame format MaxLen=255
// Token + type + frameLen + Data + CheckSum
//frameLen is sum of Token,type,frameLen+data+CheckSum
// Token = 0x24
#include<common.h>
//extern uChar CompareData(void);
//extern uChar GetCurLongitudeLatitude(uChar *p);
extern uChar Handle776InfoData(uChar *p);
extern uChar CompareData(void);
extern void ViewGpsDat();
extern uChar GetCurLongitudeLatitude(uChar *p);
volatile uChar gIrKeyValue=0;
volatile uChar gNecState = Nec_Null;
volatile uInt2 gIrTick;//per tick 200us
void Init(void);
void delay(uchar);
void SendCharsToSerial(uchar *p,uchar);
void PrintNum(uChar i);
volatile uInt2 gSystemTick=0;
volatile uChar g500usCnt = 0;
volatile uChar g100msCnt = 0;
volatile uChar xdata pReceiveBuffer[150] ;
volatile uChar gGetInfoDataSuccessFlag=0;
//max 100 station.
uChar gTotalStation=0;
uChar gReceiveTotalStation=0;
GpsInfo xdata pGpsInfo[50];
uInt4 gCurLongitude = 0;
uInt4 gCurLatitude = 0;
volatile uChar gReceiveTimeout = 8;
volatile uChar gSerialReceiveFlag=0;
volatile uInt2 gSendTimeout = 0;
volatile uInt2 gSendArray=0;
volatile uChar gSendBit=0;
volatile uInt2 gSendLen = 0;
volatile uChar g776SendFlag=0;
//volatile uChar idata p776SendArray[20];
volatile uChar g776SendBytePos=0;
volatile uChar g776SendBitPos=0;
volatile uChar g776SendFinishFlag = 0;
volatile uChar g776SendTimeout = 0;
const uChar code pByteMap[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void Delay_100ms(uChar param)
C51 COMPILER V7.01 REMOTER 05/18/2006 11:54:09 PAGE 2
{
g100msCnt=param;
while(1)
{
if((g500usCnt==0)&&(g100msCnt==0))
break;
}
}
void init_reg(void)
{
CHPENT=0x87;
CHPENT=0x59;
CHPCON|=0x10;
CHPENT=0;
}
void Init(void)
{
TMOD=0x21;
TH0=0xfa;
TL0=0x00;
ET0=1;
EX0=0;
EX1=1;
// TH1=0xfa;//0xf4 is 4800 for 22.1184 ,0xfa is 9600 for 22.1184
// TL1=0xfa;//0xfd for 19200
TH1=0xf4;
TL1=0xf4;
ET1=0;
// PCON=0x80; //bandrate=19200 for 11.0592
PCON=0x00; //bandrate=19200 for 22.1184
SCON=0x50;
RI=TI=0;
ES=1;
TR1=1;
TR0=1;
EA=1;
IT0=1;
IT1=1;
P1=0xff;
IP=0x05;
OpenInt0AndCloseSerial();
init_reg();
}
void SendCharsToSerial(uchar *p,uchar count)
{
uchar i;
EA=0;
for(i=0 ; i<count; i++)
{
SBUF = p[i];
while(!TI);
TI=RI=0;
}
EA=1;
}
void PrintNum(uChar i)
{
C51 COMPILER V7.01 REMOTER 05/18/2006 11:54:09 PAGE 3
#define SBUF_SERIAL SBUF=tTemp + 0x30; \
while(!TI); \
TI=RI=0
uChar tTemp = i/100;
EA=0;
SBUF_SERIAL;
tTemp = (i%100)/10;
SBUF_SERIAL;
tTemp = i%10;
SBUF_SERIAL;
EA=1;
}
void Timer0()interrupt 1 //for all sort of timeout and system'tick
{
TR0 = 0 ;
// TH0=0xfb;
// TL0=0xf5; //560us for 22.1184M
TH0=0xfe;
TL0=0x8f; //200us for 22.1184M
TR0 = 1 ;
if(gReceiveTimeout)
gReceiveTimeout--;
if(gSendTimeout)
gSendTimeout--;
if(g776SendTimeout)
g776SendTimeout--;
if(g500usCnt)
g500usCnt--;
if((g100msCnt)&&(g500usCnt==0))
{
g500usCnt = 200;
g100msCnt--;
}
gSystemTick++;
GUEST ^=0x01;
}
void Int1() interrupt 2 //for remoter
{
#define dIr_Margin 2
static uChar sTempCnt = 0;
static uChar sIrBuffer[4];
switch(gNecState)
{
case Nec_Null:
gIrTick=gSystemTick;
gNecState = Nec_Head;
sTempCnt=0;
break;
case Nec_Head:
{
if((gSystemTick>=(gIrTick+67-dIr_Margin)) && (gSystemTick<=(gIrTick+67+dIr_Margin)))
{
gIrTick=gSystemTick;
C51 COMPILER V7.01 REMOTER 05/18/2006 11:54:09 PAGE 4
gNecState = Nec_FacDat;
}
else
{
gNecState = Nec_Null;
}
break;
}
case Nec_FacDat:
if((gSystemTick>=(gIrTick+6-dIr_Margin)) && (gSystemTick<=(gIrTick+6+dIr_Margin)))//0
sIrBuffer[sTempCnt/8] &= ~pByteMap[sTempCnt%8];
else if((gSystemTick>=(gIrTick+11-dIr_Margin)) && (gSystemTick<=(gIrTick+11+dIr_Margin)))//1
sIrBuffer[sTempCnt/8] |= pByteMap[sTempCnt%8];
else
gNecState = Nec_Null;
sTempCnt++;
gIrTick = gSystemTick ;
if(sTempCnt==32)
{
gNecState = Nec_Null;
if((sIrBuffer[0]==~sIrBuffer[1])&&(sIrBuffer[2]==~sIrBuffer[3]))
gIrKeyValue = sIrBuffer[2];
}
break;
default:
gNecState = Nec_Null;
break;
}
}
void Int0() interrupt 0 //for bi_communication
{
//for receive data from 776
if(g776SendFlag==1)
{
DAT = 1;
if(DAT==1)
// p776SendArray[g776SendBytePos] |= pByteMap[g776SendBitPos];
pReceiveBuffer[g776SendBytePos] |= pByteMap[g776SendBitPos];
else
// p776SendArray[g776SendBytePos] &= ~pByteMap[g776SendBitPos];
pReceiveBuffer[g776SendBytePos] &= ~pByteMap[g776SendBitPos];
g776SendTimeout = 200;
g776SendBitPos++;
if(g776SendBitPos==8)
{
g776SendBitPos=0;
// if(++g776SendBytePos==(p776SendArray[2]))
if(++g776SendBytePos==(pReceiveBuffer[2]))
if(g776SendBytePos>4)
{
g776SendBytePos=0;
g776SendFlag = 0;
DAT = 1;
g776SendFinishFlag = 1;
}
}
return;
}
C51 COMPILER V7.01 REMOTER 05/18/2006 11:54:09 PAGE 5
//send data to 776
if((gSendArray==0)&&(gSendBit==0))
return;
if(pReceiveBuffer[gSendLen-gSendArray]&pByteMap[8-gSendBit])
DAT =1;
else
DAT =0;
gSendTimeout = 200;
if(gSendBit)
gSendBit-=1;
if((gSendBit==0)&&(gSendArray))
{
gSendArray--;
if(gSendArray)
gSendBit=8;
else
DAT = 1;//finished send
}
}
void delay(uChar a)//delay(1) for 500us
{
uChar i,k;
for(k=0 ;k<a; k++)
for(i=0 ;i<200; i++)
_nop_();
}
void Serial_int(void) interrupt 4
{ //$GPRMC,212110.64,V,3339.1116,N,11742.9893,W
//pReceive[]=",212110.64,V,3339.1116,N,11742.9893,W";
code uChar pGPRMC[]={0x24, 0x47, 0x50, 0x52 ,0x4d ,0x43};//"$GPRMC";
static uChar sReceiveState=0;
uChar c;
if(_testbit_(RI))
{
RI=0;
TI=0;
c=SBUF;
if(sReceiveState<6)
{
if(pGPRMC[sReceiveState] != c)
{
sReceiveState = 0;
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -