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

📄 zj1.asm

📁 仪器类
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        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 + -