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

📄 51 single-chip integrated assembler.txt

📁 包含了C51单片机编程中常用的源程序
💻 TXT
📖 第 1 页 / 共 4 页
字号:
51单片机汇编程序集
                  ;片内RAM初始化子程序
                  IBCLR    :MOV    A,R0
                            MOV    R1,A
                            CLR    A
                  IBC1     :MOV    @R1,A
                            INC    R1
                            DJNZ   R7,IBC1
                            RET
                  ;片外RAM初始化子程序
                  EBCLR1   :MOV    A,ADDPL
                            MOV    DPL,A
                            MOV    A,ADDPH
                            MOV    DPH,A
                            CLR    C
                  EBC11    :MOVX   @DPTR,A
                            INC    DPTR
                            DJNZ   R7,EBC11
                            RET
                  ;片外RAM初始化子程序(双字节个单元)
                  EBCLR2   :MOV    A,ADDPL
                            MOV    DPL,A
                            MOV    A,ADDPH
                            MOV    DPH,A
                            MOV    A,R7
                            JZ     EBC21
                            INC    R6
                  EBC21    :CLR    A
                            MOVX   @DPTR,A
                            INC    DPTR
                            DJNZ   R7,EBC21
                            DJNZ   R6,EBC21
                            RET
                  ;内部RAM数据复制程序
                  ;入口    :R0,R7
                  ;占用资源:A
                  ;堆栈需求:2字节
                  ;出口    :R1
                  IBMOV    :MOV    A,R0
                            ADD    A,R7
                            MOV    R0,A
                            MOV    A,R1
                            ADD    A,R7
                            MOV    R1,A
                  IBM1     :DEC    R0
                            DEC    R1
                            MOV    A,@R0
                            MOV    @R1,A
                            DJNZ   R7,IBM1
                            RET
                  ;外部RAM数据复制程序
                  ;入口    :ADDPH,ADDPL,R7
                  ;占用资源:ACC
                  ;堆栈需求:2字节
                  ;出口    :R0,R1
                  EBMOV1   :MOV    A,ADDPL
                            ADD    A,R7
                            MOV    DPL,A
                            CLR    A
                            ADDC   A,ADDPH
                            MOV    DPH,A
                            MOV    A,R7
                            ADD    A,R1
                            XCH    A,R0
                            ADDC   A,#00H
                            MOV    P2,A
                  EBM11    :DEC    R0
                            CJNE   R0,#0FFH,EBM12
                            DEC    P2
                  EBM12    :DEC    DPL
                            MOV    A,DPL
                            CJNE   A,#0FFH,EBM13
                            DEC    DPH
                  EBM13    :MOVX   A,@R0
                            MOVX   @DPTR,A
                            DJNZ   R7,EBM11
                            RET
                  ;外部RAM数据复制程序
                  ;入口    :ADDPH,ADDPL,R6,R7
                  ;占用资源:ACC
                  ;堆栈需求:2字节
                  ;出口    :R0,R1
                  EBMOV2   :MOV    A,ADDPL
                            ADD    A,R7
                            MOV    DPL,A
                            MOV    A,R6
                            ADDC   A,ADDPH
                            MOV    DPH,A
                            MOV    A,R7
                            ADD    A,R1
                            XCH    A,R0
                            ADDC   A,R6
                            MOV    P2,A
                            MOV    A,R7
                            JZ     EBM21
                            INC    R6
                  EBM21    :DEC    R0
                            CJNE   R0,#0FFH,EBM22
                            DEC    P2
                  EBM22    :DEC    DPL
                            MOV    A,DPL
                            CJNE   A,#0FFH,EBM23
                            DEC    DPH
                  EBM23    :MOVX   A,@R0
                            MOVX   @DPTR,A
                            DJNZ   R7,EBM21
                            DJNZ   R6,EBM21
                            RET
                  ;外部RAM数据复制到内部RAM程序
                  ;入口    :ADDPH,ADDPL,R7
                  ;占用资源:ACC
                  ;堆栈需求:2字节
                  ;出口    :R0
                  ITEMOV  :MOV    A,ADDPL
                           ADD    A,R7
                           MOV    DPL,A
                           MOV    A,ADDPH
                           ADDC   A,#00H
                           MOV    DPH,A
                           MOV    A,R0
                           ADD    A,R7
                           MOV    R0,A
                  ITEM1   :DEC    R0
                           DEC    DPL
                           MOV    A,DPL
                           CJNE   A,#0FFH,ITEM2
                           DEC    DPH
                  ITEM2   :MOVX   A,@DPTR
                           MOV    @R0,A
                           DJNZ   R7,ITEM1
                           RET
                   
                  ;限幅滤波程序
                  ;入口    :A,SDAT,DELTY
                  ;占用资源:B
                  ;堆栈需求:2字节
                  ;出口    :A
                  JUGFILT  :MOV    B,A
                            CLR    C
                            SUBB   A,SDAT
                            JNC    JUGFT1
                            CPL    A
                            INC    A
                  JUGFT1   :SETB   A
                            SUBB   A,#DELTY
                            JNC    JUGFT3
                            MOV    A,SDAT
                            RET
                  JUGFT3   :MOV    A,B
                            MOV    SDAT,A    
                            RET
                  ;中位值滤波程序
                  ;入口    :ADDPH,ADDPL,N
                  ;占用资源:ESELSORT
                  ;堆栈需求:4字节
                  ;出口    :A
                  MEDFILT  :LCALL  ESELSORT
                            MOV    A,N
                            CLR    C
                            RRC    A
                            ADD    A,ADDPL
                            MOV    DPL,A
                            MOV    A,ADDPH
                            MOV    DPH,A
                            JNC    MEDFT1
                            INC    DPH
                  MEDFT1   :MOVX   A,@DPTR
                            RET
                  ;N点算术平均滤波
                  ;入口    :ADDPH,ADDPL,N
                  ;占用资源:B,R3,R4
                  ;堆栈需求:2字节
                  ;出口    :A
                  AVFILT   :MOV    A,ADDPL
                            MOV    DPL,A
                            MOV    A,ADDPH
                            MOV    DPH,A
                            CLR    A
                            MOV    R3,A
                            MOV    R4,A
                            MOV    R7,N
                  AVFT1    :MOVX   A,@DPTR
                            INC    DPTR
                            ADD    A,R4
                            MOV    R4,A
                            JNC    AVFT2
                            INC    R3
                  AVFT2    :DJNZ   R7,AVFT1
                            MOV    R7,N
                            MOV    R2,#00H
                            LCALL  NDIV31
                            MOV    A,R4
                            RET
                  ;N点加权平均滤波
                  ;入口    :ADDPH,ADDPL,N
                  ;占用资源:B,R3,R4
                  ;堆栈需求:2字节
                  ;出口    :A
                  QAVFILT  :CLR    A
                            MOV    R3,A
                            MOV    R4,A
                            MOV    R7,N
                            MOV    P2,ADDPH
                            MOV    R1,ADDPL
                            MOV    DPTR,#QAVTAB
                  QAVFT1   :MOVC   A,@A+DPTR
                            MOV    B,A
                            MOVX   A,@R1
                            INC    DPTR
                            INC    R1
                            MUL    AB
                            ADD    A,R4
                            MOV    R4,A
                            MOV    A,B
                            ADDC   A,R3
                            MOV    R3,A
                            DJNZ   R7,QAVFT1
                            MOV    A,R4
                            JNB    ACC.7,QAVFT2
                            INC    R3
                  QAVFT2   :MOV    A,R3
                            RET
                  QAVTAB   :DB
                  ;一阶加权滞后滤波程序
                  ;入口    :A,DELTY
                  ;占用资源:B,R3,R4
                  ;堆栈需求:2字节
                  ;出口    :A
                  BQFILT   :MOV    B,A
                            CLR    A
                            MOV    DPTR,#ABTAB
                            MOVC   A,@A+DPTR
                            MUL    AB
                            MOV    R4,A
                            MOV    R3,B
                            MOV    A,#01H
                            MOVC   A,@A+DPTR
                            MOV    B,DELTY
                            MUL    AB
                            ADD    A,R4
                            MOV    R4,A
                            MOV    A,B
                            ADDC   A,R3
                            MOV    R3,A
                            MOV    A,R4
                            JNB    ACC.7,FT1
                            INC    R3
                  FT1      :MOV    A,R3
                            MOV    DELTY,A
                            RET
                  BQTAB    :DB     80H,80H
                   
                  ;双字节取补程序 /(R3R4)=(R3R4)
                  ;入口    :R3,R4
                  ;占用资源:ACC
                  ;堆栈需求:2字节
                  ;出口    :R3,R4
                  CMPT     :MOV    A,R4
                            CPL    A
                            ADD    A,#01H
                            MOV    R4,A
                            MOV    A,R3
                            CPL    A
                            ADDC   A,#00H
                            MOV    R3,A
                            RET
                  ;N节取补程序 /([R0])=([R0])
                  ;入口    :R0,R7
                  ;占用资源:ACC,B
                  ;堆栈需求:2字节
                  ;出口    :R0
                  NCMPTN   :MOV    B,R0
                            SETB   C
                  NCPT1    :MOV    A,@R0
                            CPL    A
                            ADDC   A,#00H
                            MOV    @R0,A
                            INC    R0
                            DJNZ   R7,NCPT1
                            MOV    R0,B
                            RET
                  ;双字节无符号数加法程序 (R3R4+R6R7)=(R3R4)
                  ;入口    :R3,R4,R6,R7
                  ;占用资源:ACC
                  ;堆栈需求:2字节
                  ;出口    :R3,R4,CF
                  NADD     :MOV    A,R4
                            ADD    A,R7
                            MOV    R4,A
                            MOV    A,R3
                            ADDC   A,R6
                            MOV    R3,A
                            RET
                  ;N字节无符号数加法程序 ([R0]+[R1])=([R0])
                  ;入口    :R0,R1,R7
                  ;占用资源:ACC,B
                  ;堆栈需求:2字节
                  ;出口    :R0,CF
                  NADDN    :MOV    B,R0
                            CLR    C
                  NADN1    :MOV    A,@R0
                            ADDC   A,@R1
                            MOV    @R0,A
                            INC    R0
                            INC    R1
                            DJNZ   R7,NADN1
                            MOV    R0,B
                            RET
                  ;双字节无符号数减法程序 (R3R4-R6R7)=(R3R4)
                  ;入口    :R3,R4,R6,R7
                  ;占用资源:ACC
                  ;堆栈需求:2字节
                  ;出口    :R3,R4
                  NSUB     :MOV    A,R4
                            CLR    C
                            SUBB   A,R7
                            MOV    R4,A
                            MOV    A,R3
                            SUBB   A,R6
                            MOV    R3,A
                            RET
                  ;N字节无符号数减法程序 ([R0]-[R1])=([R0])

⌨️ 快捷键说明

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