📄 kychbiao_36.asm
字号:
MOV O_XL,#10H
MOV CODE,#0BH
LCALL CCW_PR ;"在"
MOV O_YL,#00H
MOV O_XL,#20H
MOV CODE,#1BH
LCALL CCW_PR ;"查"
MOV O_YL,#00H
MOV O_XL,#30H
MOV CODE,#1CH
LCALL CCW_PR ;"询"
MOV A,JIHAO
DEC A
MOV B,#128
MUL AB
MOV ADDRH,B
MOV ADDRL,A ;计算本户数据在24C64中的首地址
MOV COUNT,#1
MOV R0,#DAT
LCALL LDDAT
MOV A,DAT
JNZ CMP03
LJMP FAIL2 ;户数等于0
CMP03: SWAP A
ANL A,#0FH
CJNE A,#0AH,CMP04
CMP04: JC CMP05
LJMP FAIL2
CMP05: MOV B,#10
MUL AB
MOV TMP,A
MOV A,DAT
ANL A,#0FH
CJNE A,#0AH,CMP06
CMP06: JC CMP07
LJMP FAIL2
CMP07: ADD A,TMP
MOV HUSHU,A
CJNE A,#43,KEY273
KEY273: JC KEY274 ;户数大于42,用户数据出错
MOV HUSHU,#42
LJMP FAIL2
KEY274: MOV A,HUHAO
CJNE A,HUSHU,BGINQ3
LJMP BGINQ4
BGINQ3: JC BGINQ4
LJMP FAIL2
BGINQ4: MOV A,HUSHU
MOV B,#3
MUL AB
ADD A,#01H ;计算总字节数(包括户数)
MOV B,#32
DIV AB
MOV R3,A ;需要的整页数(每页32字节)
MOV R4,B ;剩余的字节数
MOV R0,#DAT
CJNE R3,#00H,CKINQ02
LJMP CKINQ03
CKINQ02:MOV COUNT,#32
LCALL LDDAT ;此子程序中R0自动调整
mov a,addrl
add a,#32
mov addrl,a
mov a,addrh
addc a,#00h
mov addrh,a ;调整读E2PROM起始地址
DJNZ R3,CKINQ02
CKINQ03:CJNE R4,#00H,CKINQ04
LJMP CMINQ02
CKINQ04:MOV COUNT,R4
LCALL LDDAT
CMINQ02:MOV A,HUHAO
DEC A
MOV B,#3
MUL AB
INC A ;一字节户数
ADD A,#DAT
MOV ADDRH,A ;借用ADDRH存本户整数内存首字节地址
MOV R0,A ;本户整数内存首字节地址
MOV R2,#3
CHK22: MOV A,@R0
INC R0
MOV TMP,A
ANL A,#0FH
CJNE A,#0AH,KEY275
KEY275: JC KEY276
LJMP FAIL2
KEY276: MOV A,TMP
SWAP A
ANL A,#0FH
CJNE A,#0AH,KEY277
KEY277: JC KEY278
LJMP FAIL2
KEY278: DJNZ R2,CHK22
COMINQ: SETB SUCCESS ;查询结束
CLR DISMOD
MOV O_YL,#00H
MOV O_XL,#00H
MOV CODE,#19H
LCALL CCW_PR ;"用"
MOV O_YL,#00H
MOV O_XL,#10H
MOV CODE,#1AH
LCALL CCW_PR ;"量"
MOV O_YL,#00H
MOV O_XL,#20H
MOV R0,ADDRH
MOV A,@R0
ANL A,#0FH
MOV CODE,A
LCALL CNW_PR ;最高位
MOV O_YL,#00H
MOV O_XL,#28H
INC R0
MOV A,@R0
SWAP A
ANL A,#0FH
MOV CODE,A
LCALL CNW_PR ;
MOV O_YL,#00H
MOV O_XL,#30H
MOV A,@R0
ANL A,#0FH
MOV CODE,A
LCALL CNW_PR ;
MOV O_YL,#00H
MOV O_XL,#38H
INC R0
MOV A,@R0
SWAP A
ANL A,#0FH
MOV CODE,A
LCALL CNW_PR ;
MOV O_YL,#00H
MOV O_XL,#40H
MOV A,@R0
ANL A,#0FH
MOV CODE,A
LCALL CNW_PR ;
LJMP SCAN
FAIL2: CLR DISMOD
MOV O_YL,#00H
MOV O_XL,#00H
MOV CODE,#1BH
LCALL CCW_PR ;"查"
MOV O_YL,#00H
MOV O_XL,#10H
MOV CODE,#1CH
LCALL CCW_PR ;"询"
MOV O_YL,#00H
MOV O_XL,#20H
MOV CODE,#11H
LCALL CCW_PR ;"失"
MOV O_YL,#00H
MOV O_XL,#30H
MOV CODE,#12H
LCALL CCW_PR ;"败"
LJMP SCAN
TSTATE3:CJNE A,#03H,TSTAT30
LJMP DSTATE3
TSTAT30:LJMP TSTATE4
DSTATE3:LCALL SCANKEY ;打印状态
MOV A,KEYNUM
CJNE A,#0FFH,DKEY31
LCALL DLY10MS
LJMP SCAN ;无键按下
DKEY31: CJNE A,#02H,DKEY32
CKEY31: LCALL DLY10MS
LCALL KEXAM ;打印键
JNZ CKEY31 ;等键放开
JB FINISH,KEY311
LJMP BGPRN
KEY311: LJMP SCAN
DKEY32: CJNE A,#03H,DKEY33
JNB FINISH,KEY321
LJMP EDSCAN
KEY321: JNB FLAG,KEY322 ;百位键
LJMP EDSCAN ;户号百位无效
KEY322: MOV A,JIHAO
CJNE A,#101,KEY323
KEY323: JC KEY324
MOV A,JIHAO
MOV B,#100
DIV AB
MOV JIHAO,B ;机号超过200,百位回0
LJMP KEY325
KEY324: MOV A,JIHAO
ADD A,#100
MOV JIHAO,A
KEY325: SETB DISMOD
LCALL DISJIHAO
LJMP EDSCAN
DKEY33: CJNE A,#04H,DKEY34
JNB FINISH,KEY331
LJMP EDSCAN
KEY331: JNB FLAG,KEY332 ;十位键
MOV A,HUHAO ;调整户号
ADD A,#10
CJNE A,#43,K331
K331: JC K332
MOV A,HUHAO
MOV B,#10
DIV AB
MOV HUHAO,B
LJMP K333
K332: MOV HUHAO,A
K333: SETB DISMOD
LCALL DISHUHAO
LJMP EDSCAN
KEY332: MOV A,JIHAO
MOV B,#100
DIV AB
MOV TMP,A ;百位送存
CJNE A,#02H,KEY333
KEY333: JC KEY334
LJMP EDSCAN ;机号百位为2,十位不能调整
KEY334: MOV A,B
MOV B,#10
DIV AB
CJNE A,#09H,KEY335
KEY335: JC KEY336
MOV A,TMP
MOV TMP,B ;个位数
MOV B,#100
MUL AB
ADD A,TMP
MOV JIHAO,A
LJMP KEY338
KEY336: MOV A,JIHAO ;十位小于9
ADD A,#10
MOV JIHAO,A
KEY338: SETB DISMOD
LCALL DISJIHAO
LJMP EDSCAN
DKEY34: CJNE A,#05H,DKEY35
JNB FINISH,KEY341 ;个位键
LJMP EDSCAN
KEY341: JNB FLAG,KEY342
MOV A,HUHAO
INC A
CJNE A,#43,K341
K341: JC K342 ;户号小于43号
MOV A,HUHAO
MOV B,#10
DIV AB
MOV B,#10
MUL AB
MOV HUHAO,A
LJMP K343
K342: MOV HUHAO,A
K343: SETB DISMOD
LCALL DISHUHAO
LJMP EDSCAN
KEY342: MOV A,JIHAO
MOV B,#10
DIV AB
MOV TMP,A
CJNE A,#20,KEY343
KEY343: JC KEY344 ;机号小于200
LJMP EDSCAN
KEY344: MOV A,B
INC A
CJNE A,#10,KEY345
KEY345: JC KEY346
MOV A,TMP
MOV B,#10
MUL AB
MOV JIHAO,A
LJMP KEY347
KEY346: MOV B,A ;个位
MOV A,TMP ;10的倍数
MOV TMP,B ;个位送TMP
MOV B,#10
MUL AB
ADD A,TMP
MOV JIHAO,A
KEY347: SETB DISMOD
LCALL DISJIHAO
LJMP EDSCAN
DKEY35: CJNE A,#06H,DKEY36
CKEY35: LCALL DLY10MS
LCALL KEXAM ;清除键
JNZ CKEY35 ;等键放开
JNB FINISH,KEY351
LJMP SCAN
KEY351: JB FLAG,KEY353
MOV JIHAO,#00H
SETB DISMOD
LCALL DISJIHAO
LJMP SCAN
KEY353: MOV HUHAO,#00H
SETB DISMOD
LCALL DISHUHAO
LJMP SCAN
DKEY36: CJNE A,#07H,DKEY37
CKEY36: LCALL DLY10MS
LCALL KEXAM ;返回键
JNZ CKEY36 ;等键放开
MOV STATE,#00H
MOV JIHAO,#01H
MOV HUHAO,#01H
CLR ES
CLR EA
LCALL CLEAR
LCALL DISTITL
LJMP SCAN
DKEY37: CJNE A,#08H,KEY370
LJMP CKEY37
KEY370: LJMP SCAN
CKEY37: LCALL DLY10MS ;确定键
LCALL KEXAM
JNZ CKEY37 ;等键放开
JNB FINISH,KEY372
JNB SUCCESS,REPRN
INC HUHAO ;打印完成,机号不变,户号加1
MOV A,HUHAO
CJNE A,#43,KEY371
KEY371: JC REPRN
MOV HUHAO,#01H
REPRN: CLR FLAG
CLR FINISH
CLR SUCCESS
LCALL CLEAR
CLR DISMOD
LCALL DISJH
LCALL DISHH
SETB DISMOD
LCALL DISJIHAO
CLR DISMOD
LCALL DISHUHAO
MOV O_YL,#00H
MOV O_XL,#00H
MOV CODE,#13H
LCALL CCW_PR ;"打"
MOV O_YL,#00H
MOV O_XL,#10H
MOV CODE,#14H
LCALL CCW_PR ;"印"
LJMP SCAN
KEY372: JNB FLAG,K37F
LJMP BGPRN
K37F: MOV A,JIHAO
JNZ K370
SETB FINISH
CLR DISMOD
LCALL DISJIHAO
LJMP FAIL3
K370: DEC A
MOV B,#128 ;每户128字节
MUL AB
MOV ADDRH,B
MOV ADDRL,A
MOV COUNT,#1
MOV R0,#DAT
LCALL LDDAT
MOV A,DAT
JNZ CMP08
SETB FINISH
CLR DISMOD
LCALL DISJIHAO
LJMP FAIL3 ;户数等于0
CMP08: SWAP A
ANL A,#0FH
CJNE A,#0AH,CMPB1
CMPB1: JC CMPB2
SETB FINISH
CLR DISMOD
LCALL DISJIHAO
LJMP FAIL3
CMPB2: MOV B,#10
MUL AB
MOV TMP,A
MOV A,DAT
ANL A,#0FH
CJNE A,#0AH,CMPB3
CMPB3: JC CMPB4
SETB FINISH
CLR DISMOD
LCALL DISJIHAO
LJMP FAIL3
CMPB4: ADD A,TMP
MOV HUSHU,A
CJNE A,#43,K373
K373: JC K374 ;户数大于42,用户数据出错
MOV HUSHU,#42
SETB FINISH
CLR DISMOD
LCALL DISJIHAO
LJMP FAIL3
K374: MOV A,HUHAO
CJNE A,HUSHU,K376
LJMP K37A
K376: JC K37A
K379: MOV HUHAO,#01H
K37A: SETB FLAG
CLR DISMOD
LCALL DISJIHAO
SETB DISMOD
LCALL DISHUHAO
LJMP SCAN
;;;;;;;;;;;打印;;;;;;;;;;;;;;;;;;;;;;;;
BGPRN: CLR FLAG
SETB FINISH
CLR SUCCESS
clr dismod
lcall disjihao
lcall dishuhao ;刷新机号、户号显示(非反白)
MOV A,JIHAO
JNZ BGPRN1
LJMP FAIL3
BGPRN1: MOV O_YL,#00H
MOV O_XL,#00H
MOV CODE,#0AH
LCALL CCW_PR ;"正"
MOV O_YL,#00H
MOV O_XL,#10H
MOV CODE,#0BH
LCALL CCW_PR ;"在"
MOV O_YL,#00H
MOV O_XL,#20H
MOV CODE,#13H
LCALL CCW_PR ;"打"
MOV O_YL,#00H
MOV O_XL,#30H
MOV CODE,#14H
LCALL CCW_PR ;"印"
MOV A,JIHAO
DEC A
MOV B,#128 ;每户128字节
MUL AB
MOV ADDRH,B
MOV ADDRL,A
MOV COUNT,#1
MOV R0,#DAT
LCALL LDDAT
MOV A,DAT
JNZ CMP09
LJMP FAIL3 ;户数等于0
CMP09: SWAP A
ANL A,#0FH
CJNE A,#0AH,CMPC1
CMPC1: JC CMPC2
LJMP FAIL3
CMPC2: MOV B,#10
MUL AB
MOV TMP,A
MOV A,DAT
ANL A,#0FH
CJNE A,#0AH,CMPC3
CMPC3: JC CMPC4
LJMP FAIL3
CMPC4: ADD A,TMP
MOV HUSHU,A
CJNE A,#43,KEY373
KEY373: JC KEY374 ;户数大于42,用户数据出错
MOV HUSHU,#42
LJMP FAIL3
KEY374: MOV A,HUHAO
CJNE A,HUSHU,BGPRN3
LJMP BGPRN4
BGPRN3: JC BGPRN4
LJMP FAIL3
BGPRN4: MOV A,HUSHU
MOV B,#3
MUL AB
ADD A,#01H ;计算总字节数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -