?? gps.asm
字號:
CLR RXFC201OKBIT ;清除標志位,準備接收下一幀F(xiàn)C201數(shù)據(jù)
CT0ST12: JNB OUTNETBIT,CT0ST13
LCALL REGISTERSYS
CT0ST13: JNB RXXDJOKBIT,CT0ST14 ;接收計價器數(shù)據(jù)
LCALL UNPAKXDJ
CLR RXXDJOKBIT
CT0ST14: JNB ALARMBIT, CT0ST20
LCALL TOALARM
;------------用于20MS定時---------
CT0ST20: DJNZ C20MS,DONE_DONE
MOV C20MS,#2
JNB HAVNUMKEYBIT,CT0ST21
LCALL DISPHVNUMKEY
CT0ST21: LCALL DEALKEY ;檢測按鍵
SETB KEYUPBIT ;設置按鍵松開標志
JNB STACHGBIT,CT0ST22
LCALL SAVESTASTU ;保存汽車狀態(tài)位
CLR STACHGBIT
CT0ST22: JB WARNBIT,CT0ST23
JB AFFIRMWARNBIT,CT0ST23
LCALL AFFIRMWARN ;確認報警
CT0ST23: JNB SAVEGPSBIT,CT0ST30
LCALL PAKGPSEPRM
LCALL TSAVEGPSFRAME
CLR SAVEGPSBIT
LJMP CT0ST30
;-----------用于100MS定時--------
DONE_DONEW:
LJMP DONE
CT0ST30: DJNZ C100MS,DONE_DONEW
MOV C100MS,#5
LCALL SCANCARSTA
LCALL CHECKPTTH
JNB INIMESSBIT,CT0ST31
LCALL INISYSTEM
CT0ST31: LCALL LCDDISP ;掃描刷新屏幕
JNB RXMESSOKBIT,CT0ST40
LCALL DEALMESS ;處理新到的短信
SETB SHOWSMESSBIT
LCALL DISPNEWMESS ;顯示短信
CLR RXMESSOKBIT
;-----------用于500MS定時--------
CT0ST40: DJNZ C500MS,DONE
MOV C500MS,#5
LCALL CHECKIC ;檢測IC狀態(tài)
LCALL IFINTSYS ;開機15秒內(nèi)可隨時啟動系統(tǒng)菜單
JNB READICBIT,CT0ST50
LCALL DEALCARD
CLR READICBIT
;-----------用于1S定時-----------
CT0ST50: DJNZ C1000MS,DONE
MOV C1000MS,#2
JNB TRACKBIT,CT0ST51 ;掃描跟蹤指令=1
LCALL RUNTRACKCOM ;執(zhí)行跟蹤指令
CT0ST51: JNB WARNBIT,CT0ST52
LCALL SENDWARMESS
CT0ST52: LCALL CHECKIFKEY ;45秒內(nèi)無鍵按下,退出菜單顯示狀態(tài)
JNB LISTENBIT,CT0ST53
LCALL RUNLISTENCAR ;執(zhí)行監(jiān)聽掃描
CT0ST53: JNB BKLEDBIT,CT0ST54
LCALL TOBKLED ;液晶背光控制
CT0ST54: JNB WELINPUTBIT,CT0ST55
LCALL DEALINPUT ;處理自動發(fā)送人數(shù)
CT0ST55: JNB OPENUMODEBIT,CT0ST56
LCALL DTIMEOPENUNIT ;定時打開單元,允許通話,到了定時時間,則自動關閉單元;
CT0ST56: JNB DISDLYBIT,CT0ST57
LCALL TODISPDLY ;自動切換顯示界面
CT0ST57: JNB INREQBIT,CT0ST58
JB INDIALBIT,CT0ST58
DJNZ TXCNT,CT0ST58
LCALL SENREQ
CT0ST58: JNB DEALYMUSICBIT,CT0ST60
LCALL U_DEALYNUS ;提示音延時
;-----------用于10S定時-----------
CT0ST60: DJNZ C10000MS,DONE
MOV C10000MS,#10
JNB CHECKPOSBIT,CT0ST61
LCALL CHECKPOSPRO ;檢查是否越界
CT0ST61: LCALL CHECKNET
DONE: LCALL WDOG
MOV TL0, #BASTL0
MOV TH0, #BASTH0 ;CT0 2MS
SETB TR0
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
;**************************************
;模塊功能:處理GPS數(shù)據(jù) *
;名 稱:DEALGPSDATA *
;入口參數(shù): *
;子程序號: *
;**************************************
DEALGPSDATA:
LCALL UNPAKGPS ;對接收到的GPS數(shù)據(jù)進行解析
LCALL CONVRGPS ;對接收到的GPS數(shù)據(jù)進行轉(zhuǎn)換
LCALL CONVTIME ;轉(zhuǎn)換為北京時間
CLR RXGPSOKBIT ;清除標志位,準備接收下一幀GPS數(shù)據(jù)
SETB REALGPSBIT ;需要刷新GPS數(shù)據(jù)
SETB DGPSOKBIT ;時間轉(zhuǎn)換OK標志
LCALL WDOG
RET
;**************************************
;模塊功能:重新注冊系統(tǒng) *
;名 稱:INISYSTEM *
;入口參數(shù): *
;子程序號: *
;**************************************
INISYSTEM:
LCALL INIMESSMENU ;初始化短信顯示區(qū)
LCALL INIPHRMENU ;初始化固定短語顯示區(qū)
LCALL INICALLMENU ;初始化電話號碼顯示區(qū)
LCALL INITEMPCALL
LCALL CLRCALLDATA
RET
;**************************************
;模塊功能:重新注冊系統(tǒng) *
;名 稱:REGISTERSYS *
;入口參數(shù): *
;子程序號: *
;**************************************
REGISTERSYS:
CLR OUTNETBIT
MOV DPTR,#TAXISTATUSBC
MOVX A,@DPTR
MOV DPTR,#TAXISTATUS
MOVX @DPTR,A
MOV FC201COM,#'L'
MOV MAIN_ID0,#0
MOV MAIN_ID1,#0
MOV DATA_TYPE,#1
LCALL PAKGPS
LCALL TXFC201DATA
RET
;**************************************
;模塊功能:在網(wǎng)檢查 *
;名 稱:CHECKNET *
;入口參數(shù): *
;子程序號: *
;**************************************
CHECKNET:
DJNZ INNETCNT,CHECKNETE
MOV INNETCNT,#36
CLR RADIOMODBIT
SETB OUTNETBIT ;設置系統(tǒng)已經(jīng)脫網(wǎng)
SETB REFRESHBIT
CHECKNETE:
RET
;**************************************
;模塊功能:越界檢查 *
;名 稱:CHECKPOSPRO *
;入口參數(shù): *
;子程序號: *
;**************************************
CHECKPOSPRO:
MOV DPTR,#OUTRANGECNT
MOVX A,@DPTR
DEC A
MOVX @DPTR,A
JNZ CHECKPOSPROE
MOV A,#18
MOVX @DPTR,A
;-------比較經(jīng)度1
CHECKPOSIMI:
LCALL WDOG
MOV DPTR,#POSCHECKBUFF0
INC AUXR1
MOV DPTR,#DGPSLON
INC AUXR1
MOV TEMP2,#4
LCALL COMPAREBCD
JC CHECKPOSPRO1
;-------比較緯度1
LCALL WDOG
MOV DPTR,#(POSCHECKBUFF0+4)
INC AUXR1
MOV DPTR,#DGPSLAT
INC AUXR1
MOV TEMP2,#4
LCALL COMPAREBCD
JC CHECKPOSPRO1
LCALL WDOG
;-------比較經(jīng)度2
MOV DPTR,#(POSCHECKBUFF0+8)
INC AUXR1
MOV DPTR,#DGPSLON
INC AUXR1
MOV TEMP2,#4
LCALL COMPAREBCD
JNC CHECKPOSPRO1
LCALL WDOG
;-------比較緯度2
MOV DPTR,#(POSCHECKBUFF0+12)
INC AUXR1
MOV DPTR,#DGPSLAT
INC AUXR1
MOV TEMP2,#4
LCALL COMPAREBCD
JNC CHECKPOSPRO1
MOV DPTR,#STATUSVALUE ;送本地二級狀態(tài)
MOV A,#7FH
MOVX @DPTR,A
LCALL WDOG
CLR OVERRANGEBIT
SETB REFRESHBIT
CHECKPOSPROE:
RET
CHECKPOSPRO1:
LCALL WDOG
MOV DPTR,#STATUSVALUE ;送本地二級狀態(tài)
MOV A,#8CH
MOVX @DPTR,A
MOV DPTR,#TAXISTATUSBC
MOVX A,@DPTR
MOV DPTR,#TAXISTATUS
MOVX @DPTR,A
MOV FC201COM,#'H'
MOV MAIN_ID0,#0
MOV MAIN_ID1,#0
MOV DATA_TYPE,#1
LCALL PAKGPS
LCALL TXFC201DATA
SETB ALARMBIT
MOV BUZZTYPE,#66H
SETB OVERRANGEBIT
SETB REFRESHBIT
RET
;**************************************
;模塊功能:觸發(fā)掃描鍵盤 *
;名 稱:SCANKEY *
;入口參數(shù): *
;子程序號: *
;**************************************
SCANKEY: MOV CCON,#0
MOV CH,#0
MOV CL,#0
MOV CCAPM3,#11H ;負跳變觸發(fā)中斷
SETB CR
RET
;**************************************
;模塊功能:處理獲得鍵值 *
;名 稱:DEALKEY *
;入口參數(shù): *
;子程序號: *
;**************************************
DEALKEYEX:LJMP DEALKEYE
DEALKEY:
JNB KEYDNBIT,DEALKEYEX ;鍵未松開,不去掃描鍵盤
JNB KEYUPBIT,DEALKEYEX
;--------------------------------;取鍵值
MOV TXBUF,#0AAH
MOV TXBUFAD,#02H
LCALL TXBYTE
MOV TXBUF,SCANVHH
MOV TXBUFAD,#02H
LCALL TXBYTE
MOV TXBUF,SCANVHL
MOV TXBUFAD,#02H
LCALL TXBYTE
MOV TXBUF,SCANVLH
MOV TXBUFAD,#02H
LCALL TXBYTE
MOV TXBUF,SCANVLL
MOV TXBUFAD,#02H
LCALL TXBYTE
;-------------------------------
MOV R0,#4
MOV POSROW,#0 ;行的位置
CLR LESSBIT
MOV DPTR,#KEYVHVALUE
KEYROW0: MOV A,#0 ;判斷ROW的位置,即高電平值
MOVC A,@A+DPTR
MOV KEYVH,A
INC DPTR
MOV A,#0
MOVC A,@A+DPTR
MOV KEYVL,A
INC DPTR
MOV B,SCANVHH
MOV A,SCANVHL
LCALL SUBBDBYTE
JB LESSBIT,DEALKEY01 ;如果小于 VHX,則認為無效鍵
INC POSROW
DJNZ R0,KEYROW0
LJMP DEALKEY3
DEALKEY01:
MOV POSCOL,#0 ;列的位置
MOV R0,#4
MOV A,POSROW
MOV B,A
XRL A,#0
JZ CHKKEYROW0
MOV A,B
XRL A,#1
JZ CHKKEYROW1
MOV A,B
XRL A,#2
JZ CHKKEYROW2
MOV A,B
XRL A,#3
JZ CHKKEYROW3
LJMP DEALKEY3
CHKKEYROW0:
MOV DPTR,#KEYVHVALUE0
LJMP KEYCOL0
CHKKEYROW1:
MOV DPTR,#KEYVHVALUE1
LJMP KEYCOL0
CHKKEYROW2:
MOV DPTR,#KEYVHVALUE2
LJMP KEYCOL0
CHKKEYROW3:
MOV DPTR,#KEYVHVALUE3
KEYCOL0:
MOV A,#0 ;判斷COL的位置,即低電平值
MOVC A,@A+DPTR
MOV KEYVH,A
INC DPTR
MOV A,#0
MOVC A,@A+DPTR
MOV KEYVL,A
INC DPTR
MOV B,SCANVLH
MOV A,SCANVLL
LCALL SUBBDBYTE
JNB LESSBIT,DEALKEY4
LJMP DEALKEY2
DEALKEY4: INC POSCOL
DJNZ R0,KEYCOL0
LJMP DEALKEY3
DEALKEY2:
MOV A,POSROW
MOV B,#4
MUL AB
ADD A,POSCOL
MOV DPTR,#KEYNAME
MOVC A,@A+DPTR
MOV KEYOKVALUE,A
;--------------------
; MOV TXBUF,A
; MOV TXBUFAD,#02H
; LCALL TXBYTE
;--------------------
SETB ALARMBIT ;響鈴
SETB BKLEDBIT ;打開背光
MOV BUZZTYPE,#11H
MOV BKLEDCNT,#10
MOV CNTNOKEYPRESS,#45 ;有鍵按下,對此值進行復位
SETB KEYOK
DEALKEY3: CLR SCANBIT ;檢測到有鍵按下
CLR INSCANBIT ;正在掃描
CLR SCANVHBIT ;掃描高電平OK
CLR KEYDNBIT
CLR KEYUPBIT
CLR CR
DEALKEYE: RET
;*******************************************
;名稱:SUBBDBYTE *
;功能:比較雙字節(jié)的大小 *
; 若B|A<KEYVH|KEYVL:LESSBIT=1 *
;占用寄存器: A,B *
;入 口 : KEYVL,KEYVH,B高位,A低位 *
;出 口 : *
;子程序編號: *
;*******************************************
;說明:A|B>KEYVH|KEYVL:LESSBIT=0,沒有找到
;說明:A|B<KEYVH|KEYVL:LESSBIT=1,找到鍵值
SUBBDBYTE:
MOV MUMEBYTE,A
MOV A,B ;取高位
SUBB A,KEYVH ;A> CY=0
JZ SUBBN0 ;高位相等
JNC SUBBNE
SETB LESSBIT ;LESSBIT=1;
LJMP SUBBEXIT
SUBBN0:
CLR C
MOV A,MUMEBYTE
SUBB A,KEYVL
JNC SUBBNE
SETB LESSBIT
LJMP SUBBEXIT
SUBBNE:
CLR LESSBIT
SUBBEXIT:
RET
;------------------------------------------------------------------------
KEYNAME:DB 0DH,0CH,0BH,0AH,07H,06H,05H,0EH,02H,01H,09H,08H,0FH,00H,04H,03H
; 7 6 5 2 1 9 8 0 4 3
;----------------------------------------------[2003-3-24采用精密電容]
KEYVHVALUE :DB 09H,00H,0CH,00H,10H,00H,20H,00H
KEYVHVALUE0:DB 0CH,00H,10H,00H,14H,00H,20H,00H
KEYVHVALUE1:DB 0CH,00H,10H,00H,14H,00H,20H,00H
KEYVHVALUE2:DB 0CH,00H,10H,00H,14H,80H,20H,00H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -