?? gps.asm
字號:
C100MS EQU 57H ;用于100MS 定時
C500MS EQU 58H ;用于500MS定時
C1000MS EQU 59H ;用于1000MS,1S 定時
TEMPCALLNUM EQU 5AH ;已撥電話條數(shù)
TEMPCALLPN EQU 5BH ;已撥電話指針
CNTNOKEYPRESS EQU 5CH ;在無鍵按下30秒鐘后,檢查顯示狀態(tài),進入GPS和徽標狀態(tài)
CALLLEN EQU 5DH ;電話號碼長度
BKLEDCNT EQU 5EH ;液晶背光秒計數(shù)器
BUZZTYPE EQU 5FH ;有按鍵報響計數(shù)器
INTSYSCOUNT EQU 60H ;系統(tǒng)設(shè)置計數(shù)器
DEALYCNT EQU 61H ;延時
KEYOKVALUE EQU 62H ;按鍵有效鍵值
CNTDISDLY EQU 63H ;顯示時狀態(tài)切換延時秒計數(shù)器
PROGSTAT EQU 64H ;顯示狀態(tài)(菜單或輸入)
LISTENTIME EQU 65H ;監(jiān)聽的時間存儲區(qū)
HZK3ADR EQU 66H
DISPBYTE EQU 67H
TXCNT EQU 68H ;發(fā)送延時
DISPTEM EQU 69H
TEMP1 EQU 6AH
TEMP2 EQU 6BH
TXBUF EQU 6CH ;串口數(shù)據(jù)發(fā)送緩沖區(qū)
C10000MS EQU 6DH ;用于10S定時
TXBUFAD EQU 6EH ;串口地址緩沖區(qū)
SCANVHH EQU 6FH ;高電平捕捉高位
SCANVHL EQU 70H ;高電平捕捉低位
SCANVLH EQU 71H ;低電平捕捉高位
SCANVLL EQU 72H ;低電平捕捉低位
KEYVH EQU 73H
KEYVL EQU 74H
POSROW EQU 75H ;保存行值
POSCOL EQU 76H ;保存列值
SLA EQU 77H ;EPPROM的硬件地址
MUMEBYTE EQU 78H ;菜單計數(shù)
MESSLEN EQU 79H ;短信長度
S0TEMP EQU 7AH ;串口運行變量
RDEPNUM EQU 7BH ;報警按鍵計數(shù)
WARNTIME EQU 7CH ;報警響應(yīng)間隔時間
WARNTXNUM EQU 7EH ;報警呼叫計次
Music_Times EQU 7FH ;提示音的長度
;CAT24C256硬件地址--U6的地址: 讀(A3H)寫(A2H)U7的地址:
;讀(A1H)寫(A0H) ;IC的地址: 讀(A5H)寫(A4H)
;-------------------------------------------------
; 高128字節(jié)分配 #80H-FFH
;-------------------------------------------------
;80~AFH 為加密數(shù)據(jù)時的緩沖區(qū)
;B0~BF 為固定信息指針存放區(qū)
CALLNUM EQU 0B0H
CALLPN EQU 0B1H
PHRNUM EQU 0B2H
PHRPN EQU 0B3H
;0C0H 開始的16個字節(jié)為ASC電話號碼處理區(qū)
;0D0H 開始的16個字節(jié)為BCD碼電話處理區(qū)
;-------------------------------------------------
; IC 24C64地址 #0000H-1FFFH (共8K的地址空間)
;硬件地址:A0[寫]、A1[讀]:SLA=EEPRADR1=A0
;-------------------------------------------------
;司機身份IC卡存儲分布
CARDID EQU 0000H ;保存IC卡ID的開始地址
ICDRIVERIDADDR EQU 0001H ;目前共4個字節(jié)
ICFENCEADDR EQU 0348H ;共17個字節(jié)
ICGPSDATAPN EQU 035CH ;GPS條數(shù)和指針的起始地址
ICSAVEGPS EQU 0360H ;運行信息存儲的起始地址
;-------------------------------------------------
; EEPROM 24C64地址 #0000H-1FFFH (共8K的地址空間)
;硬件地址:A2[寫]、A3[讀]:SLA=EEPRADR2=A2
;-------------------------------------------------
STABYTE EQU 0080H ;保存汽車狀態(tài)(共3個字節(jié))(報警,鎖車,關(guān)閉單元|打開單元,槍斃|復(fù)活,空車|重車)
FENCEADDR EQU 0083H ;電子圍欄數(shù)據(jù)存放地址
MESSADDR EQU 0100H ;短消息存放地址(0100H~1501H) (40*128+2)=1402H
GMESSADDR EQU 1520H ;固定信息存放地址(1520H~168AH) (18*20+2)=16AH
CALLADDR EQU 16A0H ;電話號碼(16A0H~180AH) (18*20+2)=16AH
TEMPCALLADDR1 EQU 1820H ;已撥電話(1820H~198AH) (18*10+2)=16AH
TEMPCALLADDR2 EQU 19A0H ;已撥電話時間(19A0~1B0AH) (18*10+2)=16AH
;-------------------------------------------------
; EEPROM 24C64地址 #0000H-1FFFH (共8K的地址空間)
;硬件地址:A6[寫]、A7[讀]:SLA=EEPRADR3=A6
;-------------------------------------------------
EPGPSFRAME_PN EQU 0000H ;在EPPROM中GPS數(shù)據(jù)的長度和指針
GPSFRAME EQU 0020H ;定時或不定時或設(shè)定保存GPS數(shù)據(jù)幀[32個字節(jié)為一幀]
EPRGPSADDR EQU 0020H ;保存運行信息的起始地址
;每一幀GPS數(shù)據(jù)長度為:32個字節(jié)[1頁]
;數(shù)據(jù)格式:幀頭[1]|日期時間[6]|緯度[4]|經(jīng)度[4]|海拔高度[4]|速度[2]|方位角[2]|
;+中心指令[1]+本地狀態(tài)[1]+二級狀態(tài)[1]+0FFH+0DH
;*****************************************************************************************************
ORG 0000h
LJMP MAINFUN ;R0..R7 <--> 00H..07H , 10H..17H
ORG 000BH ;內(nèi)部時鐘中斷0
LJMP CT0ST ;R0..R7 <--> 08H..0FH
ORG 0023H
LJMP TXRX
ORG 0033H
LJMP PCASERVE
;===================外部中斷報警功能模塊INT0======================
;****************************************************************
;程 序 名 : CARWARN *
;功 能: 串口中斷服務(wù)程序 *
;占用寄存器: ACC, B, DPTR *
;工作寄存器: RDEPNUM *
;位標志變量: WARNBIT,STACHGBIT *
;緩 沖 區(qū) : TAXISTATUS *
;子程序編號: [此功能被屏蔽,改為掃描工作方式] *
;****************************************************************
CARWARN: JB INTSYS,WARNEXIT
JB WARNBIT,WARNEXIT;正在報警
MOV A,RDEPNUM ;初始化=0FFH
XRL A,#2
JZ RUNWARN
INC RDEPNUM
LJMP WARNEXIT
RUNWARN:
MOV RDEPNUM,#0 ;報警計時計次
MOV WARNTXNUM,#100
SETB WARNBIT
SETB STACHGBIT
WARNEXIT:
RETI
;===================PCA中斷服務(wù)程序模塊========================
;****************************************************************
;程 序 名 : PCASERVE *
;功 能: PCA中斷服務(wù)程序 *
;占用寄存器: ACC, B, DPTR *
;工作寄存器: RXBUF, Port0_Rx_PN, Port1_Rx_PN,Port1_Rx_PN *
;位標志變量: RXBITG,RXBITF,RXGPSOKBIT,RXFC201OKBIT *
;緩 沖 區(qū) : Port0_RxBuff,Port1_RxBuff,Port2_RxBuff *
;子程序編號: *
;****************************************************************
PCASERVE:
PUSH PSW
JNB CCF3,PCAEXIT
CLR CCF3
JB KEYDNBIT,PCAEXIT
JB SCANBIT,PCASERVE1
CLR CR
MOV CCAPM3,#21H ;正跳變觸發(fā)中斷
SETB CR
SETB SCANBIT
LJMP PCAEXIT
PCASERVE1:
JB INSCANBIT,PCASERVE2
CLR CR
MOV CCAPM3,#11H ;負跳變觸發(fā)中斷
MOV CH,#0
MOV CL,#0
SETB CR
SETB INSCANBIT
LJMP PCAEXIT
PCASERVE2:
JB SCANVHBIT,PCASERVE3
CLR CR
MOV CCAPM3,#21H ;正跳變觸發(fā)中斷
MOV CH,#0
MOV CL,#0
SETB CR
MOV SCANVHH,CCAP3H
MOV SCANVHL,CCAP3L
SETB SCANVHBIT
LJMP PCAEXIT
PCASERVE3:
MOV SCANVLH,CCAP3H
MOV SCANVLL,CCAP3L
SETB KEYDNBIT
PCAEXIT: CLR KEYUPBIT
MOV CCON,#0
SETB CR
POP PSW
RETI
;===================串口中斷服務(wù)程序模塊========================
;****************************************************************
;程 序 名 : TXRX *
;功 能: 串口中斷服務(wù)程序 *
;占用寄存器: ACC, B, DPTR *
;工作寄存器: RXBUF, Port0_Rx_PN, Port1_Rx_PN,Port1_Rx_PN *
;位標志變量: RXBITG,RXBITF,RXGPSOKBIT,RXFC201OKBIT *
;緩 沖 區(qū) : Port0_RxBuff,Port1_RxBuff,Port2_RxBuff *
;子程序編號: *
;****************************************************************
;----------------------串口中斷子程序----------------------------
TXRX:
JB RI,UARTREVDATA ;接收中斷,JMP
CLR TI ;發(fā)送中斷,返回
CLR F0
TXRXE: RETI
TXRXRE:
CLR TI
CLR RI ;發(fā)送中斷,返回
RETI
;******************
;串口接收程序 *
;******************
UARTREVDATA:
PUSH PSW
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
CLR RI
LCALL WDOG
MOV RXBUF,SBUF
MOV A,P1
ANL A,#0CH
RR A
RR A
MOV B,A
XRL A,#00H
JNZ UARTPORT1
LJMP RXFC201 ;接收FC201電臺數(shù)據(jù)
UARTPORT1:
MOV A,B
XRL A,#01H
JNZ UARTPORT2
LCALL WDOG
LJMP RXGPS ;接收GPS數(shù)據(jù)子程序
UARTPORT2:
MOV A,B
XRL A,#02H
JNZ RXEXIT
LCALL WDOG
LJMP RXXDJDATA ;接收計價器數(shù)據(jù)
RXEXIT:
POP DPL
POP DPH
POP B
POP ACC
POP PSW
RETI
;**********************************
;串口0接收中心指令程序
;**********************************
RXFC201:JB RXFC201OKBIT,RXEXIT
MOV A,RXBUF
JB RXBITF,RXFC201_1 ;檢測進來的數(shù)據(jù)幀頭
XRL A,#7EH
JNZ RXFC201E
SETB RXBITF ;找到幀頭,是有效數(shù)據(jù)幀
MOV Port0_Rx_PN,#00H ;復(fù)位fc201緩沖區(qū)的指針
MOV DPTR,#Port0_RxBuff
MOV A,#7EH
MOVX @DPTR,A
INC Port0_Rx_PN
RXFC201E:
LJMP RXEXIT
RXFC201_1:
MOV DPTR,#Port0_RxBuff
CLR C
MOV A,DPL
ADD A,Port0_Rx_PN
MOV DPL,A
MOV A,#0
ADDC A,DPH
MOV DPH,A
MOV A,RXBUF
MOVX @DPTR,A
INC Port0_Rx_PN
MOV A,RXBUF
XRL A,#0dH
JZ RXFC201END
LJMP RXEXIT
RXFC201END:
SETB RXFC201OKBIT
SETB RADIOMODBIT
MOV INNETCNT,#36 ;初始化在網(wǎng)計數(shù)器
CLR RXBITF
LJMP RXEXIT
;***********************
;串口1接收GPS數(shù)據(jù)的程序*
;***********************
RXGPS:
JB RXGPSOKBIT,RXEXIT
LCALL WDOG
MOV A,RXBUF
JB RXBITG,RXGPS1
XRL A,#'$'
JNZ RXGPSE
SETB RXBITG
MOV Port1_Rx_PN,#00H ;復(fù)位GPS緩沖區(qū)的指針
MOV DPTR,#Port1_RxBuff
MOV A,#'$'
MOVX @DPTR,A
INC Port1_Rx_PN
RXGPSE: LCALL WDOG
LJMP RXEXIT
RXGPS1: MOV DPTR,#Port1_RxBuff
CLR C
MOV A,DPL
ADD A,Port1_Rx_PN
MOV DPL,A
MOV A,#0
ADDC A,DPH
MOV DPH,A
MOV A,RXBUF
MOVX @DPTR,A
INC Port1_Rx_PN
MOV A,Port1_Rx_PN
CJNE A,#72,RXGPS2 ;a>=72:c=0;<72;c=1
LJMP RXGPSEND
RXGPS2:
JC RXGPS3 ;C=1轉(zhuǎn)
LJMP RXGPSEND
; LJMP RXEXIT
RXGPS3: MOV A,RXBUF
XRL A,#0AH
JZ RXGPSEND
LJMP RXEXIT
RXGPSEND:
SETB GPSMODBIT
CLR RXBITG
SETB RXGPSOKBIT
LJMP RXEXIT
;**************************
;串口2接收計價器數(shù)據(jù)的程序*
;**************************
PORT2_EXIT:
LJMP RXEXIT
RXXDJDATA:
JB RXXDJOKBIT,PORT2_EXIT
LCALL WDOG
MOV A,RXBUF
JB RXXDJBIT,RXXDJSTART
XRL A,#0AAH
JNZ RXXDJE
SETB RXXDJBIT
MOV DPTR,#PORT2RX_PN
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#PORT2_RXBUFF
MOV A,#0AAH
MOVX @DPTR,A
MOV DPTR,#PORT2RX_PN
MOVX A,@DPTR
INC A
MOVX @DPTR,A
LJMP RXEXIT
RXXDJSTART:
LCALL WDOG
MOV DPTR,#PORT2_RXBUFF
CLR C
MOV R0,DPL
MOV R1,DPH
MOV DPTR,#PORT2RX_PN
MOVX A,@DPTR
ADD A,R0
MOV R0,A
MOV A,#0
ADDC A,R1
MOV R1,A
MOV DPL,R0
MOV DPH,R1
MOV A,RXBUF
MOVX @DPTR,A
MOV DPTR,#PORT2RX_PN
MOVX A,@DPTR
INC A
MOVX @DPTR,A
MOV A,RXBUF
XRL A,#0CCH
JZ RXXDJEND
LJMP RXEXIT
RXXDJEND:
SETB RXXDJOKBIT
CLR RXXDJBIT
LJMP RXEXIT
RXXDJE:
LJMP RXEXIT
;================定時中斷服務(wù)程序模塊區(qū)==========================
;****************************************************************
;程 序 名 : CT0ST *
;功 能: 定時中斷服務(wù)程序 *
;占用寄存器: ACC, B, DPTR *
;工作寄存器: RXBUF, Port0_Rx_PN, Port1_Rx_PN,Port2_Rx_PN *
;位標志變量: RXBITG,RXBITF,RXGPSOKBIT,RXFC201OKBIT *
;緩 沖 區(qū) : Port0_RxBuff,Port1_RxBuff,Port2_RxBuff *
;子程序編號: *
;****************************************************************
;-------------定時中斷主程序----------------------
DONE_DONE:LJMP DONE
CT0ST:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
CLR TR0 ;2MS
LCALL WDOG
LCALL CHECKWARN ;掃描報警輸入
CT0ST01: JB SCANBIT,CT0ST02
LCALL SCANKEY ;檢測當前鍵是否已經(jīng)松開
CT0ST02: JNB KEYOK,CT0ST10
LCALL KEYORDER ;處理按鍵命令
;------------用于10MS定時---------
CT0ST10: DJNZ C10MS,DONE_DONE
MOV C10MS,#5
JNB RXGPSOKBIT,CT0ST11
LCALL DEALGPSDATA
CT0ST11: JNB RXFC201OKBIT,CT0ST12
LCALL UNPAKFC201 ;處理串口來的命令
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -