⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iap

📁 静音琴的源码,有兴趣的拼音可以下载下来看看,这个是可以生产的程序.
💻
字号:
;##############################################################
        PROC  CPZB1,CSDQ,CSCX
;********************************
;       考贝至块1      (调试通过)
;********************************
;    位于B0区, >=2000H
;    把块0的ROM的0600H-1FFFH,
;复制到块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       ;数量:52=(1FFFH-0600H+1)/128
CPZB1A:
        MOV   DPH,R3       ;源地址
        MOV   DPL,R4
        MOV   B,#0
        LCALL CSDQ         ;参数读取
        MOV   R3,DPH
        MOV   R4,DPL       ;已经增加128
        LCALL CSJC         ;参数检测,无参数时跳过
        JNZ   CPZB1B
        LCALL R1R2J128     ;R1R2+128
        LJMP  CPZB1C
        include "软件陷阱.asm"
CPZB1B:
        MOV   DPH,R1       ;目的地址
        MOV   DPL,R2
        LCALL CSCX         ;参数重写
        MOV   R1,DPH
        MOV   R2,DPL       ;已经增加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"
;********************************
;       参数检测
;********************************
;检测EXRAM的0280H-02FFH有无参数
;--------------------------------
;入口:  EXRAM
;--------------------------------
;出口:  A        0=无参数
;--------------------------------
;资源   无
;--------------------------------
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"
;##############################################################
;********************************
;       参数读取       (调试通过)
;********************************
;   根据 B 的不同,分别把块1或块0
;的 ROM @DPTRi--@DPTRi+127,复制到
;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         ;数据个数
        PUSH  SFCF
        MOV   A,B
        JZ    CSDQ3           ;区分B0,B1
        MOV   SFCF,#0         ;SFCF[1:0]=00:在B1读取参数
        LJMP  CSDQ4
        include "软件陷阱.asm"
CSDQ3:
        MOV   SFCF,#1         ;SFCF[1:0]=01:在B0读取参数
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"
;********************************
;       参数重写       (调试通过)
;********************************
;    把EXRAM的0280H--02FFH,复制到
;块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            ;扇区擦除
        MOV   R0,#128         ;数据个数
CSCX4:
        MOV   AUXR1,#0        ;DPTR0,源
        MOVX  A,@DPTR
        INC   DPTR
        MOV   AUXR1,#1        ;DPTR1,目的
        LCALL ZJBC            ;字节编程
        LCALL ZJXL            ;字节校验
        JZ    CSCX3           ;失败,重来
        INC   DPTR
        DJNZ  R0,CSCX4
        MOV   AUXR1,#0        ;DPTR0
        POP   DPL
        POP   DPH
        MOV   AUXR1,#1        ;DPTR1
        MOV   DP1L,DPL        ;此时,DPL=目的尾地址+1
        MOV   DP1H,DPH
        POP   DPL
        POP   DPH
        POP   AUXR1
        MOV   DPL,DP1L        ;此时,DP1L=目的尾地址+1
        MOV   DPH,DP1H
        POP   DP1L
        POP   DP1H
        POP   ACC
        MOV   R0,A
CSCXE:
        POP   ACC
        POP   PSW
        RET
        include "软件陷阱.asm"
;##############################################################
;********************************
;       扇区擦除  30mS (试验通过)
;********************************
;入口:  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"
;********************************
;       字节编程  50uS (试验通过)
;********************************
;入口:  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"
;********************************
;       字节校验  50nS (试验通过)
;********************************
;入口:  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
;##############################################################

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -