?? 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 + -