?? zoujin.asm
字號:
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 + -