📄 gps.lst
字号:
0161 93 228 MOVC A,@A+DPTR
0162 31B4 229 CALL WRITE2
0164 08 230 INC R0
231
0165 E6 232 MOV A,@R0 ; 显示纬度的个位
0166 93 233 MOVC A,@A+DPTR
0167 31B4 234 CALL WRITE2
0169 08 235 INC R0
236
016A 742E 237 MOV A,#2EH ; 显示小数点 .
016C 31B4 238 CALL WRITE2
016E 08 239 INC R0
240
016F E6 241 MOV A,@R0 ; 显示纬度的十分位
0170 93 242 MOVC A,@A+DPTR
0171 31B4 243 CALL WRITE2
244
0173 22 245 RET
246
0174 247 DISPLAY_SEARCH:
248 ;------------------
249 ;- 显示搜索状态
250 ;------------------
0174 3186 251 CALL LCD_INIT
0176 759080 252 MOV P1,#80H ; 显示位置
0179 319E 253 ACALL ENABLE
017B 759001 254 MOV P1,#01H
017E 319E 255 CALL ENABLE
0180 900231 256 MOV DPTR,#TABLE0
A51 MACRO ASSEMBLER GPS 06/23/2007 11:02:10 PAGE 5
0183 31A9 257 CALL WRITE1
0185 22 258 RET
259
0186 260 LCD_INIT:
0186 75B0FF 261 mov p3,#0ffh
0189 759001 262 MOV P1,#01H ; 清除屏幕
018C 319E 263 ACALL ENABLE
018E 759038 264 MOV P1,#38H ; 8位点阵
0191 319E 265 ACALL ENABLE
0193 75900F 266 MOV P1,#0FH ; 开显示
0196 319E 267 ACALL ENABLE
0198 759006 268 MOV P1,#06H ; 移动光标
019B 319E 269 ACALL ENABLE
270
019D 22 271 RET
272
019E 273 ENABLE: ;送命令
019E C2B5 274 CLR RS
01A0 C2B6 275 CLR RW
01A2 C2B7 276 CLR E
01A4 31C1 277 ACALL DELAY
01A6 D2B7 278 SETB E
01A8 22 279 RET
280
01A9 281 WRITE1: ; 送字符串
01A9 7900 282 MOV R1,#00h
01AB 283 A1:
01AB E9 284 MOV A,R1
01AC 93 285 MOVC A,@A+DPTR
01AD 31B4 286 CALL WRITE2
01AF 09 287 INC R1
01B0 B400F8 288 CJNE A,#00h,A1 ; 以00H做字符串结束标志
01B3 22 289 RET
290
01B4 291 WRITE2: ; 送单个字符
01B4 F590 292 MOV P1,A
01B6 D2B5 293 SETB RS
01B8 C2B6 294 CLR RW
01BA C2B7 295 CLR E
01BC 31C1 296 CALL delay
01BE D2B7 297 SETB E
01C0 22 298 RET
299
01C1 300 delay: ; 延时子程序
01C1 7FFF 301 mov r7,#255
01C3 7EFF 302 d1:mov r6,#255
01C5 DEFE 303 d2:djnz r6,d2
01C7 DFFA 304 djnz r7,d1
01C9 22 305 ret
306
01CA 307 delay1:
01CA 7FFF 308 mov r7,#255
01CC 309 delay2:
01CC 7EFF 310 mov r6,#255
01CE DEFE 311 djnz r6,$
01D0 DFFA 312 djnz r7,delay2
01D2 22 313 ret
314
315
01D3 316 Serial_RX_ISR:
317 ;-----------------------------------
318 ; 串口接收中断服务程序,需要在程序开始时在2FH处写入缓存区首地址
319 ;-----------------------------------
01D3 C0D0 320 PUSH PSW ; 程序状态字压栈
01D5 C001 321 PUSH 1 ; R1压栈
322
A51 MACRO ASSEMBLER GPS 06/23/2007 11:02:10 PAGE 6
01D7 BC0006 323 CJNE R4,#0,ISR_1 ; 判断第0字节是否为0FFH
01DA E599 324 MOV A,SBUF
01DC B4FF49 325 CJNE A,#0FFH,ISR_OUT
01DF 0C 326 INC R4
01E0 327 ISR_1:
01E0 BC0106 328 CJNE R4,#1,ISR_2 ; 判断第1字节是否为81H
01E3 E599 329 MOV A,SBUF
01E5 B48140 330 CJNE A,#81H,ISR_OUT
01E8 0C 331 INC R4
01E9 332 ISR_2:
01E9 BC0206 333 CJNE R4,#2,ISR_3 ; 判断第2字节是否为0E8H
01EC E599 334 MOV A,SBUF
01EE B4E837 335 CJNE A,#0E8H,ISR_OUT
01F1 0C 336 INC R4
01F2 337 ISR_3:
01F2 BC0306 338 CJNE R4,#3,ISR_4 ; 判断第3字节是否为03H
01F5 E599 339 MOV A,SBUF
01F7 B4032E 340 CJNE A,#03H,ISR_OUT
01FA 0C 341 INC R4
01FB 342 ISR_4:
01FB BC0406 343 CJNE R4,#4,ISR_22 ; 判断第4字节是否为31H
01FE E599 344 MOV A,SBUF
0200 B43125 345 CJNE A,#31H,ISR_OUT
0203 0C 346 INC R4
0204 347 ISR_22:
0204 BC160A 348 CJNE R4,#22,ISR_NEXT ; 判断搜索到卫星的数量是否大于4
0207 E599 349 MOV A,SBUF
0209 9404 350 SUBB A,#4
020B 5002 351 JNC ISR_OK
020D D200 352 SETB 20H.0 ; 20h.0为1时表示GPS搜索卫星数小于4,GPS无法准确定位
020F 353 ISR_OK:
020F C200 354 CLR 20H.0
0211 355 ISR_NEXT:
0211 EC 356 MOV A,R4
0212 9435 357 SUBB A,#53 ; 将经度和纬度数据存入内存空间53-60
0214 400C 358 JC ISR_OTHER
0216 EC 359 MOV A,R4
0217 943D 360 SUBB A,#61
0219 5007 361 JNC ISR_OTHER
021B EC 362 MOV A,R4
021C F9 363 MOV R1,A
021D A799 364 MOV @R1,SBUF
021F 0C 365 INC R4
0220 800A 366 JMP ISR_OUT2
0222 367 ISR_OTHER:
0222 0C 368 INC R4
0223 BC3702 369 CJNE R4,#55,ISR_OUT ; 判断是否到一帧结束
0226 8004 370 JMP ISR_OUT2
0228 371 ISR_OUT:
0228 C298 372 CLR RI ; 软件清除串口接收中断标志
022A 7C00 373 MOV R4,#0 ; 将R4清零
022C 374 ISR_OUT2:
022C D001 375 POP 1 ; R1 出栈
022E D0D0 376 POP PSW ; 程序状态字出栈
0230 32 377 RETI
378
379 ;--S,E,A,R,C,H,I,N,G
0231 53454152 380 TABLE0: DB 53H,45H,41H,52H,43H,48H,49H,4EH,47H,00H
0235 4348494E
0239 4700
381 ;-- 0,1,2,3,4,5,6,7,8,9
023B 30313233 382 TABLE1: DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h
023F 34353637
0243 3839
383 ;-- N,S,E,W
0245 4E534557 384 TABLE2: DB 4EH,53H,45H,57H
A51 MACRO ASSEMBLER GPS 06/23/2007 11:02:10 PAGE 7
385 END
A51 MACRO ASSEMBLER GPS 06/23/2007 11:02:10 PAGE 8
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
A1 . . . . . . . . C ADDR 01ABH A
B. . . . . . . . . D ADDR 00F0H A
CLR_CYC. . . . . . C ADDR 002FH A
COUNT_EW . . . . . C ADDR 00CBH A
COUNT_NS . . . . . C ADDR 0070H A
D1 . . . . . . . . C ADDR 01C3H A
D2 . . . . . . . . C ADDR 01C5H A
DELAY. . . . . . . C ADDR 01C1H A
DELAY1 . . . . . . C ADDR 01CAH A
DELAY2 . . . . . . C ADDR 01CCH A
DISPLAY_EW . . . . C ADDR 014DH A
DISPLAY_NS . . . . C ADDR 0124H A
DISPLAY_SEARCH . . C ADDR 0174H A
E. . . . . . . . . B ADDR 00B0H.7 A
EA . . . . . . . . B ADDR 00A8H.7 A
EAST . . . . . . . C ADDR 00DDH A
ENABLE . . . . . . C ADDR 019EH A
ES . . . . . . . . B ADDR 00A8H.4 A
INIT . . . . . . . C ADDR 0057H A
ISR_1. . . . . . . C ADDR 01E0H A
ISR_2. . . . . . . C ADDR 01E9H A
ISR_22 . . . . . . C ADDR 0204H A
ISR_3. . . . . . . C ADDR 01F2H A
ISR_4. . . . . . . C ADDR 01FBH A
ISR_NEXT . . . . . C ADDR 0211H A
ISR_OK . . . . . . C ADDR 020FH A
ISR_OTHER. . . . . C ADDR 0222H A
ISR_OUT. . . . . . C ADDR 0228H A
ISR_OUT2 . . . . . C ADDR 022CH A
LCD_INIT . . . . . C ADDR 0186H A
MAIN . . . . . . . C ADDR 003AH A
NEXT . . . . . . . C ADDR 008EH A
NEXT1. . . . . . . C ADDR 00ADH A
NEXT2. . . . . . . C ADDR 00E7H A
NEXT3. . . . . . . C ADDR 0106H A
P1 . . . . . . . . D ADDR 0090H A
P3 . . . . . . . . D ADDR 00B0H A
PCON . . . . . . . D ADDR 0087H A
PS . . . . . . . . B ADDR 00B8H.4 A
PSW. . . . . . . . D ADDR 00D0H A
RI . . . . . . . . B ADDR 0098H.0 A
RS . . . . . . . . B ADDR 00B0H.5 A
RW . . . . . . . . B ADDR 00B0H.6 A
S. . . . . . . . . C ADDR 0084H A
SBUF . . . . . . . D ADDR 0099H A
SCON . . . . . . . D ADDR 0098H A
SERIAL_RX_ISR. . . C ADDR 01D3H A
SP . . . . . . . . D ADDR 0081H A
START. . . . . . . C ADDR 0025H A
TABLE0 . . . . . . C ADDR 0231H A
TABLE1 . . . . . . C ADDR 023BH A
TABLE2 . . . . . . C ADDR 0245H A
TCON . . . . . . . D ADDR 0088H A
TH1. . . . . . . . D ADDR 008DH A
TIMER1_INIT. . . . C ADDR 0066H A
TMOD . . . . . . . D ADDR 0089H A
WAIT . . . . . . . C ADDR 004FH A
WRITE1 . . . . . . C ADDR 01A9H A
WRITE2 . . . . . . C ADDR 01B4H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -