📄 zj1.asm
字号:
SETB 00H
CLR 01H
MOV B,#38H
MOV R2,#8
PUSH A
LCALL SCGCL
POP A
MOV B,#3BH
LCALL SCGRAM
RET
K09L51: JB 01H,K09L52
MOV B,#3AH
MOV R2,#2
LCALL LMOVE
RET
K09L52: MOV R4,A
MOV A,4FH
JNZ 1
RET
MOV A,#40H
CLR C
SUBB A,4FH
MOV B,A
MOV A,R4
LCALL SCGRAM
DEC 4FH
RET
; 设置计数系数 .
k09l6: nop
push a
mov dptr,ds1225
mov r1,#28h
mov r2,#3
mov r3,#2
mov a,23h
anl a,#00111000b
jnz k09l62
mov r2,#5
mov r3,#4
mov r1,#28h
jb 15h,k09l62
mov r1,#18h
k09l62: nop
mov a,r1
add a,dpl
mov dpl,a
jb 00h,k09l63
setb 00h
push dph
push dpl
mov a,r3
push a
mov b,r1
lcall scgcl
pop a
mov r3,a
pop dpl
pop dph
k09l63: nop
mov a,r1
add a,#1
mov b,a
mov a,r3
mov r2,a
pop a
lcall lmove
ret
;
; ( "." "上箭头" "保存测量值" ) 三个功能键值 .
;
KEYPT: nop
jnb 14h,1
ret
mov a,20h
anl a,#00011000b
jz 1
ret
jnb 09h,1
ret
jb 0bh,3
ljmp kptl2
; 查看数据 "上箭头" 功能 .
kptl1: nop
mov a,46h
cjne a,#1,kptl11
mov a,48h
cjne a,#1,kptl11
ret ; 数据起始位置 .
kptl11: nop
mov a,48h
cjne a,#1,kptl12
ljmp kptl13
kptl12: nop
dec 48h
ljmp kptl16
kptl13: nop
dec 46h
mov 48h,#1
kptl16: nop
lcall check ; 查看数据时, 显示数据 .
ret
;
kptl2: nop
jb 00h,3
ljmp kptl3
; "." 功能 .
JNB 01H,1
RET
SETB 01H
MOV A,#2EH
MOV B,#3CH
LCALL SCGRAM
MOV A,#3
MOV 4FH,A
RET
; "保存测量值" 功能 .
kptl3: nop
; 计算当前截面在缓区的位置 .
; 截面 * 24 + 第几点 * 8 = 位置 .
mov dptr,ds1225
mov a,#0c8h
add a,dpl
mov dpl,a
movx a,@dptr
clr c
subb a,#1
mov b,#24
mul ab
mov r4,a
mov dptr,ds1225
mov a,#0cah
add a,dpl
mov dpl,a
movx a,@dptr
mov b,#8
clr c
subb a,#1
mul ab
add a,r4
mov r4,a
mov dptr,ds1225
mov a,#01h
add a,dph
mov p2,a
mov a,r4
add a,dpl
mov r0,a
mov dptr,ds1225
mov a,#39h
add a,dpl
mov dpl,a
mov r2,#7
kptl31: nop
movx a,@dptr
movx @r0,a
inc dptr
inc r0
djnz r2,kptl31
mov dptr,ds1225
mov a,#0cah
add a,dpl
mov dpl,a
movx a,@dptr
add a,#1
movx @dptr,a
clr c
subb a,#4
jnc 1
ret
mov a,#1
movx @dptr,a
ret
;
; ( "+/-" "存贮一组测量值" ) 两种功能键值 .
;
KEYID: nop
jnb 14h,1
ret
mov a,20h
anl a,#00011000b
jz 1
ret
jnb 09h,1
ret
jnb 0bh,1
ret
jb 00h,3
ljmp kidl2
; "+/-" 功能 .
MOV B,#38H
LCALL RCGRAM
CJNE A,#2DH,KIDL11
MOV A,#2BH ; + sign .
SJMP KIDL12
KIDL11: MOV A,#2DH ; - sign .
KIDL12: MOV B,#38H
LCALL SCGRAM
RET
; "存贮一组测量值" 功能 .
kidl2: nop
; 找到存储数据的位置 .
mov dptr,ds1225 ; 每一组数据格式为:
mov a,#0f0h ; B** ********** **** **** * * 数据
add a,dpl ; |----------- 29个 ------------|
mov dpl,a
movx a,@dptr
mov r2,a
mov dptr,ds1225
mov a,#02h
add a,dph
mov dph,a
mov a,r2
jnz kidl21
ljmp kidl3
kidl21: 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,kidl22
mov r4,kzhc ; 客车轴径101个字符 .
sjmp kidl25
kidl22: nop
cjne a,#32h,kidl23
mov r4,fzhc ; 防尘板座53个字符 .
sjmp kidl25
kidl23: nop
mov r4,hzhc ; 货车轴径77个字符 .
kidl25: nop
mov a,r4
add a,dpl
mov dpl,a
mov a,dph
addc a,#0
mov dph,a
djnz r2,kidl21
kidl3: nop
; 判别缓区是否满 ?
mov a,dpl
clr c
subb a,#080h
mov a,dph
subb a,#1fh
jc kidl30
setb 0eh
ret
kidl30: nop
mov a,#42h ; 存贮第一个字符 "B" .
movx @dptr,a
;
inc dptr
mov a,#31h ; 存贮分机号 ( 11, 12, 13) .
movx @dptr,a
inc dptr
push dph
push dpl
mov dptr,ds1225
mov a,#0f3h
add a,dpl
mov dpl,a
movx a,@dptr
mov r4,a
cjne a,#13,kidl31
mov r3,#33h
mov r5,#71
sjmp kidl33
kidl31: nop
cjne a,#12,kidl32
mov r3,#32h
mov r5,#23
sjmp kidl33
kidl32: nop
mov r3,#31h
mov r5,#47
kidl33: nop
pop dpl
pop dph
mov a,r3
movx @dptr,a
inc dptr
mov a,#20h
movx @dptr,a
inc dptr
;
kidl4: nop ; 存贮轴号,厂代号 (16 个字符) .
push dph ; (********** **** ) .
push dpl
mov dptr,ds1225
mov p2,dph
mov a,#10h
add a,dpl
mov r0,a
pop dpl
pop dph
mov r2,#16
kidl41: nop
movx a,@r0
movx @dptr,a
inc dptr
inc r0
djnz r2,kidl41
inc r0
;
mov r2,#9 ; 存贮轴型,新/旧,左/右 (9 个字符) .
kidl42: nop ; (**** * * ) .
movx a,@r0
movx @dptr,a
inc dptr
inc r0
djnz r2,kidl42
;
kidl5: nop ; 存贮数据 :
push dph ; 客车轴径(13) -- 9组*8-1=71个字符 .
push dpl ; 货车轴径(11) -- 6组*8-1=47个字符 .
mov dptr,ds1225 ; 防尘板座(12) -- 3组*8-1=23个字符 .
mov a,#01h ; 每一组数: (***.*** ).
add a,dph
mov p2,a
mov r0,dpl
pop dpl
pop dph
mov a,r5
mov r2,a
kidl51: nop
movx a,@r0
movx @dptr,a
inc dptr
inc r0
djnz r2,kidl51
; 每一组数据结束符 ";" , 全部数据结束符 "%" .
mov a,#3bh ; ";" .
movx @dptr,a
inc dptr
mov a,mkend ; "%" .
movx @dptr,a
;
kidl6: nop
mov dptr,ds1225
mov a,#0f0h
add a,dpl
mov dpl,a
movx a,@dptr
inc a
movx @dptr,a
lcall clrbuf
jb 20h,3
ljmp kidl9
; 反向测量: 将下一个测量参数调出, 左右变反 .
mov a,3dh
jnz 3
ljmp kidl61
clr c
subb a,#1
mov 3dh,a
jnz kidl62
kidl61: nop
clr 20h
ljmp kidl9
kidl62: nop
lcall seach
lcall bmove
; lcall smove
kidl9: nop
ret
;
; "认可" 键 .
;
keyent: nop
jnb 14h,3
ljmp kenl9 ; 设置计数系数 .
jnb 0bh,3
ljmp kenl7
; 输入轴号 .
KENL2: nop
jnb 03h,kenl3
jb 08h,3
ljmp kenl8
jnb 06h,kenl22
lcall takeaz ; 字符输入 .
MOV B,#11h
MOV R2,#9
LCALL LMOVE
lcall resb2 ; 恢复显示缓区下半部分 .
clr 06h
RET
kenl22: nop
mov dptr,ds1225
mov p2,dph
mov a,#10h
add a,dpl
mov dpl,a
mov r0,dpl
mov a,#80h
add a,dpl
mov r1,a
MOV R2,#10
KENL21: MOVX A,@R0
MOVX @R1,A
INC R0
INC R1
DJNZ R2,KENL21
LJMP KEND
; 输入厂代号 .
KENL3: nop
jnb 04h,kenl5
jb 08h,3
ljmp kenl8
jnb 06h,kenl32
lcall takeaz ; 字符输入 .
MOV B,#1ch
MOV R2,#3
LCALL LMOVE
lcall resb2 ; 恢复显示缓区下半部分 .
clr 06h
RET
kenl32: nop
mov dptr,ds1225
mov p2,dph
mov a,#1bh
add a,dpl
mov dpl,a
mov r0,dpl
mov a,#80h
add a,dpl
mov r1,a
MOV R2,#4
KENL31: MOVX A,@R0
MOVX @R1,A
INC R0
INC R1
DJNZ R2,KENL31
LJMP KEND
; 数据输入 .
kenl5: nop
jnb 09h,3 ; 删除状态 .
ljmp kenl6
jb 00h,3
ljmp kend
LCALL TRWTD
; 判别锁定 ?
mov dptr,ds1225
mov a,#0f1h
add a,dpl
mov dpl,a
movx a,@dptr
jz kenl51
ljmp kend
kenl51: nop
mov a,43h
anl a,#7fh
mov r5,a
mov a,43h
cpl a
anl a,#80h
orl a,r5
mov r5,a
mov r6,44h
mov r7,45h
lcall gadd1
MOV 40H,R2
MOV 41H,R3
MOV 42H,R4
ljmp kend
; 删除功能 .
kenl6: nop
jb 0ah,3
ljmp kenl69 ; 无数据输入时, 退出 .
jnb 0fh,3
ljmp kenl62
; 输入删除数据的起始位置 .
mov dptr,ds1225
mov a,#18h
add a,dpl
mov dpl,a
mov r1,#3
lcall strwtd
mov a,r4
jnz 2
mov a,#1
mov 30h,a
mov dptr,ds1225 ; 判别起始位置 > 数据总数 ?
mov a,#0f0h
add a,dpl
mov dpl,a
movx a,@dptr
clr c
subb a,30h
jnc 3
ljmp kenl69
setb 0fh
clr 0ah
ret
; 输入删除数据的终止位置 .
kenl62: nop
jb 0ah,3
ljmp kenl69 ; 无数据输入时, 退出 .
mov dptr,ds1225
mov a,#28h
add a,dpl
mov dpl,a
mov r1,#3
lcall strwtd
mov a,r4
mov 2fh,a
clr c
subb a,30h
jnc 3
ljmp kenl69 ; 起始位置大于终止位置, 退出 .
; 判别终止位置是否 > 数据总数 ?
mov dptr,ds1225
mov a,#0f0h
add a,dpl
mov dpl,a
movx a,@dptr
mov r3,a
mov a,r4
clr c
subb a,r3
jc kenl63
; 终止位置 >= 数据总数 .
mov dptr,ds1225
mov a,#0f0h
add a,dpl
mov dpl,a
dec 30h
mov a,30h
movx @dptr,a
lcall seach
add a,dpl
mov dpl,a
mov a,dph
addc a,#0
mov dph,a
mov a,mkend ; 结束字符 "%" .
movx @dptr,a
ljmp kenl69
; 起始位置, 终止位置 < 数据总数 .
; 将终止位置的下一个数据及后面的数据移动到起始位置 .
kenl63: nop
mov a,30h ; 起始位置地址==> 34H 35H, 位置==> 33H .
lcall seach
mov 33h,a
mov 34h,dph
mov 35h,dpl
mov a,2fh ; 终止位置下一个地址==> 37H 38H, 位置==> 36H .
add a,#1
lcall seach
mov 36h,a
mov 37h,dph
mov 38h,dpl
kenl65: nop
mov dph,37h
mov dpl,38h
movx a,@dptr
inc dptr
mov 37h,dph
mov 38h,dpl
mov dph,34h
mov dpl,35h
movx @dptr,a
inc dptr
mov 34h,dph
mov 35h,dpl
cjne a,mkend,kenl65
mov a,2fh
clr c
subb a,30h
add a,#1
mov r4,a
mov dptr,ds1225
mov a,#0f0h
add a,dpl
mov dpl,a
movx a,@dptr
clr c
subb a,r4
movx @dptr,a
;
; setb 20h
kenl69: nop
clr 09h
clr 0ah
clr 0fh
lcall smove
mov a,#1
lcall dispp
ret
; 将查看数据编号的车号等送入缓区 .
kenl7: nop
; 找到存储数据的位置 .
mov dptr,ds1225
mov a,#02h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -