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

📄 zoujin.asm

📁 工业仪器仪表汇编软件
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        ORG 0000H
        LJMP MAIN
        ORG 000BH
        reti
        ORG 001BH
        reti
        ORG 0023H
        LJMP RTS
ad7109h equ #04000h
ad7109l equ #02000h
ds1225  equ #0000h
ed1604c equ #8000h
ed1604d equ #8001h
ed1lad  equ #80h
ed2lad  equ #0c0h
ed3lad  equ #90h
ed4lad  equ #0d0h
;
;                       键   值   表 .
;
        ORG 0028H
        DB 62H          ; 0 键值 .
        DB 52H          ; 1 键值 .
        DB 53H          ; 2 键值 .
        DB 54H          ; 3 键值 .
        DB 42H          ; 4 键值 .
        DB 43H          ; 5 键值 .
        DB 44H          ; 6 键值 .
        DB 32H          ; 7 键值 .
        DB 33H          ; 8 键值 .
        DB 34H          ; 9 键值 .
        DB 63H          ; ( "."  "上箭头"  "保存测量值" )  三个功能键值 .
        DB 64H          ; ( "+/-"  "存贮一组测量值" )  两种功能键值 .
        DB 31H          ; "认可" 键值  .
        DB 41H          ; "截面" 键值  .
        DB 51H          ; "车号" 键值  .
        DB 61H          ; "轴号" 键值  .
        DB 21H          ; "厂号" 键值  .
        DB 22H          ; ( "左/右" "左箭头" ) 两种功能键值  .
        DB 23H          ; ( "字母" "查看数据" ) 两种功能键值  .
        DB 24H          ; ( "编程" "右箭头" ) 两种功能键值  .
        DB 11H          ; "人名" 键值  .
        DB 12H          ; "新/旧" "  键值 .
        DB 13H          ; ( "轴型" "下箭头" )  两种功能键值  .
        DB 14H          ; "发送" 键值  .
;
;
;                       各  个  键  处  理  子  程  序 .
;
        ORG 0100H
KEY:    LJMP KEY0       ; 0 键值 .
        LJMP KEY1       ; 1 键值 .
        LJMP KEY2       ; 2 键值 .
        LJMP KEY3       ; 3 键值 .
        LJMP KEY4       ; 4 键值 .
        LJMP KEY5       ; 5 键值 .
        LJMP KEY6       ; 6 键值 .
        LJMP KEY7       ; 7 键值 .
        LJMP KEY8       ; 8 键值 .
        LJMP KEY9       ; 9 键值 .
        LJMP KEYPT      ; ( "."  "上箭头"  "保存测量值" )  三个功能键值 .
        LJMP KEYID      ; ( "+/-"  "存贮一组测量值" )  两种功能键值 .
        LJMP KEYENT     ; "认可" 键值  .
        LJMP KEYJM      ; "截面" 键值  .
        LJMP KEYCH      ; "车号" 键值  .
        LJMP KEYAH      ; "轴号" 键值  .
        LJMP KEYPH      ; "厂号" 键值  .
        LJMP KEYLR      ; ( "左/右" "左箭头" ) 两种功能键值  .
        LJMP KEYAZ      ; ( "字母" "查看数据" ) 两种功能键值  .
        LJMP KEYPRG     ; ( "编程" "右箭头" ) 两种功能键值  .
        LJMP KEYNM      ; "人名" 键值  .
        LJMP KEYNO      ; "新/旧" "  键值 .
        LJMP KEYAX      ; ( "轴型" "下箭头" )  两种功能键值  .
        LJMP KEYSD      ; "发送" 键值  .
;
;               主    程    序
;
        ORG 0200H
MAIN:   MOV SP,#50H
        mov r2,#5
mal:    lcall delay
        djnz r2,mal
        MOV DPTR,ed1604c
;                       ED-D16025AR display clear screen .
        MOV A,#01H
        MOVX @DPTR,A
        LCALL M_BUSY
;                       set function : data long is 8 , 2 line ,5*7 point.
        MOV A,#38H
        MOVX @DPTR,A
        LCALL M_BUSY
;                       display ON/OFF control : display ON, no display
;                         cursor , letter no flash .
        MOV A,#0CH
        MOVX @DPTR,A
        LCALL M_BUSY
;                       set input model : adress is increment ,screen
;                                         no move .
        MOV A,#06H
        MOVX @DPTR,A
        LCALL M_BUSY
;                       set data store adress 00H (first line) .
;                       display first line .
        MOV A,ed1lad
        MOVX @DPTR,A
        LCALL M_BUSY
;                       set data store adress 40H (second line) .
        MOV DPTR,ed1604c
        MOV A,ed2lad
        MOVX @DPTR,A
        LCALL M_BUSY
;                       set data store adress 10H (third line) .
        MOV DPTR,ed1604c
        MOV A,ed3lad
        MOVX @DPTR,A
        LCALL M_BUSY
;                       set data store adress 50H (forth line) .
        MOV DPTR,ed1604c
        MOV A,ed4lad
        MOVX @DPTR,A
        LCALL M_BUSY
;
        MOV R0,#10H
        MOV R2,#40H
        CLR A
MAL0:   MOV @R0,A
        INC R0
        DJNZ R2,MAL0
        MOV DPTR,ds1225
        MOV R2,#80h
MAL1:   nop
        mov a,#20h
        MOVX @dptr,a
        INC DPTR
        DJNZ R2,MAL1
;
        MOV DPTR,ds1225
        mov p2,dph
        mov r0,dpl
        mov DPTR,#DISP0
        MOV R2,#40h
MAL2:   nop
        CLR A
        MOVC A,@A+DPTR
        MOVX @R0,A
        INC DPTR
        INC R0
        DJNZ R2,MAL2
        lcall mdisp
;
        setb 11h
        clr 12h
        MOV R7,#2
        MOV R6,#199
DELAY1: MOV R5,#0
delay3: nop
        mov a,r5
        push a
        mov a,r6
        push a
        mov a,r7
        push a
        lcall debkey
        jnb 12h,delay4
        clr 12h
        mov r1,a
        mov a,33h
        clr c
        subb a,#4
        jnc delay4
        mov a,33h
        add a,#34h
        mov r0,a
        mov a,r1
        add a,#30h
        mov @r0,a
        inc 33h
delay4: nop
        pop a
        mov r7,a
        pop a
        mov r6,a
        pop a
        mov r5,a
        DJNZ R5,DELAY3
        DJNZ R6,DELAY1
;       DJNZ R7,DELAY2
        clr 11h
        setb 14h
        clr 15h
        lcall setcod            ; 设置计数系数加密程序 .
        clr 14h
        mov 33h,#0
        mov 34h,#0
        mov 35h,#0
        mov 36h,#0
        mov 37h,#0
;
        lcall movbuf            ; 整理显示缓区 .
        lcall smove
        lcall clrbuf            ; 将中间缓区填成空格 .
;
        LCALL TRT2
MLOOP:  nop
        lcall mdisp
        lcall debkey
        lcall count
        lcall mtran
        sjmp mloop
;
DeLAY:  push a
        mov a,r5
        push a
        mov a,r6
        push a
        mov r5,#60
        mov r6,#0feh
layll:  nop
        djnz r6,layll
        djnz r5,layll
        pop a
        mov r6,a
        pop a
        mov r5,a
        pop a
        ret
;
MDIsp:  nop
        mov dptr,ds1225
        mov p2,dph
        MOV R0,dpl
        mov a,#40h
        add a,dpl
        mov r1,a
        MOV R2,#40H
        mov r4,#0
dispL1: MOVX A,@R0
        MOV 49H,A
        MOVX A,@R1
        CJNE A,49H,displ2
        SJMP dispL3
displ2: MOV DPTR,ed1604c
        MOV A,#02H
        MOVX @DPTR,A
        LCALL M_BUSY
        MOV A,R2
        CLR C
        SUBB A,#31H
        JNC dspl21
        MOV A,R2
        CLR C
        SUBB A,#21H
        JNC dspl22
        MOV A,R2
        CLR C
        SUBB A,#11H
        JNC dspl23
        sjmp dspl24
dspl21: nop
        mov r3,ed1lad
        sjmp dspl25
dspl22: nop
        mov r3,ed2lad
        sjmp dspl25
dspl23: nop
        mov r3,ed3lad
        sjmp dspl25
dspl24: nop
        mov r3,ed4lad
dspl25: nop
        MOV A,R4
        anl A,#0fH
        add a,r3
        MOVX @DPTR,A
        LCALL M_BUSY
        MOV A,49H
        MOVX @R1,A
        MOV DPTR,ed1604d
        MOVX @DPTR,A
        LCALL M_BUSY
displ3: INC R0
        INC R1
        inc r4
        DJNZ R2,displ1
;       ret
;                       光标输入时闪烁 .
dspl4:  nop
        jnb 14h,dsp415          ; 设定计数系数闪烁 .
        mov b,#4ch
        jnb 15h,dsp411
        mov b,#1ch
dsp411: nop
        sjmp dspl6
dsp415: nop
        jnb 06h,dspl40          ; 字母输入闪烁 .
        mov a,46h
        clr c
        subb a,#11h
        jc dspl35
        add a,#50h
        sjmp dspl36
dspl35: nop
        mov a,46h
        clr c
        subb a,#1
        add a,#10h
dspl36: mov b,a
        SJMP dspl6
dspl40: nop
        JNB 09H,dspl41          ; 编程输入闪烁 .
        MOV B,#1aH
        SJMP dspl6
dspl41: nop
        JNB 02H,dspl42          ; 车号输入闪烁 .
        MOV B,#0dH
        SJMP dspl6
dspl42: nop
        JNB 03H,dspl43          ; 轴号输入闪烁 .
        MOV B,#49H
        SJMP dspl6
dspl43: nop
        JNB 04H,dspl44          ; 厂代号输入闪烁 .
        MOV B,#4eH
        SJMP dspl6
dspl44: nop
        jnb 00h,dspl46          ; 数据输入闪烁 .
        JB 01H,dspl45
        MOV B,#5BH
        SJMP dspl6
dspl45: nop
        MOV A,#5FH
        CLR C
        SUBB A,4FH
        MOV B,A
        SJMP dspl6
dspl46: nop
        ljmp dspl5
dspl5:  nop                     ; 去掉闪烁功能 .
        JB 0dH,1
        RET
        CLR 0dH
        MOV DPTR,ed1604c
        MOV A,#0CH
        MOVX @DPTR,A
        LCALL M_BUSY
        RET
dspl6:  MOV DPTR,ed1604c
        MOV A,#0DH
        MOVX @DPTR,A
        LCALL M_BUSY
        MOV A,B
        ORL A,#80H
        MOV DPTR,ed1604c
        MOVX @DPTR,A
        LCALL M_BUSY
        SETB 0dH
        RET
;
DEBKEY: nop
        mov a,p1
        anl a,#0f0h
        mov p1,a
        MOV A,P1
        CPL A
        ANL A,#0F0H
        mov r0,a
        mov a,p3
        cpl a
        anl a,#0ch
        orl a,r0
        rr a
        rr a
        anl a,#3fh
        jnz debkl1
        MOV 4DH,#00H
        MOV 4CH,#00H
        MOV 4BH,#2
        RET
debkl1: MOV R6,A
        MOV R2,#0FEH
        MOV R4,#1
debkl2: nop
        MOV A,R2
        MOV p1,A
        MOV A,P1
        CPL A
        ANL A,#0F0H
        mov r0,a
        mov a,p3
        cpl a
        anl a,#0ch
        orl a,r0
        rr a
        rr a
        anl a,#3fh
        JNZ debkl4
        INC R4
        MOV A,R2
        JNB ACC.4,debkl4
        RL A
        MOV R2,A
        SJMP debkl2
debkl3: nop
        ret
debkl4: MOV A,R6
        jnb acc.0,dbl41
        mov r0,#1
        sjmp dbl48
dbl41:  nop
        jnb acc.1,dbl42
        mov r0,#2
        sjmp dbl48
dbl42:  nop
        jnb acc.2,dbl43
        mov r0,#3
        sjmp dbl48
dbl43:  nop
        jnb acc.3,dbl44
        mov r0,#4
        sjmp dbl48
dbl44:  nop
        jnb acc.4,dbl45
        mov r0,#5
        sjmp dbl48
dbl45:  nop
        mov r0,#6
dbl48:  nop
        sjmp dbl49
;       mov a,r0
;       add a,#30h
;       mov r0,a
;       mov a,r4
;       add a,#30h
;       mov r1,a
        MOV DPTR,ds1225
        mov a,#17h
        add a,dpl
        mov dpl,a
        MOV A,#20H
        MOVX @DPTR,A
        INC DPTR
        MOV A,R0
        MOVX @DPTR,A
        INC DPTR
        MOV A,R1
        MOVX @DPTR,A
        INC DPTR
        MOV A,#20H
        MOVX @DPTR,A
        RET
;
dbl49:  mov a,r0
        swap a
        anl a,#0f0h
        ADD A,R4
        MOV 4EH,A
;
        CJNE A,4DH,debkl5
        MOV A,4BH
        JZ debkl6
        DEC 4BH
        RET
debkl5: MOV 4DH,A
        MOV 4CH,#00H
        MOV 4BH,#2
        RET
debkl6: MOV 4BH,#2
        MOV A,4DH
        CJNE A,4CH,debkl7
        RET
debkl7: nop
;                       测试键值: 将下面一行的分号改成空格, 直接跳转dbkL3 .
;       lJMP dbkL3
;
        MOV 4CH,A
        MOV DPTR,#0028H
        MOV R2,#24              ; 24 key .
        MOV R0,A
dbkl1:  MOV A,#00H
        MOVC A,@A+DPTR
        INC DPTR
        CLR C
        SUBB A,4CH
        JZ dbkL2
        DJNZ R2,dbkL1
        RET
dbkL2:  MOV A,#24
        CLR C
        SUBB A,R2
        MOV R0,#0
        MOV DPTR,#KEY
        MOV R7,A
        jnb 11h,3
        ljmp dbkl6
        ADD A,A
        ADD A,R7
        JMP @A+DPTR
;
dbkL3:  nop
        clr c
        SUBB A,#10
        JC dbkl4
        INC R0
        SJMP dbkL3
dbkL4:  ADD A,#10
        MOV R1,A
        MOV DPTR,ds1225
        mov a,#17h
        add a,dpl
        mov dpl,a
        MOV A,#20H
        MOVX @DPTR,A
        INC DPTR
        MOV A,R0
        ADD A,#30H
        MOVX @DPTR,A
        INC DPTR
        MOV A,R1
        ADD A,#30H
        MOVX @DPTR,A
        INC DPTR
        MOV A,#20H
        MOVX @DPTR,A
        RET
;
dbkl6:  nop                     ; 输入密码状态 .
        setb 12h
        ret
;
KEY0:   MOV A,#30H
        SJMP KEY09L
KEY1:   MOV A,#31H
        SJMP KEY09L
KEY2:   MOV A,#32H
        SJMP KEY09L
KEY3:   MOV A,#33H
        SJMP KEY09L
KEY4:   MOV A,#34H
        SJMP KEY09L
KEY5:   MOV A,#35H
        SJMP KEY09L
KEY6:   MOV A,#36H
        SJMP KEY09L
KEY7:   MOV A,#37H
        SJMP KEY09L
KEY8:   MOV A,#38H
        SJMP KEY09L
KEY9:   MOV A,#39H
KEY09L: nop
        jnb 14h,3
        ljmp k09l6              ; 设置计数系数 .
        jnb 0bh,1
        ret
        JNB 10H,K09L0
        ret                     ; 锁定 .
K09L0:  nop
        jb 02h,k09l1
        LJMP K09L2
k09l1:  nop                     ; 置车号 .
        setb 08h
        MOV B,#1
        MOV R2,#13
        LCALL LMOVE
        RET
K09L2:  nop
        jnb 03h,k09l3           ; 置轴号 .
        setb 08h
        MOV B,#11H
        MOV R2,#9
        LCALL LMOVE
        RET
K09L3:  nop
        jnb 04h,k09l4           ; 置轴号 .
        setb 08h
        MOV B,#1cH
        MOV R2,#3
        LCALL LMOVE
        RET
K09L4:  nop
        jnb 09h,k09l5           ; 编程输入 .
        jb 0ah,k09l41
        setb 0ah
        push a
        MOV B,#28H
        MOV R2,#3
        LCALL SCGCL
        pop a
k09l41: nop
        MOV B,#29h
        MOV R2,#2
        LCALL LMOVE
        RET
k09l5:  nop
        jb 00h,k09l51           ; 数据输入 .
        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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -