📄 untitled.c~
字号:
break;
case 9: //gaodu
buf_sram[sram_count]=buffer[i];
sram_count++;
break;
case 10: //danwei
buf_sram[sram_count]=buffer[i];
sram_count++;
break;
default:
break;
}
}
}
void gpvtg(void)
{
gpscount++;
if((section6==7||section6==8)&&buffer[i]==',')
{
buf_sram[sram_count]=0x2c;
sram_count++;
}
if(buffer[i]==',')
section6++;
else
{
switch(section6)
{
case 7:
buf_sram[sram_count]=buffer[i];
sram_count++;
break;
case 8:
buf_sram[sram_count]=buffer[i];
sram_count++;
break;
}
}
if(section6==9&&buffer[i]==',')
{
buf_sram[sram_count]=0x0d;
sram_count++;
buf_sram[sram_count]=0x0a;
sram_count++;
count++;
if(count<1000)//&&status==1)
{sramvisible();
gpscount=0;
}
if(count>=1000)
{
sram0=1;
sram1=0;
sram2=0;
sram3=0;
count=0;
offset=0x1100;
offset1=0x1100;
}
if(status==1&&sate==1)
{
alarm_count++;
if(alarm_count>=4)
engps_alarm=1;
}
}
}
unsigned int alt_on(void)
{
unsigned int alt;
unsigned int alt1;
alt1=read_adc(0x00)*10;
alt=alt1*VREF/1024;
return alt;
}
void ttosgdr(void)
{
unsigned long int offset2;
unsigned long int offset3;
unsigned long int s;
unsigned char alt1;
offset2=offset1-100;
offset3=offset1-100;
a=buffer[i-3];
b=buffer[i-2];
c=buffer[i-1];
s=100*(a-0x30)+10*(b-0x30)+(c-0x30);
gpsputs("*GDR");
n++;
inttostr(n);
gpsput('G');
alt1=alt_on();
gpsput(alt1);
gpsput('0');
while(s)
{
if(s>999)
break;
str=read1(offset2);
put_c(str);
offset2++;
if(str==0x0d)
{
put_c(0x0a);
offset2=offset3-100;
offset3=offset3-100;
s--;
}
if(offset3==0x1100)
break;
}
gpsputs("!!!");
}
interrupt[USART1_RXC]void usart1_isr(void) //USART1的接收中断。
{
sh=UDR1;
buffer[i]=sh;
if(buffer[i]=='!'&&buffer[i-4]=='R'&&buffer[i-5]=='D'&&buffer[i-6]=='G'&&buffer[i-7]=='*')
{
ttosgdr();
}
if(buffer[i]=='!'&&buffer[i-5]=='C'&&buffer[i-6]=='S'&&buffer[i-7]=='G'&&buffer[i-8]=='*')
{
gpsputs("*GSC");
inttostr(n);
n++;
gpsput(buffer[i-4]);
gpsput(buffer[i-3]);
gpsput(buffer[i-2]);
gpsput(buffer[i-1]);
}
if(buffer[i]=='!'&&buffer[i-1]=='M'&&buffer[i-2]=='E'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
{
power_alarm=1;
gpsputs("*AAE");
inttostr(n);
n++;
gpsput(buffer[i-1]);
}
if(buffer[i]=='!'&&buffer[i-1]=='G'&&buffer[i-2]=='E'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
{
gps_alarm=1;
gpsputs("*AAE");
inttostr(n);
n++;
gpsput(buffer[i-1]);
}
if(buffer[i]=='!'&&buffer[i-1]=='P'&&buffer[i-2]=='E'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
{
position_alarm=1;
gpsputs("*AAE");
inttostr(n);
n++;
gpsput(buffer[i-1]);
}
if(buffer[i]=='!'&&buffer[i-1]=='A'&&buffer[i-2]=='E'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
{
power_alarm=1;
gps_alarm=1;
position_alarm=1;
gpsputs("*AAE");
inttostr(n);
n++;
gpsput(buffer[i-1]);
}
if(buffer[i]=='!'&&buffer[i-1]=='M'&&buffer[i-2]=='D'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
{
power_alarm=0;
gpsputs("*AAD");
inttostr(n);
n++;
gpsput(buffer[i-1]);
}
if(buffer[i]=='!'&&buffer[i-1]=='G'&&buffer[i-2]=='D'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
{
gps_alarm=0;
gpsputs("*AAD");
inttostr(n);
n++;
gpsput(buffer[i-1]);
}
if(buffer[i]=='!'&&buffer[i-1]=='P'&&buffer[i-2]=='D'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
{
position_alarm=0;
gpsputs("*AAD");
inttostr(n);
n++;
gpsput(buffer[i-1]);
}
if(buffer[i]=='!'&&buffer[i-1]=='A'&&buffer[i-2]=='D'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
{
power_alarm=0;
gps_alarm=0;
position_alarm=0;
gpsputs("*AAD");
inttostr(n);
n++;
gpsput(buffer[i-1]);
}
if(buffer[i]=='!'&&buffer[i-1]=='G'&&buffer[i-2]=='C'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
engps_alarm=0;
if(buffer[i]=='C'&&buffer[i-1]=='M'&&buffer[i-2]=='R'&&buffer[i-3]=='P'&&buffer[i-4]=='G'&&buffer[i-5]=='$')
{
sectionid=0;
buf[0]='$';
buf[5]='C';
}
if(buffer[i]==0x0a)
i=0;
if(buffer[i]=='A'&&buffer[i-1]=='G'&&buffer[i-2]=='G'&&buffer[i-3]=='P'&&buffer[i-4]=='G'&&buffer[i-5]=='$')
{
sectioncount=0;
buf[0]='$';
buf[4]='A';
}
if(buffer[i]=='G'&&buffer[i-1]=='T'&&buffer[i-2]=='V'&&buffer[i-3]=='P'&&buffer[i-4]=='G'&&buffer[i-5]=='$')
{
section6=0;
buf[0]='$';
buf[5]='G';
}
if(buf[0]=='$'&&buf[4]=='A')
{ gpgga();
}
if(buf[0]=='$'&&buf[5]=='C')
{ gprmc();
}
if(buf[5]=='G'&&buf[0]=='$')
gpvtg();
i++;
}
// interrupt [USART0_RXC] void usart0_isr(void) //有中断的情况下,数据会出现错误
// {
// unsigned long int offset2;
// unsigned long int offset3;
// th=UDR0;
// offset2=offset1-100;
// offset3=offset1-100;
// while(th-0x30)
// {
// str=read1(offset2);
// put_c(str);
// offset2++;
// if(str==0x0d)
// {
// put_c(0x0a);
// offset2=offset3-100;
// offset3=offset3-100;
// th--;
//
// }
// if(offset3==0x1100)
// break;
//
// }
// }
void gps5s(void)
{
gpsputs("$PSRF103,2,0,0,1*26\r\n");
delay_ms(500);
gpsputs("$PSRF103,3,0,0,1*27\r\n");
delay_ms(500);
gpsputs("$PSRF103,0,0,255,1*26\r\n");
delay_ms(500);
gpsputs("$PSRF103,4,0,255,1*22\r\n");
delay_ms(500);
gpsputs("$PSRF103,5,0,255,1*23\r\n");
delay_ms(500);
}
void main(void)
{
#asm("sei")
sram0=1;
initusart0();
initusart1();
initadc();
PORTB=0X40;
DDRB=0X60;
PORTC=0X80;
DDRC=0X80;
DDRD=0XF3;
DDRE=0X30;
PORTD=0X01;
PORTE=0X10;
waikuo();
sram0=1;
sram1=0;
sram2=0;
sram3=0;
gpsreset();
gps5s();
while(1)
{
if(engps_alarm==1&&gps_alarm==1)
{
gpsputs("*AAR");
inttostr(n);
n++;
gpsput('G');
engps_alarm=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -