?? 電動卷尺貼片段碼控制程序.asm
字號:
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 + -