📄 gps.asm
字号:
KEYVHVALUE3:DB 0CH,00H,10H,00H,14H,80H,20H,00H
;----------------------------------------------[2003-3-24以前]
;KEYVHVALUE :DB 0AH,00H,0EH,00H,11H,00H,20H,00H
;KEYVHVALUE0:DB 0DH,00H,12H,00H,16H,00H,22H,80H
;KEYVHVALUE1:DB 0DH,00H,12H,00H,16H,00H,22H,80H
;KEYVHVALUE2:DB 0DH,00H,12H,00H,16H,80H,22H,80H
;KEYVHVALUE3:DB 0DH,00H,12H,00H,16H,80H,22H,80H
;----------------------------------------------[2003-1-23]
;KEYVHVALUE :DB 0BH,0DH,0EH,94H,12H,0CFH,17H,00H
;KEYVHVALUE0:DB 0BH,0B2H,0FH,0E5H,13H,60H,17H,80H
;KEYVHVALUE1:DB 0BH,7FH,0FH,36H,13H,74H,17H,80H
;KEYVHVALUE2:DB 0BH,0C6H,0FH,97H,13H,8BH,17H,80H
;KEYVHVALUE3:DB 0BH,7FH,10H,06H,13H,6FH,17H,80H
;*****************************************************
;功能说明:解析GPS数据 *
;函数名 :UNPAKGPS *
;所用的寄存器:R0,R1,R2,R3,R4 *
;入口参数:PORT1_RXBUFF,GPS_START *
;出口参数:GPSLAT,GPSLON,GPSSPD,GPSHGH,GPSDEG,GPSTIME*
;子程序编号: *
;*****************************************************
UNPAKGPSEX:LJMP UNPAKGPSE
UNPAKGPS:
MOV GPS_START,#00H
MOV DPTR,#PORT1_RXBUFF
UNPAKGPS1: ;判断帧头
LCALL WDOG
MOV A,GPS_START
SUBB A,#180
JNC UNPAKGPSEX
MOVX A,@DPTR
XRL A,#'$' ;判断$
INC DPTR
INC GPS_START
JNZ UNPAKGPS1
MOVX A,@DPTR
XRL A,#'G' ;判断G
INC DPTR
INC GPS_START
JNZ UNPAKGPS1
MOVX A,@DPTR
XRL A,#'P' ;判断P
INC DPTR
INC GPS_START
JNZ UNPAKGPS1
MOVX A,@DPTR
XRL A,#'R' ;判断R
INC DPTR
INC GPS_START
JNZ UNPAKGPS1
MOVX A,@DPTR
XRL A,#'M' ;判断M
INC DPTR
INC GPS_START
JNZ UNPAKGPS1
MOVX A,@DPTR
XRL A,#'C' ;判断C
INC DPTR
INC GPS_START
JNZ UNPAKGPS1
INC DPTR
INC GPS_START ;GPS_START=7
UNPAKGPS2:;-----------------------取数据
;$GPRMC[5],[6]010622[12],A,[15]2307.5097[24],N,[27]11322.0545[37],E,[40]000.0[45],000.0[51],101002[58],00000000,(0DH+0AH)
;解析出时间数据[HHMMSS]
MOV R4,#6
MOV R0,DPL
MOV R1,DPH
MOV DPTR,#(GPSTIME+6)
MOV R2,DPL
MOV R3,DPH
LCALL RAMTORAM
;---------------------------------取出日期 DDMMYY
MOV R4,#6
MOV A,GPS_START
CLR C
ADD A,#46
MOV DPTR,#PORT1_RXBUFF
ADD A,DPL
MOV R0,A
MOV A,#0
ADDC A,DPH
MOV R1,A
MOV DPTR,#GPSTIME
MOV R2,DPL
MOV R3,DPH
LCALL RAMTORAM
LCALL WDOG
;---------------------------------取出速度
MOV R4,#3
MOV A,GPS_START
CLR C
ADD A,#34
MOV DPTR,#PORT1_RXBUFF
ADD A,DPL
MOV R0,A
MOV A,#0
ADDC A,DPH
MOV R1,A
MOV DPTR,#GPSSPD
MOV R2,DPL
MOV R3,DPH
LCALL RAMTORAM
MOV A,GPS_START
CLR C
ADD A,#38
MOV DPTR,#PORT1_RXBUFF
ADD A,DPL
MOV DPL,A
MOV A,#0
ADDC A,DPH
MOV DPH,A
MOVX A,@DPTR
MOV DPTR,#(GPSSPD+3)
MOVX @DPTR,A
;---------------------------------取出方位角
MOV R4,#3
CLR C
MOV A,GPS_START
ADD A,#40
MOV DPTR,#PORT1_RXBUFF
ADD A,DPL
MOV R0,A
MOV A,#0
ADDC A,DPH
MOV R1,A
MOV DPTR,#GPSDEG
MOV R2,DPL
MOV R3,DPH
LCALL RAMTORAM
MOV A,GPS_START
CLR C
ADD A,#44
MOV DPTR,#PORT1_RXBUFF
ADD A,DPL
MOV DPL,A
MOV A,#0
ADDC A,DPH
MOV DPH,A
MOVX A,@DPTR
MOV DPTR,#(GPSDEG+3)
MOVX @DPTR,A
LCALL WDOG
;---------------------------------取出纬度
MOV R4,#4
MOV A,GPS_START
CLR C
ADD A,#9
MOV DPTR,#PORT1_RXBUFF
ADD A,DPL
MOV R0,A
MOV A,#0
ADDC A,DPH
MOV R1,A
MOV DPTR,#GPSLAT
MOV R2,DPL
MOV R3,DPH
LCALL RAMTORAM
MOV R4,#4
MOV A,GPS_START
CLR C
ADD A,#14
MOV DPTR,#PORT1_RXBUFF
ADD A,DPL
MOV R0,A
MOV A,#0
ADDC A,DPH
MOV R1,A
MOV DPTR,#(GPSLAT+4)
MOV R2,DPL
MOV R3,DPH
LCALL RAMTORAM
LCALL WDOG
;----------------------------------取出经度
MOV R4,#4
MOV A,GPS_START
CLR C
ADD A,#22
MOV DPTR,#PORT1_RXBUFF
ADD A,DPL
MOV R0,A
MOV A,#0
ADDC A,DPH
MOV R1,A
MOV DPTR,#GPSLON
MOV R2,DPL
MOV R3,DPH
LCALL RAMTORAM
MOV R4,#4
MOV A,GPS_START
CLR C
ADD A,#27
MOV DPTR,#PORT1_RXBUFF
ADD A,DPL
MOV R0,A
MOV A,#0
ADDC A,DPH
MOV R1,A
MOV DPTR,#(GPSLON+4)
MOV R2,DPL
MOV R3,DPH
LCALL RAMTORAM
LCALL WDOG
;----------------------------------取出海拔高度
MOV R4,#8
MOV A,GPS_START
CLR C
ADD A,#53
MOV DPTR,#PORT1_RXBUFF
ADD A,DPL
MOV R0,A
MOV A,#0
ADDC A,DPH
MOV R1,A
MOV DPTR,#GPSHGH
MOV R2,DPL
MOV R3,DPH
LCALL RAMTORAM
UNPAKGPSE:
RET
;*************************************************************
;功能说明:将GPS数据合并为BCD码 *
;函数名 :CONVRGPS *
;所用寄存器:R0,R1,R2,R3,R4,R5,R6,DPTR *
;入口参数: GPSLAT,GPSLON,GPSSPD,GPSHGH,GPSTIME,GPSDEG *
;出口参数: DGPSLAT,DGPSLON,GPSSPD,DGPSHGH,DGPSTIME,DGPSDEG *
;子程序编号: *
;*************************************************************
CONVRGPSEXIT:RET
CONVRGPS:
MOV DPTR,#GPSLON ;扫描GPS数据中有没有非法字符
MOV R4,#24
SCANGPSDATA:
MOVX A,@DPTR
CLR C
SUBB A,#30H
JC CONVRGPSEXIT ;C=1;JUMP
MOVX A,@DPTR
CLR C
SUBB A,#40H
JNC CONVRGPSEXIT ;C=0;JUMP
INC DPTR
DJNZ R4,SCANGPSDATA
;------------------------------------转换纬度
MOV DPTR,#DGPSLAT
MOV R3,DPH
MOV R2,DPL
MOV DPTR,#GPSLAT
MOV R1,DPH
MOV R0,DPL
MOV R4,#04H
LCALL WDOG
CONVEGPS0:
MOV DPH,R1
MOV DPL,R0
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOV R1,DPH
MOV R0,DPL
LCALL DASCTOBCD
MOV A,R5
MOV DPH,R3
MOV DPL,R2
MOVX @DPTR,A
INC DPTR
MOV R3,DPH
MOV R2,DPL
DJNZ R4,CONVEGPS0
;------------------------------------转换经度
MOV DPTR,#DGPSLON
MOV R3,DPH
MOV R2,DPL
MOV DPTR,#GPSLON
MOV R1,DPH
MOV R0,DPL
MOV R4,#04H
CONVEGPS1:
LCALL WDOG
MOV DPH,R1
MOV DPL,R0
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOV R1,DPH
MOV R0,DPL
LCALL DASCTOBCD
MOV A,R5
MOV DPH,R3
MOV DPL,R2
MOVX @DPTR,A
INC DPTR
MOV R3,DPH
MOV R2,DPL
DJNZ R4,CONVEGPS1
;------------------------------------转换时间
MOV DPTR,#DGPSTIME
MOV R3,DPH
MOV R2,DPL
MOV DPTR,#GPSTIME
MOV R1,DPH
MOV R0,DPL
MOV R4,#06H
CONVEGPS2:
MOV DPH,R1
MOV DPL,R0
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOV R1,DPH
MOV R0,DPL
LCALL DASCTOBCD
MOV A,R5
MOV DPH,R3
MOV DPL,R2
MOVX @DPTR,A
INC DPTR
MOV R3,DPH
MOV R2,DPL
DJNZ R4,CONVEGPS2
LCALL WDOG
;------------------------------------转换速度
MOV DPTR,#DGPSSPD
MOV R3,DPH
MOV R2,DPL
MOV DPTR,#GPSSPD
MOV R1,DPH
MOV R0,DPL
MOV R4,#02H
CONVEGPS3:
MOV DPH,R1
MOV DPL,R0
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOV R1,DPH
MOV R0,DPL
LCALL DASCTOBCD
MOV A,R5
MOV DPH,R3
MOV DPL,R2
MOVX @DPTR,A
INC DPTR
MOV R3,DPH
MOV R2,DPL
DJNZ R4,CONVEGPS3
;------------------------------------转换方位角
LCALL WDOG
MOV DPTR,#DGPSDEG
MOV R3,DPH
MOV R2,DPL
MOV DPTR,#GPSDEG
MOV R1,DPH
MOV R0,DPL
MOV R4,#02H
CONVEGPS4:
MOV DPH,R1
MOV DPL,R0
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOV R1,DPH
MOV R0,DPL
LCALL DASCTOBCD
MOV A,R5
MOV DPH,R3
MOV DPL,R2
MOVX @DPTR,A
INC DPTR
MOV R3,DPH
MOV R2,DPL
DJNZ R4,CONVEGPS4
;----------------------------------转换高度
LCALL WDOG
MOV DPTR,#DGPSHGH
MOV R3,DPH
MOV R2,DPL
MOV DPTR,#GPSHGH
MOV R1,DPH
MOV R0,DPL
MOV R4,#02H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -