?? iap
字號(hào):
;##############################################################
PROC CPZB1,CSDQ,CSCX
;********************************
; 考貝至塊1 (調(diào)試通過)
;********************************
; 位于B0區(qū), >=2000H
; 把塊0的ROM的0600H-1FFFH,
;復(fù)制到塊1的ROM的0600H-1FFFH。
;--------------------------------
;入口: 無
;--------------------------------
;出口: 無
;--------------------------------
;資源 占用EXRAM的0280H-02FFH
;--------------------------------
CPZB1:
PUSH PSW
PUSH ACC
PUSH B
MOV A,R0
PUSH ACC
MOV A,R1
PUSH ACC
MOV A,R2
PUSH ACC
MOV A,R3
PUSH ACC
MOV A,R4
PUSH ACC
;--------
MOV R1,#06H ;目的地址H
MOV R2,#00H ;目的地址L
MOV R3,#06H ;源地址H
MOV R4,#00H ;源地址L
MOV R0,#52 ;數(shù)量:52=(1FFFH-0600H+1)/128
CPZB1A:
MOV DPH,R3 ;源地址
MOV DPL,R4
MOV B,#0
LCALL CSDQ ;參數(shù)讀取
MOV R3,DPH
MOV R4,DPL ;已經(jīng)增加128
LCALL CSJC ;參數(shù)檢測,無參數(shù)時(shí)跳過
JNZ CPZB1B
LCALL R1R2J128 ;R1R2+128
LJMP CPZB1C
include "軟件陷阱.asm"
CPZB1B:
MOV DPH,R1 ;目的地址
MOV DPL,R2
LCALL CSCX ;參數(shù)重寫
MOV R1,DPH
MOV R2,DPL ;已經(jīng)增加128
CPZB1C:
DJNZ R0,CPZB1A
;--------------
POP ACC
MOV R4,A
POP ACC
MOV R3,A
POP ACC
MOV R2,A
POP ACC
MOV R1,A
POP ACC
MOV R0,A
POP B
POP ACC
POP PSW
RET
include "軟件陷阱.asm"
;********************************
; 參數(shù)檢測
;********************************
;檢測EXRAM的0280H-02FFH有無參數(shù)
;--------------------------------
;入口: EXRAM
;--------------------------------
;出口: A 0=無參數(shù)
;--------------------------------
;資源 無
;--------------------------------
CSJC:
PUSH PSW
PUSH B
PUSH DPH
PUSH DPL
;--------
MOV DPTR,#0280H
MOV B,#0FFH
CSJC1:
MOVX A,@DPTR
INC DPTR
ANL B,A
MOV A,DPL
CJNE A,#00H,CSJC1
MOV A,B
CPL A
;--------
POP DPL
POP DPH
POP B
POP PSW
RET
include "軟件陷阱.asm"
;********************************
; R1R2增加128
;********************************
;入口: 無
;--------------------------------
;出口: R1R2=R1R2+128
;--------------------------------
;資源 無
;--------------------------------
R1R2J128:
PUSH PSW
PUSH ACC
MOV A,R2
ADD A,#128
MOV R2,A
MOV A,R1
ADDC A,#0
MOV R1,A
POP ACC
POP PSW
RET
include "軟件陷阱.asm"
;##############################################################
;********************************
; 參數(shù)讀取 (調(diào)試通過)
;********************************
; 根據(jù) B 的不同,分別把塊1或塊0
;的 ROM @DPTRi--@DPTRi+127,復(fù)制到
;EXRAM的0280H--02FFH.
;--------------------------------
;入口: B=0/(1-FF)
; DPTR
;--------------------------------
;出口: DPTR+128
;--------------------------------
;資源 無
;--------------------------------
CSDQ:
PUSH PSW
PUSH ACC
MOV A,DPL
CJNE A,#00H,CSDQ1
LJMP CSDQ2
include "軟件陷阱.asm"
CSDQ1:
CJNE A,#80H,CSDQ5 ;地址不整
CSDQ2:
PUSH DP1H
PUSH DP1L
MOV DP1H,DPH ;源首地址
MOV DP1L,DPL
PUSH AUXR1
MOV AUXR1,#0 ;DPTR0
PUSH DPH
PUSH DPL
MOV DPH,#02H ;目的地址EXRAM:0280H
MOV DPL,#80H
MOV AUXR1,#1 ;DPTR1
PUSH DPH
PUSH DPL
MOV DPH,DP1H ;源地址
MOV DPL,DP1L
MOV A,R0
PUSH ACC
MOV R0,#128 ;數(shù)據(jù)個(gè)數(shù)
PUSH SFCF
MOV A,B
JZ CSDQ3 ;區(qū)分B0,B1
MOV SFCF,#0 ;SFCF[1:0]=00:在B1讀取參數(shù)
LJMP CSDQ4
include "軟件陷阱.asm"
CSDQ3:
MOV SFCF,#1 ;SFCF[1:0]=01:在B0讀取參數(shù)
CSDQ4:
MOV AUXR1,#1 ;DPTR1,源
MOV A,#0
MOVC A,@A+DPTR
INC DPTR
MOV AUXR1,#0 ;DPTR0,目的
MOVX @DPTR,A
INC DPTR
DJNZ R0,CSDQ4
POP SFCF
POP ACC
MOV R0,A
MOV AUXR1,#1 ;DPTR1
MOV DP1L,DPL
MOV DP1H,DPH
POP DPL
POP DPH
MOV AUXR1,#0 ;DPTR0
POP DPL
POP DPH
POP AUXR1
MOV DPL,DP1L
MOV DPH,DP1H
POP DP1L
POP DP1H
CSDQ5:
POP ACC
POP PSW
RET
include "軟件陷阱.asm"
;********************************
; 參數(shù)重寫 (調(diào)試通過)
;********************************
; 把EXRAM的0280H--02FFH,復(fù)制到
;塊1的ROM @DPTR--@DPTR+127中.
;--------------------------------
;入口: 2000H > DPTR >= 0600H
; DPL=00H/80H
;--------------------------------
;出口: DPTR+128
;--------------------------------
;資源 無
;--------------------------------
CSCX:
PUSH PSW
PUSH ACC
MOV A,DPH
CJNE A,#20H,$+3
JNC CSCXE ;塊1目的地址>=2000H,不合適
CJNE A,#06H,$+3
JC CSCXE ;塊1目的地址<0600H,不合適
MOV A,DPL
CJNE A,#00H,CSCX1
LJMP CSCX2
include "軟件陷阱.asm"
CSCX1:
CJNE A,#80H,CSCXE ;地址不整
CSCX2:
MOV A,R0
PUSH ACC
PUSH DP1H
PUSH DP1L
MOV DP1H,DPH ;目的首地址
MOV DP1L,DPL
PUSH AUXR1
MOV AUXR1,#1 ;DPTR1
PUSH DPH
PUSH DPL
MOV AUXR1,#0 ;DPTR0
PUSH DPH
PUSH DPL
CSCX3:
MOV AUXR1,#0 ;DPTR0
MOV DPH,#02H ;源首地址EXRAM:0280H
MOV DPL,#80H
MOV AUXR1,#1 ;DPTR1
MOV DPH,DP1H ;目的首地址
MOV DPL,DP1L
LCALL SQCC ;扇區(qū)擦除
MOV R0,#128 ;數(shù)據(jù)個(gè)數(shù)
CSCX4:
MOV AUXR1,#0 ;DPTR0,源
MOVX A,@DPTR
INC DPTR
MOV AUXR1,#1 ;DPTR1,目的
LCALL ZJBC ;字節(jié)編程
LCALL ZJXL ;字節(jié)校驗(yàn)
JZ CSCX3 ;失敗,重來
INC DPTR
DJNZ R0,CSCX4
MOV AUXR1,#0 ;DPTR0
POP DPL
POP DPH
MOV AUXR1,#1 ;DPTR1
MOV DP1L,DPL ;此時(shí),DPL=目的尾地址+1
MOV DP1H,DPH
POP DPL
POP DPH
POP AUXR1
MOV DPL,DP1L ;此時(shí),DP1L=目的尾地址+1
MOV DPH,DP1H
POP DP1L
POP DP1H
POP ACC
MOV R0,A
CSCXE:
POP ACC
POP PSW
RET
include "軟件陷阱.asm"
;##############################################################
;********************************
; 扇區(qū)擦除 30mS (試驗(yàn)通過)
;********************************
;入口: DPTR
;--------------------------------
;出口: 無
;--------------------------------
;資源 無
;--------------------------------
SQCC:
PUSH SFCF
ORL SFCF,#01000000B
MOV SFAH,DPH
MOV SFAL,DPL
MOV SFCM,#0BH
PUSH ACC
SQCC1:
MOV A,SFST
ANL A,#00000100B
JNZ SQCC1
POP ACC
POP SFCF
RET
include "軟件陷阱.asm"
;********************************
; 字節(jié)編程 50uS (試驗(yàn)通過)
;********************************
;入口: A,DPTR
;--------------------------------
;出口: 無
;--------------------------------
;資源 無
;--------------------------------
ZJBC:
PUSH SFCF
ORL SFCF,#01000000B
MOV SFAH,DPH
MOV SFAL,DPL
MOV SFDT,A
MOV SFCM,#0EH
PUSH ACC
ZJBC1:
MOV A,SFST
ANL A,#00000100B
JNZ ZJBC1
POP ACC
POP SFCF
RET
include "軟件陷阱.asm"
;********************************
; 字節(jié)校驗(yàn) 50nS (試驗(yàn)通過)
;********************************
;入口: A,DPTR
;--------------------------------
;出口: A=#0失敗
;--------------------------------
;資源 無
;--------------------------------
ZJXL:
PUSH SFCF
ORL SFCF,#01000000B
MOV SFAH,DPH
MOV SFAL,DPL
MOV SFCM,#0CH
CJNE A,SFDT,ZJXL1
MOV A,#0FFH ;OK
ZJXL2:
POP SFCF
RET
include "軟件陷阱.asm"
ZJXL1:
MOV A,#0 ;失敗
LJMP ZJXL2
include "軟件陷阱.asm"
;********************************
END
;##############################################################
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -