📄 zoujin.asm
字号:
SUBB A,#10
JC 2
MOV R5,#0
MOV A,R4
MOV B,#10
MUL AB
ADD A,R5
MOV R4,A
MOV A,B
ADDC A,#0
MOV R5,A
MOV A,R3
MOV B,#10
MUL AB
ADD A,R5
MOV R3,A
MOV A,B
ADDC A,#0
MOV R5,A
MOV A,R2
MOV B,#10
MUL AB
ADD A,R5
MOV R2,A
RET
;
DIV10: MOV A,R2 ; R2 R3 R4 / 10 ==> R2 R3 R4 ... A .
MOV B,#10
DIV AB
MOV R2,A
MOV R5,B ; R2 / 10 ==> R2 ... R5 .
;
MOV A,R3 ; R5 R3 / 10 ==> R3 ... R6 .
MOV B,#10 ; formula: R3 = R5*25 + (R5*6 + R3) / 10 .
DIV AB
MOV R3,A
MOV R6,B
MOV A,R5
MOV B,#6
MUL AB
ADD A,R6
MOV B,#10
DIV AB
ADD A,R3
MOV R3,A
MOV R6,B
MOV A,R5
MOV B,#25
MUL AB
ADD A,R3
MOV R3,A
;
MOV A,R4 ; R6 R4 / 10 ==> R4 ... R7 .
MOV B,#10 ; formula: R4 = R6*25 + (R6*6 + R4) / 10 .
DIV AB
MOV R4,A
MOV R5,B
MOV A,R6 ; R6 * 6 .
MOV B,#6
MUL AB
ADD A,R5
MOV B,#10
DIV AB
ADD A,R4
MOV R4,A
MOV R5,B
MOV A,R6 ; R6 * 25 .
MOV B,#25
MUL AB
ADD A,R4
MOV R4,A
MOV A,R5
RET
;
GADD1: MOV A,R2 ; R2 R3 R4 + R5 R6 R7 ==> R2 R3 R4 .
ANL A,#10000000B ; R2 R3 R4 sign is R2 (B7) .
MOV R0,A ; R5 R6 R7 sign is R5 (B7) .
MOV A,R2
ANL A,#7FH
MOV R2,A
MOV A,R5
ANL A,#10000000B
MOV R1,A
MOV A,R5
ANL A,#7FH
MOV R5,A
MOV A,R1
XRL A,R0
ANL A,#10000000B
JNZ ADD1L1
MOV A,R4 ; sign is same , ADD .
ADD A,R7
MOV R4,A
MOV A,R3
ADDC A,R6
MOV R3,A
MOV A,R2
ADDC A,R5
MOV R2,A
LJMP ADD1L2
ADD1L1: MOV A,R4 ; sign isn't same , SUBB .
CLR C
SUBB A,R7
MOV R4,A
MOV A,R3
SUBB A,R6
MOV R3,A
MOV A,R2
SUBB A,R5
MOV R2,A
JNC ADD1L2
MOV A,R1 ; R4 R5 R6 R7 < R1 R2 R3 .
MOV R0,A
MOV A,#0
CLR C
SUBB A,R4
MOV R4,A
MOV A,#0
SUBB A,R3
MOV R3,A
MOV A,#0
SUBB A,R2
MOV R2,A
ADD1L2: MOV A,R2
ANL A,#7FH
ORL A,R0
MOV R2,A
RET
;
; R2 R3 R4 / R0 ==> R2 R3 R4 .
DIVR0: NOP
MOV A,R0
JNZ 1
RET
MOV A,R2
ANL A,#80H
MOV R5,A
MOV A,R2
ANL A,#7FH
MOV R2,A
MOV R6,#24
MOV R1,#0
CLR C
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV A,R1
RLC A
MOV R1,A
DR0L1: MOV A,R1
CLR C
SUBB A,R0
JC DR0L2
MOV R1,A
DR0L2: CPL C
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV A,R1
RLC A
MOV R1,A
DJNZ R6,DR0L1
MOV A,R5
ORL A,R2
MOV R2,A
RET
;
;
SD232: JNB 13H,1
RET
LCALL TRT2
; LCALL S232
MOV 31H,#02H
MOV 32H,#00H
mov dptr,ds1225
mov p2,dph
mov r0,dpl
mov dptr,#sd232d
mov r2,#40h
sd2l1: nop
clr a
movc a,@a+dptr
movx @r0,a
inc dptr
inc r0
djnz r2,sd2l1
setb 16h
RET
sd232d: db 52h,53h,32h,33h,32h,20h,53h,65h,6eh,64h,69h,6eh,67h,20h,20h,20h
db 44h,61h 74h,61h,20h,74h,6fh,20h,43h,6fh,6dh,70h,75h,74h,65h,72h
db 20h,20h 20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h
db 50h,6ch 65h,61h,73h,65h,20h,57h,61h,69h,74h,20h,2eh,2eh,2eh,20h
;
s232: nop
mov dptr,#0200h
mov a,#41h
mov r2,#26
s232l: nop
movx @dptr,a
inc dptr
inc a
djnz r2,s232l
ret
;
RTS: JBC TI,TS1
JBC RI,TS20
RETI
TS1: JB 13H,TS2
RETI
TS2: CLR EA
CLR ES
PUSH PSW
PUSH DPH
PUSH DPL
PUSH A
MOV DPH,31H
MOV DPL,32H
MOVX A,@DPTR
INC DPTR
MOV 31H,DPH
MOV 32H,DPL
TS3: MOV C,P
MOV TB8,C
MOV SBUF,A
CLR C
SUBB A,#25H
JZ TS4
POP A
POP DPL
POP DPH
POP PSW
SETB ES
SETB EA
RETI
TS4: SETB 1AH
clr 13h
clr 16h
MOV 31H,#02H
MOV 32H,#00H
POP A
POP DPL
POP DPH
POP PSW
SETB ES
SETB EA
RETI
TS20: CLR EA
CLR ES
PUSH PSW
PUSH DPH
PUSH DPL
PUSH A
PUSH B
MOV A,SBUF
MOV B,A
jnb 16h,ts21
MOV DPTR,#00f3H
MOVX A,@DPTR
CLR C
SUBB A,B
JNZ TS21
MOV 31H,#02H
MOV 32H,#00H
MOV DPH,31H
MOV DPL,32H
MOVX A,@DPTR
INC DPTR
MOV 31H,DPH
MOV 32H,DPL
MOV C,P
MOV TB8,C
MOV SBUF,A
setb 13h
TS21: POP B
POP A
POP DPL
POP DPH
POP PSW
SETB ES
SETB EA
RETI
;
TRT2: MOV A,#0FDH ; baud rate 9600 .
TRT2L: MOV TMOD,#20H
MOV TH1,A
MOV TL1,A
SETB TR1
MOV SCON,#0D0H
MOV PCON,#00H
SETB ES
CLR TI
RET
;
; 整理显示缓区 .
movbuf: nop
; 整理第一行 .
mov dptr,ds1225
mov a,#8eh ; "车号" 后面的空格(车号14位) .
add a,dpl
mov dpl,a
mov a,#20h
movx @dptr,a
inc dptr
movx @dptr,a
; 整理第二行 .
mov dptr,ds1225
mov a,#9ah ; "轴号" 后面的空格(轴号10位) .
add a,dpl
mov dpl,a
mov a,#20h
movx @dptr,a
inc dptr ; "厂代号" 后面的空格(厂代号4位) .
inc dptr
inc dptr
inc dptr
inc dptr
movx @dptr,a
; 整理第三行 .
mov dptr,ds1225
mov a,#0c9h ; "轴型" 后面的空格(轴型4位) .
add a,dpl ; 初始化显示 "RD2" 轴型 .
mov dpl,a
mov a,#1
movx @dptr,a
;
clr 18h ; 初始化 "新/旧" 为新 .
clr 19h ; 初始化 "左/右" 为左 .
;
mov dptr,ds1225 ; 初始化"人名"为"0" .
mov A,#0cbh
add a,dpl
mov dpl,a
mov a,#0
movx @dptr,a
;
mov dptr,ds1225 ; 初始化"检测截面" 为第1个截面 .
mov A,#0c8h
add a,dpl
mov dpl,a
mov a,#1
movx @dptr,a
mov dptr,ds1225 ; 初始化"截面上检测点" 为第1点 .
mov A,#0cah
add a,dpl
mov dpl,a
mov a,#1
movx @dptr,a
;
ret
;
; 取字母子程序 .
takeAZ: nop
mov dptr,ds1225
mov a,#20h
add a,dpl
add a,46h
clr c
subb a,#1
mov dpl,a
movx a,@dptr
ret
;
; 转换编程值 .
trapg: nop
mov r0,a
mov dptr,ds1225
mov a,#18h ; 取编程点号 .
add a,dpl
mov dpl,a
mov a,r0
movx @dptr,a
clr c
subb a,#31h
mov r1,a
mov dptr,ds1225
mov a,#0f0h
add a,r1
add a,dpl
mov dpl,a
movx a,@dptr
mov r1,a
mov dptr,ds1225
mov a,#28h
add a,dpl
mov dpl,a
mov a,r1
clr c
subb a,#100
jnc trpgl1
mov a,#20h
movx @dptr,a
inc dptr
mov a,r1
clr c
subb a,#10
jnc trpgl2
mov a,#20h
movx @dptr,a
inc dptr
sjmp trpgl3
trpgl1: nop
mov a,r1
mov b,#100
div ab
add a,#30h
movx @dptr,a
inc dptr
mov r1,b
trpgl2: nop
mov a,r1
mov b,#10
div ab
add a,#30h
movx @dptr,a
inc dptr
mov r1,b
trpgl3: nop
mov a,r1
add a,#30h
movx @dptr,a
ret
;
; 查看数据时, 显示数据 .
check: nop
mov dptr,ds1225
mov p2,dph
mov r0,dpl
mov r2,#40h
chel1: nop
mov a,#20h
movx @r0,a
inc r0
djnz r2,chel1
; 显示第四行: ***-PAGE1(2) LOOK .
mov dptr,ds1225
mov p2,dph
mov a,#30h
add a,dpl
mov r0,a
mov a,46h
mov b,#100
div ab
add a,#30h
movx @r0,a
inc r0
mov a,b
mov b,#10
div ab
add a,#30h
movx @r0,a
inc r0
mov a,b
add a,#30h
movx @r0,a
inc r0
mov a,#2dh
movx @r0,a
inc r0
mov a,#50h ; P
movx @r0,a
inc r0
mov a,#41h ; A
movx @r0,a
inc r0
mov a,#47h ; G
movx @r0,a
inc r0
mov a,#45h ; E
movx @r0,a
inc r0
mov a,48h
add a,#30h
movx @r0,a
inc r0
;
mov dptr,ds1225
mov p2,dph
mov a,#3ch
add a,dpl
mov r0,a
mov a,#4ch ; L .
movx @r0,a
inc r0
mov a,#4fh ; O .
movx @r0,a
inc r0
mov a,#4fh ; O .
movx @r0,a
inc r0
mov a,#4bh ; K .
movx @r0,a
mov dptr,ds1225
mov p2,dph
mov r0,dpl
;
mov dptr,ds1225
mov a,#02h
add a,dph
mov dph,a
mov a,46h
clr c
subb a,#1
jnz chel2
ljmp chel3
chel2: nop
mov r2,a
chel21: nop
push dph
push dpl
inc dptr
inc dptr
movx a,@dptr
mov r3,a
pop dpl
pop dph
mov a,r3
cjne a,#33h,chel22
mov r4,#118 ; 客车轴径118个字符 .
sjmp chel25
chel22: nop
cjne a,#32h,chel23
mov r4,#70 ; 防尘板座70个字符 .
sjmp chel25
chel23: nop
mov r4,#94 ; 货车轴径94个字符 .
chel25: nop
mov a,r4
add a,dpl
mov dpl,a
mov a,dph
addc a,#0
mov dph,a
djnz r2,chel21
; 找到当前数组位置, 送B** .
chel3: nop
push dph
push dpl
mov dptr,ds1225
mov p2,dph
mov r0,dpl
pop dpl
pop dph
;
chel4: nop
mov a,48h
cjne a,#1,chel5
; 送车号等第一页显示数据 .
; 送车号 .
inc dptr
inc dptr
inc dptr
inc dptr
mov r2,#15
chel41: nop
movx a,@dptr
movx @r0,a
inc dptr
inc r0
djnz r2,chel41
inc r0
; 送轴号, 厂号 .
mov r2,#16
chel42: nop
movx a,@dptr
movx @r0,a
inc dptr
inc r0
djnz r2,chel42
; 送轴型, 新旧, 左右, 人名 .
mov r2,#11
chel43: nop
movx a,@dptr
movx @r0,a
inc dptr
inc r0
djnz r2,chel43
ret
; 显示第二页数据 .
chel5: nop
inc dptr
inc dptr
movx a,@dptr
mov r5,a
mov a,#44
add a,dpl
mov dpl,a
mov a,#0
addc a,dph
mov dph,a
mov a,r5
cjne a,#33h,chel51
; 客车 : 三组数 .
lcall ddata ; 显示一行平均值, 圆度 .
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -