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

📄 电动卷尺贴片段码控制程序.asm

📁 一款电动卷尺51源程序,带计算器功能,89C52设计的
💻 ASM
📖 第 1 页 / 共 5 页
字号:
     MOV A,R7
     ORL A,R6
     ORL A,R5
     JNZ BTF0                   ;JB R5R6R7=0
     MOV @R0,#41H
     RET
BTF0:
     MOV A,@R0
     MOV C,ACC.7
     MOV 1DH,C
     CLR 1FH
     MOV C,ACC.6
     MOV ACC.7,C
     MOV @R0,A
     JNC BTF1
     ADD A,#19
     JC BTF2
     MOV @R0,#41H
     INC R0
     MOV @R0,#0
     INC R0
     MOV @R0,#0
     INC R0
     MOV @R0,#0
     DEC R0
     DEC R0
     DEC R0
     RET
BTF1:
     SUBB A,#19
     JC BTF2
     MOV A,#3FH
     MOV C,1DH
     MOV ACC.7,C
     MOV @R0,A
     INC R0
     MOV @R0,#0FFH
     INC R0
     MOV @R0,#0FFH
     INC R0
     MOV @R0,#0FFH
     DEC R0
     DEC R0
     DEC R0
     RET
BTF2:
     CLR A                      ;USE R1.R2R3R4
     MOV R4,A
     MOV R3,A
     MOV R2,A
     MOV R1,#24                 ;3BYTE =3*8=24
BTF3:
     MOV A,R7
     ADD A,R7
     DA A
     MOV R7,A
     MOV A,R6
     ADDC A,R6
     DA A
     MOV R6,A
     MOV A,R5
     ADDC A,R5
     DA A
     MOV R5,A                   ;R5R6R7*2
     MOV A,R4
     RLC A
     MOV R4,A
     MOV A,R3
     RLC A
     MOV R3,A
     MOV A,R2
     RLC A
     MOV R2,A                   ;COUNT .R5R6R7(10)=>.R2R3R4(2)
     DEC R1
     JNB ACC.7,BTF3
     MOV A,R5
     ADD A,#0B0H
     CLR A
     ADDC A,R4
     MOV R4,A
     CLR A
     ADDC A,R3
     MOV R3,A
     CLR A
     ADDC A,R2
     MOV R2,A
     JNC BTF4
     MOV R2,#80H
     INC R1
BTF4:
     MOV DPTR,#BTFL
     MOV A,@R0
     ADD A,#19
     MOV B,#4                   ;4 BYTE
     MUL AB
     ADD A,DPL
     MOV DPL,A
     JNC BTF5
     INC DPH
BTF5:
     CLR A
     MOVC A,@A+DPTR
     MOV C,ACC.6
     MOV ACC.7,C
     MOV 0CH,A                  ;R4"=0CH
     MOV A,#1
     MOVC A,@A+DPTR
     MOV 0DH,A
     MOV A,#2
     MOVC A,@A+DPTR
     MOV 0EH,A
     MOV A,#3
     MOVC A,@A+DPTR
     MOV 0FH,A
     LCALL MUL1
     MOV C,1DH
     MOV 1FH,C
     LJMP MOV0
;***********************************************************
;(2) 标号: FTOB 功能:格式化浮点数转换成浮点BCD码
;入口条件:格式化浮点操作数在[R0]中。
;出口信息:转换成的浮点BCD码仍在[R0]中。
FTOB:
     INC R0
     MOV A,@R0                  ;H
     INC R0
     ORL A,@R0                  ;M
     INC R0
     ORL A,@R0                  ;L
     DEC R0
     DEC R0
     DEC R0
     JNZ FTB0
     MOV @R0,#41H
     RET
FTB0:
     MOV A,@R0
     MOV C,ACC.7
     MOV 1DH,C
     CLR ACC.7
     MOV @R0,A
     LCALL MVR0
     MOV DPTR,#BFL0
     MOV B,#0
     MOV A,R2
     JNB ACC.7,FTB1
     MOV DPTR,#BTFL
     MOV B,#0EDH
     ADD A,#16
     JNC FTB1
     MOV DPTR,#BFLN
     MOV B,#0FAH
FTB1:
     CLR A
     MOVC A,@A+DPTR
     MOV C,ACC.6
     MOV ACC.7,C
     MOV 0CH,A                  ;R4"
     MOV A,#1
     MOVC A,@A+DPTR
     MOV 0DH,A
     MOV A,#2
     MOVC A,@A+DPTR
     MOV 0EH,A
     MOV A,#3
     MOVC A,@A+DPTR
     MOV 0FH,A
     MOV A,0CH                  ;R4" JIE_MA
     CLR C
     SUBB A,R2                  ;
     JB ACC.7,FTB2
     JNZ FTB3
     MOV A,0DH                  ;0.R5"R6"R7"-0.R3R4R5
     CLR C
     SUBB A,R3
     JC FTB2
     JNZ FTB3
     MOV A,0EH                  ;R6"-R4;;;2002.6.18
     CLR C
     SUBB A,R4
     JC FTB2
     JNZ FTB3
     MOV 0AH,B
     INC 0AH
     MOV 0DH,#10H               ;0.100000
     MOV R6,#0
     MOV R7,#0
     SJMP FTB6
FTB2:
     INC DPTR
     INC DPTR
     INC DPTR
     INC DPTR                   ;4BYTE
     INC B
     SJMP FTB1;
FTB3:
     PUSH B
     CALL DIV3
FTB4:
     MOV A,R2
     JZ FTB5
     CLR C
     LCALL RR1
     SJMP FTB4
FTB5:
     POP 0AH
     LCALL HB2
     MOV 0DH,A;R5"
     LCALL HB2
     MOV R6,A
     LCALL HB2
     MOV R7,A
     MOV A,R3
     RLC A
     CLR A
     ADDC A,R7
     DA A
     MOV R7,A
     CLR A
     ADDC A,R6
     DA A
     MOV R6,A
     JNC FTB6
     MOV R6,#10H
     INC 0DH
FTB6:
     INC R0
     INC R0
     INC R0
     MOV A,R7
     MOV @R0,A
     DEC R0
     MOV A,R6
     MOV @R0,A
     DEC R0
     MOV A,0DH
     MOV @R0,A
     DEC R0
     MOV A,0AH
     MOV C,1DH
     MOV ACC.7,C
     MOV @R0,A
     RET
;*******************************
HB2:                            ;[R3R4R5*100]\10=>BCD1,2
     MOV A,R5
     MOV B,#100
     MUL AB
     MOV R5,A
     MOV A,B
     XCH A,R4
     MOV B,#100
     MUL AB
     ADD A,R4
     MOV R4,A
     MOV A,B
     ADDC A,#0
     XCH A ,R3
     MOV B,#100
     MUL AB
     ADD A,R3
     MOV R3,A
     MOV A,B
     ADDC A,#0
HB21:                           ;MOV A,B
     MOV B,#10
     DIV AB
     SWAP A
     ORL A,B
     RET
BTFL:
     DB 41H,0ECH,1EH ,4AH;10E-19
     DB 45H,93H,92H,0EFH;10E-18  
     DB 48H,0B8H,77H,0AAH;10E-17
     DB 4BH,0E6H,95H,95H;10E-16
     DB 4FH,90H,1DH ,7DH;10E-15
     DB 52H,0B4H,24H,0DCH;10E-14
     DB 55H,0E1H,2EH,13H;10E-13
     DB 59H,8CH,0BCH,0CCH;10E-12
     DB 5CH,0AFH,0EBH,0FFH;10E-11
     DB 5FH,0DBH,0E6H,0FFH;10E-10
     DB 63H,89H,70H ,5FH;10E-9
     DB 66H,0ABH,0CCH,77H;10E-8
     DB 69H,0D6H,0BFH,95H;10E-7
BFLN:
     DB 6DH,86H,37H ,0BDH;10E-6
     DB 70H,0A7H,0C5H,0ACH;10E-5
     DB 73H,0D1H,0B7H,17H;10E-4
     DB 77H,83H,12H ,6FH;10E-3
     DB 7AH,0A3H,0D7H,0AH;10E-2
     DB 7DH,0CCH,0CCH,0CDH;10E-1
BFL0:
     DB 1,80H,00H ,00H;10E0
     DB 4,0A0H,00H,00H;10E1
     DB 7,0C8H,00H,00H;10E2
     DB 0AH,0FAH,00H,00H;10E3
     DB 0EH,9CH,40H,00H;10E4
     DB 11H,0C3H,50H,00;10E5
     DB 14H,0F4H,24H,00H;10E6
     DB 18H,98H,96H,80H;10E7
     DB 1BH,0BEH,0BCH,20H;10E8
     DB 1EH,0EEH,6BH,28H;10E9
     DB 22H,95H,02H,0F9H;10E10
     DB 25H,0BAH,43H,0B7H;10E11
     DB 28H,0E8H,0D4H,0A5H;10E12
     DB 2CH,91H,84H,0E7H;10E13
     DB 2FH,0B5H,0E6H,20H;10E14
     DB 32H,0E3H,5FH,0A9H;10E15
     DB 36H,8EH,1BH,0CAH;10E16
     DB 39H,0C1H,0A2H,0CDH;10E17
     DB 3CH,0DEH,0BH,5BH;10E18
     DB 40H,8AH,0D7H,23H;10E19
;***********************************************************
;(3) 标号: FMUL 功能:浮点数乘法
;入口条件:被乘数在[R0]中,乘数在[R1]中。
;出口信息:OV=0时,积仍在[R0]中,OV=1时,溢出。
FMUL:
     LCALL MVR0
     MOV A,@R0
     XRL A,@R1
     RLC A
     MOV 1FH,C
     LCALL MUL0
     LJMP MOV0
MUL0:
     LCALL MVR1
     MOV 01H,02H
     MOV 02H,03H
     MOV 03H,04H
     MOV 04H,05H
;;**************8
MUL1:
;***********
     MOV A,R2                   ;;第一尾数为零否?
     ORL A,R3
     ORL A,R4
     JZ MUL6
     MOV A,0DH                  ;;第二尾数为零否?
     ORL A,0EH
     ORL A,0FH
     JZ MUL5                    ;计算R2R3R4×R5R6R7-→R2R3R4
;************
     MOV 08H,R0                 ;JIE_MA PIONT
     MOV 09H,R1                 ;JIE_MA
     MOV 01H,R2
     MOV 02H,R3
     MOV 03H,R4
;************
     MOV R0,#25                 ;右移相加25次
     CLR A
     MOV R6,A
     MOV R7,A                   ;ACC,R6,R7为部分积累加器
     CLR C
LOOP1:
     JNC M2
     CALL ADD0
     ADDC A,R1                  ;乘数移出位等于1 ,被乘数往部分积里加1次
M2:
     CALL SRA1
     XCH A,R5
     CPL RS0
     CALL SRA
     CPL RS0                    ;部分积带进位位整体右移1位
     DJNZ R0,LOOP1
     MOV R5,A
     JB  ACC.7,M3               ;;查积最高位
     MOV A,0DH
     RLC A
     CALL H0                    ;积最高位为0,积整体算术左移1位
     JNB  ACC.7,MUL3
     CALL INC3                  ;尾数截去部分四舍五入
     SJMP MUL3
M3:
     MOV A,0DH
     JNB ACC.7,MUL3             ;2002
     CALL INC3                  ;尾数截去部分四舍五入
MUL3:
     MOV R0,08H
     MOV 03H,R5
     MOV 04H,R6
     MOV 05H,R7
     MOV A,09H
     ADD A,0CH
MD:
     MOV R2,A
     JB ACC.7,MUL4
     JNB ACC.6,MUL6
     MOV R2,#3FH
     SETB OV
     RET
MUL4:
     JB ACC.6,MUL6
MUL5:
     CLR A
     MOV R5,A                   ;OUT R2.R3R4R5=FU(2)
     MOV R3,A
     MOV R4,A
     MOV R2,#41H
MUL6:
     CLR OV
     RET
;***********************************************************
;(4) 标号: FDIV 功能:浮点数除法
;入口条件:被除数在[R0]中,除数在[R1]中。
;出口信息:OV=0时,商仍在[R0]中,OV=1时,溢出。
FDIV:
     INC R0
     MOV A,@R0
     INC R0
     ORL A,@R0
     INC R0
     ORL A,@R0
     DEC R0
     DEC R0
     DEC R0
     JNZ DIV1
     MOV @R0,#41H
     CLR OV
     RET
DIV1:
     INC R1
     MOV A,@R1
     INC R1
     ORL A,@R1
     INC R1
     ORL A,@R1
     DEC R1
     DEC R1
     DEC R1
     JNZ DIV2
     SETB OV
     RET
DIV2:
     LCALL MVR0
     MOV A,@R0
     XRL A,@R1
     RLC A
     MOV 1FH,C
     LCALL MVR1
     LCALL DIV3
     LJMP MOV0
DIV3:
     CLR C                      ;R3R4R5-R5"R6"R7"
     MOV A,R5                   ;ASUBB A,0FH
     MOV A,R4
     SUBB A,0EH
     MOV A,R3
     SUBB A,0DH
     JC DIV4
     CALL RR1
     SJMP DIV3
DIV4:
     MOV 08H,R0
     MOV 09H,R1
     MOV 0AH,R2
     CLR A
     MOV R0,A
     MOV R1,A
     MOV R2,A
     MOV B,#24                  ;R3R4R5/R5"R6"R7"=>R0R1R2
DIV5:
     CLR C
     MOV A,R2
     RLC A
     MOV R2,A
     MOV A,R1
     RLC A
     MOV R1,A
     MOV A,R0
     RLC A
     MOV R0,A
     MOV A,R5
     RLC A
     MOV R5,A
     XCH A,R4
     RLC A
     XCH A,R4
     XCH A,R3
     RLC A
     XCH A,R3
     MOV F0,C
     CLR C
     SUBB A,0FH                 ;R7"
     MOV R7,A                   ;R7 TEMP
     MOV A,R4
     SUBB A,0EH
     MOV R6,A
     MOV A,R3
     SUBB A,0DH
     ANL C,/F0
     JC DIV6
     MOV R3,A
     MOV 05H,07H                ;R7
     MOV 04H,06H
     INC R2
DIV6:
     DJNZ B,DIV5
     MOV A,0DH
     CLR C
     RRC A
     SUBB A,R3
     CLR A
     ADDC A,R2
     MOV R5,A
     CLR A
     ADDC A,R1
     MOV R4,A
     CLR A
     ADDC A,R0
     MOV R3,A
     MOV R0,08H
     MOV R1,09H
     MOV R2,0AH
     MOV A,R2
     CLR C
     SUBB A,0CH
     LCALL MD
     LJMP RLN
;***********************************************************
;(7) 标号: FADD 功能:浮点数加法
;入口条件:被加数在[R0]中,加数在[R1]中。
;出口信息:OV=0时,和仍在[R0]中,OV=1时,溢出。
FADD:
     CLR F0                     ;设立加法标志
     SJMP AS                    ;计算代数和
;*******************************************************
;(8) 标号: FSUB 功能:浮点数减法
;入口条件:被减数在[R0]中,减数在[R1]中。
;出口信息:OV=0时,差仍在[R0]中,OV=1时,溢出。
FSUB:
     SETB F0
AS:
     LCALL MVR1
     MOV C,F0
     RRC A
     XRL A,@R1
     MOV C,ACC.7
ASN:
     MOV 1EH,C
     XRL A,@R0
     RLC A
     MOV F0,C
     LCALL MVR0
     LCALL AS1
MOV0:
     INC R0
     INC R0
     INC R0
     MOV A,R5
     MOV @R0,A
     DEC R0
     MOV A,R4
     MOV @R0,A
     DEC R0
     MOV A,R3
     MOV @R0,A
     DEC R0
     MOV A,R2
     MOV C,1FH
     MOV ACC.7,C
     MOV @R0,A
     CLR ACC.7
     CLR OV
     CJNE A,#3FH,MV01
     SETB OV
MV01:
     MOV A,@R0
     RET
MVR0:
     MOV A,@R0
     MOV C,ACC.7
     MOV 1FH,C
     MOV C,ACC.6
     MOV ACC.7,C
     MOV R2,A
     INC R0
     MOV A,@R0
     MOV R3,A
     INC R0
     MOV A,@R0
     MOV R4,A
     INC R0
     MOV A,@R0
     MOV R5,A
     DEC R0
     DEC R0
     DEC R0
     RET
MVR1:
     MOV A,@R1
     MOV C,ACC.7
     MOV 1EH,C
     MOV C,ACC.6
     MOV ACC.7,C
     MOV 0CH,A                  ;R4"
     INC R1
     MOV A,@R1
     MOV 0DH,A
     INC R1
     MO

⌨️ 快捷键说明

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