??
字號:
;##############################################################
PROC QPCPJC,SCKJJC,CSBJC
;********************************
; 強(qiáng)迫考貝檢測 (調(diào)試通過)
;********************************
; 通過檢測P3.3(9腳),P3.4(10腳)
;是否短接,來確定是否把塊0特定區(qū)的
;內(nèi)容復(fù)制到塊1 區(qū).
;--------------------------------
QPCPJC:
SETB P3.3
CLR P3.4
JB P3.3,QPCPJCE
SETB P3.4
CLR P3.3
JB P3.4,QPCPJCE
;第二次
SETB P3.3
CLR P3.4
JB P3.3,QPCPJCE
SETB P3.4
CLR P3.3
JB P3.4,QPCPJCE
LCALL CPZB1 ;考貝至塊1
QPCPJCE:
SETB P3.3
SETB P3.4
RET
include "軟件陷阱.asm"
;********************************
; 首次開機(jī)檢測 (調(diào)試通過)
;********************************
; 通過檢測塊1 區(qū)某特定位置是否
;有數(shù)據(jù)串510103641226, 來確定是否
;是第一次開機(jī).是首次開機(jī)時,把塊0
;特定區(qū)的內(nèi)容復(fù)制到塊1 區(qū).
;--------------------------------
SCKJJC:
PUSH PSW
PUSH ACC
PUSH DPH
PUSH DPL
PUSH SFCF
MOV SFCF,#00000000B;8K(B1)+56K(B0)
MOV DPTR,#SCKJBZ ;首次開機(jī)標(biāo)志
LCALL BZJC ;標(biāo)志檢測,OUT->ACC
JNZ SCKJJCE
LCALL CPZB1 ;考貝至塊1
SCKJJCE:
POP SFCF
POP DPL
POP DPH
POP ACC
POP PSW
RET
include "軟件陷阱.asm"
;********************************
; 參數(shù)表檢測 (調(diào)試通過)
;********************************
CSBJC:
PUSH PSW
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
;--------
MOV DPTR,#TAB_BZ1
LCALL BZJC ;標(biāo)志檢測
JNZ CSBJC2
MOV DPTR,#TAB_BZ2
LCALL BZJC ;標(biāo)志檢測
JNZ CSBJC1
;標(biāo)志1無,標(biāo)志2無:
LCALL CPZB1 ;考貝至塊1
LJMP CSBJCE
include "軟件陷阱.asm"
CSBJC1:
;標(biāo)志1無,標(biāo)志2有:
LCALL FF280H ;緩沖區(qū)復(fù)位
MOV DPTR,#TAB_CSB1+128
LCALL CSCX ;參數(shù)重寫
MOV DPTR,#TAB_CSB2
MOV B,#1
LCALL CSDQ ;參數(shù)讀取
MOV DPTR,#TAB_CSB1
LCALL CSCX ;參數(shù)重寫
MOV DPTR,#TAB_CSB2+128
MOV B,#1
LCALL CSDQ ;參數(shù)讀取
MOV DPTR,#TAB_CSB1+128
LCALL CSCX ;參數(shù)重寫
LJMP CSBJCE
include "軟件陷阱.asm"
CSBJC2:
;標(biāo)志1有:
MOV DPTR,#TAB_BZ2
LCALL BZJC ;標(biāo)志檢測
JNZ CSBJC4
CSBJC3:
;標(biāo)志1有,標(biāo)志2無:
LCALL FF280H ;緩沖區(qū)復(fù)位
MOV DPTR,#TAB_CSB2+128
LCALL CSCX ;參數(shù)重寫
MOV DPTR,#TAB_CSB1
MOV B,#1
LCALL CSDQ ;參數(shù)讀取
MOV DPTR,#TAB_CSB2
LCALL CSCX ;參數(shù)重寫
MOV DPTR,#TAB_CSB1+128
MOV B,#1
LCALL CSDQ ;參數(shù)讀取
MOV DPTR,#TAB_CSB2+128
LCALL CSCX ;參數(shù)重寫
LJMP CSBJCE
include "軟件陷阱.asm"
CSBJC4:
;標(biāo)志1有,標(biāo)志2有:
MOV DPTR,#TAB_CSB1
MOV B,#1
LCALL CSDQ ;參數(shù)讀取
MOV DPTR,#TAB_CSB2
MOV B,#1
LCALL CSBJ ;參數(shù)比較
JNZ CSBJCE
;參數(shù)表1,參數(shù)表2不同:
LJMP CSBJC3
include "軟件陷阱.asm"
CSBJCE:
POP DPL
POP DPH
POP B
POP ACC
POP PSW
RET
include "軟件陷阱.asm"
;********************************
; 標(biāo)志檢測
;********************************
;檢測標(biāo)志地址位置是否有數(shù)據(jù)串:
; 510103641226.
;--------------------------------
;入口: DPTR 標(biāo)志地址
;--------------------------------
;出口: A=FF/0 有/無
;--------------------------------
;資源 無
;--------------------------------
BZJC:
PUSH PSW
MOV A,#0
MOVC A,@A+DPTR
CJNE A,#51H,BZJC2
MOV A,#1
MOVC A,@A+DPTR
CJNE A,#01H,BZJC2
MOV A,#2
MOVC A,@A+DPTR
CJNE A,#03H,BZJC2
MOV A,#3
MOVC A,@A+DPTR
CJNE A,#64H,BZJC2
MOV A,#4
MOVC A,@A+DPTR
CJNE A,#12H,BZJC2
MOV A,#5
MOVC A,@A+DPTR
CJNE A,#26H,BZJC2
MOV A,#0FFH ;有
LJMP BZJCE
include "軟件陷阱.asm"
BZJC2:
MOV A,#0 ;無
BZJCE:
POP PSW
RET
include "軟件陷阱.asm"
;********************************
; 參數(shù)比較
;********************************
; 根據(jù) B 的不同,分別把塊1或塊0
;的ROM的@DPTR--@DPTR+127,同EXRAM
;的0280H--02FFH比較.
;--------------------------------
;入口: B=0/(1-FF)
; DPTR
;--------------------------------
;出口: A=FF/0 FF同,0不同
;--------------------------------
;資源 無
;--------------------------------
CSBJ:
PUSH PSW
PUSH B
PUSH DP1H
PUSH DP1L
MOV DP1H,DPH
MOV DP1L,DPL
PUSH AUXR1
MOV AUXR1,#0 ;DPTR0
PUSH DPH
PUSH DPL
MOV DPH,#02H ;EXRAM
MOV DPL,#80H
MOV AUXR1,#1 ;DPTR1
PUSH DPH
PUSH DPL
MOV DPH,DP1H ;ROM
MOV DPL,DP1L
MOV A,R0
PUSH ACC
PUSH SFCF
;----------
MOV R0,#128 ;數(shù)據(jù)個數(shù)
MOV A,B
JZ CSBJ1
MOV SFCF,#0 ;B1: SFCF[1:0]=00
LJMP CSBJ2
include "軟件陷阱.asm"
CSBJ1:
MOV SFCF,#1 ;B0: SFCF[1:0]=01
CSBJ2:
MOV AUXR1,#0 ;DPTR0
MOVX A,@DPTR ;EXRAM
INC DPTR
MOV B,A
MOV AUXR1,#1 ;DPTR1
MOV A,#0
MOVC A,@A+DPTR ;ROM
INC DPTR
CJNE A,B,CSBJ3
DJNZ R0,CSBJ2
MOV A,#0FFH ;同
LJMP CSBJE
include "軟件陷阱.asm"
CSBJ3:
MOV A,#0 ;不同
CSBJE:
POP SFCF
POP B
MOV R0,B
MOV AUXR1,#1 ;DPTR1
POP DPL
POP DPH
MOV AUXR1,#0 ;DPTR0
POP DPL
POP DPH
POP AUXR1
POP DP1L
POP DP1H
POP B
POP PSW
RET
include "軟件陷阱.asm"
;********************************
; 緩沖區(qū)復(fù)位
;********************************
FF280H:
PUSH PSW
PUSH ACC
MOV A,R0
PUSH ACC
PUSH DPH
PUSH DPL
;--------
MOV DPTR,#0280H
MOV A,#0FFH
MOV R0,#128
FF280H1:
MOVX @DPTR,A
INC DPTR
DJNZ R0,FF280H1
;--------
POP DPL
POP DPH
POP ACC
MOV R0,A
POP ACC
POP PSW
RET
include "軟件陷阱.asm"
;********************************
END
include "IAP程序.asm"
;##############################################################
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -