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

📄 正弦函数宏汇编程序.asm

📁 本源程序系正弦函数的 51 系列单片机宏汇编程序。
💻 ASM
字号:
; 4.4 正弦函数子程序
;
FSIN:   MOV @R1,#2
        INC R1
        MOV @R1,#0C9H
        INC R1
        MOV @R1,#10H
        DEC R1
        DEC R1
        LCALL FDIV
        MOV A,R0
        PUSH ACC
        INC SP
        MOV A,SP
        INC SP
        INC SP
        XCH A,R1
        MOV R0,A
        MOV A,R4
        CLR ACC.7
        MOV R4,A
        JZ FSN1
        JNB ACC.6,FSN3
FSN1:   MOV R4,#40H
        MOV R2,#0
        MOV R3,#0
        SJMP FSN4
FSN2:   CLR C
        MOV A,R2
        RRC A
        MOV R2,A
        MOV A,R3
        RRC A
        MOV R3,A
        INC R4
FSN3:   CJNE R4,#16,FSN2
FSN4:   MOV A,R3
        MOV C,ACC.0
        MOV 3BH,C
        JNB 38H,FSN5
        CPL 3BH
FSN5:   MOV A,R4
        MOV R6,A
        SETB C
        CLR PSW.5
        LCALL FSDT
        MOV A,R6
        MOV C,38H
        MOV ACC.7,C
        MOV R4,A
        LCALL FSTR
        LCALL FMUL
        MOV A,R0
        XCH A,R1
        DEC A
        MOV SP,A
        LCALL FSTR
        POP ACC
        PUSH ACC
        MOV R0,A
        LCALL FSUB
        MOV A,R4
        CLR ACC.7
        MOV R4,A
        LCALL FSTR
        MOV A,R1
        MOV R0,A
        LCALL FPLN
        DB 0F7H,0A8H,70H     ;-1.2850635E-3
        DB 7AH,0C6H,70H      ;0.012111701
        DB 0F9H,0C5H,68H     ;-6.02441338E-3
        DB 0FEH,0A5H,41H     ;-0.161379884
        DB 0FAH,26H,0A0H     ;-2.357414E-3
        DB 1,80H,0EH         ;1.00042182
        DB 0FBH,0,1CH        ;-1.32048E-5
        DB 40H
        MOV A,@R1
        MOV C,3BH            ;SIGN of SIN X
        MOV ACC.7,C
        MOV @R1,A
        POP ACC
        MOV R0,A
        RET
;
; 要调用的子程序FDIV
FDIV:   LCALL FMLD
        MOV A,R6
        XRL A,R7
        MOV C,ACC.7
        MOV 38H,C
        CLR A
        MOV R6,A
        MOV R7,A
        CJNE R4,#0,FD1
        CJNE R5,#0,FD1
        SETB C
        RET
FD1:    MOV A,R3
        SUBB A,R5
        MOV A,R2
        SUBB A,R4
        JC FD2
        CLR PSW.5
        CLR 39H
        LCALL FSDT
        MOV A,R7
        RRC A
        MOV R7,A
        CLR C
        SJMP FD1
FD2:    CLR A
        XCH A,R6
        PUSH ACC
        LCALL WDDIV
        POP ACC
        ADD A,@R0
        CLR C
        SUBB A,@R1
        MOV C,38H
        MOV ACC.7,C
        MOV R4,A
        CLR C
        RET
;
; 要调用的子程序FMLD
FMLD:   MOV A,@R0
        MOV R6,A
        INC R0
        MOV A,@R0
        MOV R2,A
        INC R0
        MOV A,@R0
        MOV R3,A
        DEC R0
        DEC R0
        MOV A,@R1
        MOV R7,A
        INC R1
        MOV A,@R1
        MOV R4,A
        INC R1
        MOV A,@R1
        MOV R5,A
        DEC R1
        DEC R1
        RET
;
; 要调用的子程序FSDT
FSDT:   JC FS2
        MOV C,39H
        JB PSW.5,FS1
        MOV A,R2
        RRC A
        MOV R2,A
        MOV A,R3
        RRC A
        MOV R3,A
        INC R6
        RET
FS1:    MOV A,R4
        RRC A
        MOV R4,A
        MOV A,R5
        RRC A
        MOV R5,A
        INC R7
        RET
FS2:    MOV A,R2
        JNZ FS4
        CJNE R3,#0,FS5
        MOV R6,#41H
FS3:    RET
FS4:    JB ACC.7,FS3
FS5:    MOV C,PSW.5
        MOV A,R3
        RLC A
        MOV R3,A
        MOV A,R2
        RLC A
        MOV R2,A
        CLR PSW.5
        DEC R6
        SJMP FS2
;
; 要调用的子程序WDDIV
WDDIV:  MOV A,R1
        PUSH ACC
        MOV B,#10H
DV1:    CLR C
        MOV A,R6
        RLC A
        MOV R6,A
        MOV A,R7
        RLC A
        MOV R7,A
        MOV A,R3
        RLC A
        MOV R3,A
        XCH A,R2
        RLC A
        XCH A,R2
        MOV PSW.5,C
        CLR C
        SUBB A,R54
        MOV R1,A
        MOV A,R2
        SUBB A,R4
        JB PSW.5,DV2
        JC DV3
DV2:    MOV R2,A
        MOV A,R1
        MOV R3,A
        INC R6
DV3:    DJNZ B,DV1
        POP ACC
        MOV R1,A
        MOV A,R7
        MOV R2,A
        MOV A,R6
        MOV R3,A
        RET
;
; 要调用的子程序FSTR
FSTR:   MOV A,R4
        MOV @R1,A
        INC R1
        MOV A,R2
        MOV @R1,A
        INC R1
        MOV A,R3
        MOV @R1,A
        DEC R1
        DEC R1
        RET
;
; 要调用的子程序FMUL
FMUL:   LCALL FMLD
        MOV A,R6
        XRL A,R7
        MOV C,ACC.7
        MOV 38H,C
        LCALL WDMUL
        MOV A,R7
        MOV C,ACC.7
        MOV PSW.5,C
        MOV A,@R0
        ADD A,@R1
        MOV R6,A
        SETB C
        LCALL FSDT
        MOV A,R6
        MOV C,38H
        MOV ACC.7,C
        MOV R4,A
        RET
;
; 要调用的子程序WDMUL
WDMUL:  MOV A,R3
        MOV B,R5
        MUL AB
        MOV R7,B
        MOV A,R3
        MOV B,R4
        MUL AB
        ADD A,R7
        MOV R7,A
        CLR A
        ADDC A,B
        MOV R3,A
        MOV A,R2
        MOV B,R5
        MUL AB
        ADD A,R7
        MOV R7,A
        MOV A,R3
        ADDC A,B
        MOV R3,A
        MOV PSW.5,C
        MOV A,R2
        MOV B,R4
        MUL AB
        ADD A,R3
        MOV R3,A
        CLR A
        ADDC A,B
        MOV C,PSW.5
        ADDC A,#0
        MOV R2,A
        RET
;
; 要调用的子程序FSUB
FSUB:   SETB 3AH
        LCALL FMLD
        LCALL FABP
        RET
;
; 要调用的子程序FABP
FABP:   MOV A,R6
        MOV C,ACC.7
        MOV 38H,C
        XRL A,R7
        JNB ACC.7,FA1
        CPL 3AH
FA1:    MOV A,R6
        MOV C,ACC.6
        MOV ACC.7,C
        MOV R6,A
        MOV A,R7
        MOV C,ACC.6
        MOV ACC.7,C
        MOV R7,A
        CLR C
        MOV A,R6
        SUBB A,R7
        JZ FA2
        CLR PSW.5
        CLR 39H
        JB ACC.7,FA5
        CJNE R4,#0,FA6
        CJNE R5,#0,FA6
FA2:    JB 3AH,FA8
        MOV A,R3
        ADD A,R5
        MOV R3,A
        MOV A,R2
        ADDC A,R4
        MOV R2,A
        JNC FA4
        SETB 39H
        CLR C
FA3:    CLR PSW.5
        LCALL FSDT
FA4:    CJNE R2,#0,FAA
        CJNE R3,#0,FAA
        MOV R4,#41H
        RET
FAA:    MOV A,R6
        MOV C,38H
        MOV ACC.7,C
        XCH A,R4
        MOV R6,A
        RET
FA5:    CJNE R2,#0,FA7
        CJNE R3,#0,FA7
        MOV A,R7
        MOV R6,A
        SJMP FA2
FA6:    CPL PSW.5
FA7:    CLR C
        LCALL FSDT
        SJMP FA1
FA8:    MOV A,R3
        CLR C
        SUBB A,R5
        MOV R3,A
        MOV A,R2
        SUBB A,R4
        MOV R2,A
        JNC FA9
        CLR A
        CLR C
        SUBB A,R3
        MOV R3,A
        CLR A
        SUBB A,R2
        MOV R2,A
        CPL 38H
FA9:    SETB C
        SJMP FA3
;
; 要调用的子程序FPLN
FPLN:   POP DPH
        POP DPL
        CLR A
        MOVC A,@A+DPTR
        MOV R6,A
        INC DPTR
        CLR A
        MOVC A,@A+DPTR
        MOV R2,A
        INC DPTR
        CLR A
        MOVC A,@A+DPTR
        MOV R3,A
        INC DPTR
FP1:    MOV A,@R0
        XRL A,R6
        MOV C,ACC.7
        MOV 38H,C
        INC R0
        MOV A,@R0
        MOV R4,A
        INC R0
        MOV A,@R0
        MOV R5,A
        DEC R0
        DEC R0
        LCALL WDMUL
        MOV A,R2
        JB ACC.7,FP2
        MOV A,R7
        RLC A
        MOV A,R3
        RLC A
        MOV R3,A
        MOV A,R2
        RLC A
        MOV R2,A
        DEC R6
FP2:    MOV A,R6
        ADD A,@R0
        MOV C,38H
        MOV ACC.7,C
        MOV R6,A
        CLR A
        MOVC A,@A+DPTR
        MOV R7,A
        INC DPTR
        CLR A
        MOVC A,@A+DPTR
        MOV R4,A
        INC DPTR
        CLR A
        MOVC A,@A+DPTR
        MOV R5,A
        INC DPTR
        CLR 3AH
        LCALL FABP
        MOV A,R4
        MOV R6,A
        CLR A
        MOVC A,@A+DPTR
        CJNE A,#40H,FP1
        LCALL FSTR
        INC DPTR
        CLR A
        JMP @A+DPTR

⌨️ 快捷键说明

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