📄 gps.lss
字号:
}
altitude[i] = '\0'; /*字符串结束*/
af8: e0 2f mov r30, r16
afa: f0 e0 ldi r31, 0x00 ; 0
afc: e1 5f subi r30, 0xF1 ; 241
afe: fe 4f sbci r31, 0xFE ; 254
b00: 10 82 st Z, r1
b02: 15 cd rjmp .-1494 ; 0x52e <main+0x5c>
/*获得天线高度 end*/
}
/******************************* GPGSV 消息 *******************************/
else if(strcmp(data_buffer,"GPGSV\0") == 0)
b04: 65 ee ldi r22, 0xE5 ; 229
b06: 70 e0 ldi r23, 0x00 ; 0
b08: 83 e5 ldi r24, 0x53 ; 83
b0a: 91 e0 ldi r25, 0x01 ; 1
b0c: 49 d3 rcall .+1682 ; 0x11a0 <strcmp>
b0e: 00 97 sbiw r24, 0x00 ; 0
b10: 09 f0 breq .+2 ; 0xb14 <main+0x642>
b12: 50 c0 rjmp .+160 ; 0xbb4 <main+0x6e2>
{
/*获得语句条数 start*/
temp = USART_getchar();
b14: 36 d3 rcall .+1644 ; 0x1182 <USART_getchar>
if(temp != ',') /*有效数据*/
b16: 8c 32 cpi r24, 0x2C ; 44
b18: 09 f0 breq .+2 ; 0xb1c <main+0x64a>
{
total_gpgsv_no = temp - '0';
temp = USART_getchar(); /*跳过接下来的','号*/
b1a: 33 d3 rcall .+1638 ; 0x1182 <USART_getchar>
}
else total_gpgsv_no = 0;
/*获得语句条数 end*/
/*获得当前语句编号 start*/
temp = USART_getchar();
b1c: 32 d3 rcall .+1636 ; 0x1182 <USART_getchar>
b1e: 08 2f mov r16, r24
if(temp != ',') /*有效数据*/
b20: 8c 32 cpi r24, 0x2C ; 44
b22: 19 f0 breq .+6 ; 0xb2a <main+0x658>
{
current_gpgsv_index = temp - '0';
temp = USART_getchar(); /*跳过接下来的','号*/
b24: 2e d3 rcall .+1628 ; 0x1182 <USART_getchar>
}
else current_gpgsv_index = 1;
if(current_gpgsv_index == 1) /*清数据,重新统计*/
b26: 01 33 cpi r16, 0x31 ; 49
b28: 39 f4 brne .+14 ; 0xb38 <main+0x666>
{
total_statlites_have_signal[0] = '0';
b2a: 80 e3 ldi r24, 0x30 ; 48
b2c: 80 93 21 01 sts 0x0121, r24
total_statlites_have_signal[1] = '0';
b30: 80 93 22 01 sts 0x0122, r24
total_statlites_have_signal[2] = '\0';
b34: 10 92 23 01 sts 0x0123, r1
}
/*获得当前语句编号 end*/
#if 1
/*获得可视卫星总数 start*/
temp = USART_getchar();
b38: 24 d3 rcall .+1608 ; 0x1182 <USART_getchar>
if(temp != ',')
b3a: 8c 32 cpi r24, 0x2C ; 44
b3c: 49 f0 breq .+18 ; 0xb50 <main+0x67e>
{
total_statlites_visable[0] = temp;
b3e: 80 93 1b 01 sts 0x011B, r24
total_statlites_visable[1] = USART_getchar();
b42: 1f d3 rcall .+1598 ; 0x1182 <USART_getchar>
b44: 80 93 1c 01 sts 0x011C, r24
total_statlites_visable[2] = '\0';
b48: 10 92 1d 01 sts 0x011D, r1
temp = USART_getchar(); /*跳过接下来的','号*/
b4c: 1a d3 rcall .+1588 ; 0x1182 <USART_getchar>
b4e: 07 c0 rjmp .+14 ; 0xb5e <main+0x68c>
}
else
{
total_statlites_visable[0] = '0';
b50: 80 e3 ldi r24, 0x30 ; 48
b52: 80 93 1b 01 sts 0x011B, r24
total_statlites_visable[1] = '0';
b56: 80 93 1c 01 sts 0x011C, r24
total_statlites_visable[2] = '\0';
b5a: 10 92 1d 01 sts 0x011D, r1
b5e: 10 e0 ldi r17, 0x00 ; 0
if(total_statlites_have_signal[1] != '9')
total_statlites_have_signal[1] += 1;
else
{
total_statlites_have_signal[0] += 1;
total_statlites_have_signal[1] = '0';
b60: 80 e3 ldi r24, 0x30 ; 48
b62: f8 2e mov r15, r24
while(USART_getchar() != ','); /*忽略可视卫星总数*/
#endif
/*获得可视卫星参数 start*/
for(i=0;i<4;i++) /*没条语句包含四颗卫星数据*/
{
while(USART_getchar() != ','); /*忽略卫星号*/
b64: 0e d3 rcall .+1564 ; 0x1182 <USART_getchar>
b66: 8c 97 sbiw r24, 0x2c ; 44
b68: e9 f7 brne .-6 ; 0xb64 <main+0x692>
while(USART_getchar() != ','); /*忽略卫星仰角*/
b6a: 0b d3 rcall .+1558 ; 0x1182 <USART_getchar>
b6c: 8c 97 sbiw r24, 0x2c ; 44
b6e: e9 f7 brne .-6 ; 0xb6a <main+0x698>
while(USART_getchar() != ','); /*忽略卫星方位*/
b70: 08 d3 rcall .+1552 ; 0x1182 <USART_getchar>
b72: 8c 97 sbiw r24, 0x2c ; 44
b74: e9 f7 brne .-6 ; 0xb70 <main+0x69e>
temp = USART_getchar(); /*卫星信噪比*/
b76: 05 d3 rcall .+1546 ; 0x1182 <USART_getchar>
b78: 08 2f mov r16, r24
if((temp != ',') && (temp != '*'))
b7a: 8c 32 cpi r24, 0x2C ; 44
b7c: b9 f0 breq .+46 ; 0xbac <main+0x6da>
b7e: 8a 32 cpi r24, 0x2A ; 42
b80: a9 f0 breq .+42 ; 0xbac <main+0x6da>
{
temp += USART_getchar() - '0';
b82: ff d2 rcall .+1534 ; 0x1182 <USART_getchar>
b84: 00 53 subi r16, 0x30 ; 48
if((temp > '0')) /*不为0代表这个卫星有信号*/
b86: 08 0f add r16, r24
b88: 01 33 cpi r16, 0x31 ; 49
b8a: 78 f0 brcs .+30 ; 0xbaa <main+0x6d8>
{
if(total_statlites_have_signal[1] != '9')
b8c: 80 91 22 01 lds r24, 0x0122
b90: 89 33 cpi r24, 0x39 ; 57
b92: 21 f0 breq .+8 ; 0xb9c <main+0x6ca>
total_statlites_have_signal[1] += 1;
b94: 8f 5f subi r24, 0xFF ; 255
b96: 80 93 22 01 sts 0x0122, r24
b9a: 07 c0 rjmp .+14 ; 0xbaa <main+0x6d8>
else
{
total_statlites_have_signal[0] += 1;
b9c: 80 91 21 01 lds r24, 0x0121
ba0: 8f 5f subi r24, 0xFF ; 255
ba2: 80 93 21 01 sts 0x0121, r24
total_statlites_have_signal[1] = '0';
ba6: f0 92 22 01 sts 0x0122, r15
}
}
temp = USART_getchar(); /*跳过接下来的','号*/
baa: eb d2 rcall .+1494 ; 0x1182 <USART_getchar>
/*获得可视卫星总数 end*/
#else
while(USART_getchar() != ','); /*忽略可视卫星总数*/
#endif
/*获得可视卫星参数 start*/
for(i=0;i<4;i++) /*没条语句包含四颗卫星数据*/
bac: 1f 5f subi r17, 0xFF ; 255
bae: 14 30 cpi r17, 0x04 ; 4
bb0: c9 f6 brne .-78 ; 0xb64 <main+0x692>
bb2: bd cc rjmp .-1670 ; 0x52e <main+0x5c>
}
/*获得可视卫星参数 end*/
}
/********************************* GPRMC 消息 ***********************************/
else if(strcmp(data_buffer,"GPRMC\0") == 0) /*从这个信息里获得时间*/
bb4: 6c ee ldi r22, 0xEC ; 236
bb6: 70 e0 ldi r23, 0x00 ; 0
bb8: 83 e5 ldi r24, 0x53 ; 83
bba: 91 e0 ldi r25, 0x01 ; 1
bbc: f1 d2 rcall .+1506 ; 0x11a0 <strcmp>
bbe: 00 97 sbiw r24, 0x00 ; 0
bc0: 09 f0 breq .+2 ; 0xbc4 <main+0x6f2>
bc2: b5 cc rjmp .-1686 ; 0x52e <main+0x5c>
bc4: 00 e0 ldi r16, 0x00 ; 0
temp = USART_getchar();
if(temp == ',') /*结束*/
break;
else
{
if((i == 2) || (i == 5))time[i++] = ':'; /*添加'.'*/
bc6: 1a e3 ldi r17, 0x3A ; 58
{
//debug("found tag GPRMC");
i = 0;
while(1)
{
temp = USART_getchar();
bc8: dc d2 rcall .+1464 ; 0x1182 <USART_getchar>
if(temp == ',') /*结束*/
bca: 8c 32 cpi r24, 0x2C ; 44
bcc: 89 f0 breq .+34 ; 0xbf0 <main+0x71e>
break;
else
{
if((i == 2) || (i == 5))time[i++] = ':'; /*添加'.'*/
bce: 02 30 cpi r16, 0x02 ; 2
bd0: 11 f0 breq .+4 ; 0xbd6 <main+0x704>
bd2: 05 30 cpi r16, 0x05 ; 5
bd4: 31 f4 brne .+12 ; 0xbe2 <main+0x710>
bd6: e0 2f mov r30, r16
bd8: f0 e0 ldi r31, 0x00 ; 0
bda: e7 5b subi r30, 0xB7 ; 183
bdc: fe 4f sbci r31, 0xFE ; 254
bde: 10 83 st Z, r17
be0: 0f 5f subi r16, 0xFF ; 255
time[i++] = temp;
be2: e0 2f mov r30, r16
be4: f0 e0 ldi r31, 0x00 ; 0
be6: e7 5b subi r30, 0xB7 ; 183
be8: fe 4f sbci r31, 0xFE ; 254
bea: 80 83 st Z, r24
bec: 0f 5f subi r16, 0xFF ; 255
bee: ec cf rjmp .-40 ; 0xbc8 <main+0x6f6>
}
}
time[i] = '\0'; /*字符串结束*/
bf0: e0 2f mov r30, r16
bf2: f0 e0 ldi r31, 0x00 ; 0
bf4: e7 5b subi r30, 0xB7 ; 183
bf6: fe 4f sbci r31, 0xFE ; 254
bf8: 10 82 st Z, r1
need_update = 1; /*可以更新数据*/
/*查询数据是否有效*/
temp = USART_getchar();
bfa: c3 d2 rcall .+1414 ; 0x1182 <USART_getchar>
bfc: 08 2f mov r16, r24
if(temp != ',')
bfe: 8c 32 cpi r24, 0x2C ; 44
c00: 09 f4 brne .+2 ; 0xc04 <main+0x732>
c02: 51 c0 rjmp .+162 ; 0xca6 <main+0x7d4>
if(temp == 'A')
{
gprmc_valid = 1;
}
else gprmc_valid =0;
temp = USART_getchar();
c04: be d2 rcall .+1404 ; 0x1182 <USART_getchar>
}
else gprmc_valid = 0;
/*如果有效则继续收集速度和方位角信息*/
if(gprmc_valid == 1)
c06: 01 34 cpi r16, 0x41 ; 65
c08: 09 f0 breq .+2 ; 0xc0c <main+0x73a>
c0a: 4d c0 rjmp .+154 ; 0xca6 <main+0x7d4>
{
while(USART_getchar() != ','); /*忽略纬度*/
c0c: ba d2 rcall .+1396 ; 0x1182 <USART_getchar>
c0e: 8c 97 sbiw r24, 0x2c ; 44
c10: e9 f7 brne .-6 ; 0xc0c <main+0x73a>
while(USART_getchar() != ','); /*忽略南北*/
c12: b7 d2 rcall .+1390 ; 0x1182 <USART_getchar>
c14: 8c 97 sbiw r24, 0x2c ; 44
c16: e9 f7 brne .-6 ; 0xc12 <main+0x740>
while(USART_getchar() != ','); /*忽略经度*/
c18: b4 d2 rcall .+1384 ; 0x1182 <USART_getchar>
c1a: 8c 97 sbiw r24, 0x2c ; 44
c1c: e9 f7 brne .-6 ; 0xc18 <main+0x746>
while(USART_getchar() != ','); /*忽略东西*/
c1e: b1 d2 rcall .+1378 ; 0x1182 <USART_getchar>
c20: 8c 97 sbiw r24, 0x2c ; 44
c22: e9 f7 brne .-6 ; 0xc1e <main+0x74c>
c24: 03 e0 ldi r16, 0x03 ; 3
i = 3;
while(1) /*获得速度信息*/
{
temp = USART_getchar();
c26: ad d2 rcall .+1370 ; 0x1182 <USART_getchar>
c28: e0 2f mov r30, r16
c2a: f0 e0 ldi r31, 0x00 ; 0
c2c: 90 2f mov r25, r16
c2e: 9f 5f subi r25, 0xFF ; 255
if(temp == ',')break;
c30: 8c 32 cpi r24, 0x2C ; 44
c32: 29 f0 breq .+10 ; 0xc3e <main+0x76c>
else speed[i++] = temp;
c34: ec 5d subi r30, 0xDC ; 220
c36: fe 4f sbci r31, 0xFE ; 254
c38: 80 83 st Z, r24
c3a: 09 2f mov r16, r25
c3c: f4 cf rjmp .-24 ; 0xc26 <main+0x754>
}
speed[i++] = ' ';
c3e: ec 5d subi r30, 0xDC ; 220
c40: fe 4f sbci r31, 0xFE ; 254
c42: 80 e2 ldi r24, 0x20 ; 32
c44: 80 83 st Z, r24
speed[i++] = 'M';
c46: e9 2f mov r30, r25
c48: f0 e0 ldi r31, 0x00 ; 0
c4a: ec 5d subi r30, 0xDC ; 220
c4c: fe 4f sbci r31, 0xFE ; 254
c4e: 8d e4 ldi r24, 0x4D ; 77
c50: 80 83 st Z, r24
c52: e9 2f mov r30, r25
c54: ef 5f subi r30, 0xFF ; 255
speed[i++] = 'P';
c56: ae 2f mov r26, r30
c58: b0 e0 ldi r27, 0x00 ; 0
c5a: ac 5d subi r26, 0xDC ; 220
c5c: be 4f sbci r27, 0xFE ; 254
c5e: 80 e5 ldi r24, 0x50 ; 80
c60: 8c 93 st X, r24
c62: ef 5f subi r30, 0xFF ; 255
speed[i++] = 'H';
c64: ae 2f mov r26, r30
c66: b0 e0 ldi r27, 0x00 ; 0
c68: ac 5d
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -