📄 cap1p3.asm
字号:
mov r0,#1ch
mov r2,#2
mov addr_h,#00h
mov addr_l,#57h
lcall write_block ;保存该打印记录的存贮指针位置
lcall add_addr20 ;地址递加20
push 08h
push 09h
mov 08h,dph
mov 09h,dpl
mov r0,#08h
mov r2,#2
mov addr_h,#06h
mov addr_l,#55h
lcall write_block ;称重记录指针下移一步(空记录处)
lcall CZJL_cn_0 ;计算称重记录在数据库中的序号(1eh,1fh)
pop 09h
pop 08h
print_bill:
mov addr_h,#00h
mov addr_l,#22h ;读打印机的种类
mov r0,#1ch
mov r2,#1
lcall fm_read_block
mov a,1ch
cjne a,#0,prnt_type1
prnt_type0:
jmp mode1k ;打印功能无效
prnt_type1:
cjne a,#1,prnt_type2
jmp p_prnt_type1 ;μP-A16P微型打印机功能
prnt_type2:
cjne a,#2,prnt_type0
jmp p_prnt_type2 ;KX-P1121多功能24针打印机功能
p_prnt_type1:
jb f_wdhz,prt_hz
;************* enlish printing setup code,canceled here **********
;mov addr_h,#00h ****
;mov addr_l,#28h ;读打印语言的属性 ****
;mov r0,#1ch ****
;mov r2,#1 ****
;lcall fm_read_block ****
;mov a,1ch ****
;jz prnt_mode1_e ;打印英文 ****
;*****************************************************************
lcall dis_prnt ;显示"Prt "
lcall main_printer01 ;打印中文
mov r7,#12
lcall wait_prnt ;显示"Prt---" 约20s
jmp mode1k
prt_hz:
lcall prt_wdhz
;************* enlish printing setup code,canceled here **********
;prnt_mode1_e: ****
;lcall main_printer01E ;打印英文 ****
;****
;mov r7,#9 ****
;lcall wait_prnt ;显示"Prt---" 约20s ****
;*****************************************************************
mode1k:
mov mtd,#01h
mov mtd+1,#34h
lcall sendcmd ;去皮指示灯灭
lcall delay20ms
mov mtd,#01h
mov mtd+1,#36h
lcall sendcmd ;净重指示灯灭
lcall delay20ms
jmp keyboard_p_ret
p_prnt_type2:
;打印机类型为KX-P1121
mov addr_h,#00h
mov addr_l,#26h ;读是否设定为填充打印格式
mov r0,#1ch
mov r2,#1
lcall fm_read_block
mov a,1ch
jnz prnt_fill ;跳转,填充打印格式
;*************** chinese printing setup code,canceled here *****************
;mov addr_h,#00h ****
;mov addr_l,#28h ;读打印语言的属性 ****
;mov r0,#1ch ****
;mov r2,#1 ****
;lcall fm_read_block ****
;mov a,1ch ****
;jz prnt_mode1_f ;跳转,打印英文 ****
;****************************************************************************
mov addr_h,#00h
mov addr_l,#23h ;读打印的联单数(1联单,2联单,3联单)
mov r0,#1ch
mov r2,#1
lcall fm_read_block
mov 20h,1ch
lcall dis_prnt ;显示"Prt "
lcall main_printer02 ;打印中文
mov r7,#12
lcall wait_prnt ;显示"Prt---" 约20s
jmp mode1k
;**************** enlish printing setup code,canceled here ********************
;prnt_mode1_f: ****
;mov addr_h,#00h ****
;mov addr_l,#23h ;读打印的联单数(1联单,2联单,3联单) ****
;mov r0,#1ch ****
;mov r2,#1 ****
;lcall fm_read_block ****
;mov 20h,1ch ****
;****
;lcall main_printer02E ;打印英文 ****
;****
;mov r7,#9 ****
;lcall wait_prnt ;显示"Prt---" 约20s ****
;jmp mode1k ****
;******************************************************************************
prnt_fill:
lcall main_printer03
jmp mode1k
;----------------------------------------------
prt_wdhz:
mov dptr,#print_tab0
mov r3,#5
lcall prn_send_loop ;打印机初始化
mov dptr,#print_tab02
mov r3,#20
lcall prn_send_loop ;================
;-----------------------------
lcall date_data_send1 ;发送日期数据
mov a,#' '
lcall printer_cr
lcall time_data_send ;发送时间数据
mov a,#13
lcall printer_cr
mov dptr,#print_tab04
mov r3,#20
lcall prn_send_loop ;----------------
mov addr_h,#06h
mov addr_l,#55h
mov r0,#1ch
mov r2,#2
lcall fm_read_block ;读第一个空白记录指针的数值(1ch,1dh)
mov dph,#06h
mov dpl,#57h
mov r0,#20h
mov r1,#10
clr a
wdhz1_data:
mov @r0,a
inc r0
djnz r1,wdhz1_data ;清总毛重(20h,21h,22h,23h),总净重(24h,25h,26h,27h)
mov 1eh,a
mov 1fh,a ;清序号(1eh,1fh)
wdhz1_data0:
clr c
mov a,dpl
subb a,1dh
mov a,dph
subb a,1ch
jc look_wdhz1 ;当前指针小于存贮记录指针,继续查找
jmp wdhz1_data3 ;查找结束
look_wdhz1:
mov addr_h,dph
mov addr_l,dpl
mov r0,#08h ;08h,09h,0ah;0bh,0ch,0dh;0eh,0fh,10h
mov r2,#20 ;11h,12h,13h;14h;15h;16h,17h,18h;19h,1ah,1bh
;车号,皮重,毛重,净重,货号,客户号,时间,日期
lcall fm_read_block ;读"车号"数值
mov a,19h
cjne a,year,wdhz1_data1
mov a,1ah
cjne a,month,wdhz1_data1
mov a,1bh
cjne a,date,wdhz1_data1
setb f_record
jmp wdhz1_data2
wdhz1_data1:
lcall add_addr20 ;地址递加20
jmp wdhz1_data0
wdhz1_data2:
lcall add_addr20 ;地址递加20
mov addr_h,dph
mov addr_l,dpl
mov r4,#0
mov r5,0eh
mov r6,0fh
mov r7,10h
mov r0,20h
mov r1,21h
mov r2,22h
mov r3,23h
lcall L004FH_ADDC ;累加总毛重值
mov 20h,r4
mov 21h,r5
mov 22h,r6
mov 23h,r7
mov r4,#0
mov r5,11h
mov r6,12h
mov r7,13h
mov r0,24h
mov r1,25h
mov r2,26h
mov r3,27h
lcall L004FH_ADDC ;累加总净重值
mov 24h,r4
mov 25h,r5
mov 26h,r6
mov 27h,r7
clr a
mov r4,a
mov r5,a
mov r6,1eh
mov r7,1fh
mov r0,a
mov r1,a
mov r2,a
mov r3,#1
lcall L004FH_ADDC ;序号+1
mov 1eh,r6
mov 1fh,r7
mov r5,11h
mov r6,12h
mov r7,13h
lcall btd0 ;净重数据(out:r6r5r4)
lcall dp_position_data ;发送带小数点的称重数据
mov a,#' '
lcall printer_cr ;space
clr c
mov a,27h
subb a,#7fh
mov a,26h
subb a,#96h
mov a,25h
subb a,#98h
mov a,24h
subb a,#00h ;与能打印的最大总重(9999999d=98967fh)比较
jc wdhz_prt_tot
setb f_total_over ;数据溢出
mov dptr,#data_err_code
mov r3,#6
lcall prn_send_loop ;发送"EEEEEE",表示数据太大溢出
jmp wdhz_prt_tot_x
wdhz_prt_tot:
clr f_total_over ;数据未溢出
mov r5,25h
mov r6,26h
mov r7,27h
lcall btd0 ;总重数据(out:r6r5r4)
lcall dp_position_data ;发送带小数点的称重数据
wdhz_prt_tot_x:
mov a,#13
lcall printer_cr
mov dph,addr_h
mov dpl,addr_l
jmp wdhz1_data0
wdhz1_data3:
jb f_record,wdhz1_data3x
;mov dptr,#no_record_code ;无相应记录
;mov r3,#10
;lcall prn_send_loop
jmp prt_wdhz_ret
wdhz1_data3x:
mov dptr,#print_tabE02
mov r3,#20
lcall prn_send_loop ;================
lcall sn_PrntData ;序号数据转化为字符送打印机
mov a,#13
lcall printer_cr
jb f_total_over,prt_total_over ;数据溢出
mov r5,25h
mov r6,26h
mov r7,27h
lcall btd0 ;总重数据(out:r6r5r4)
lcall dp_position_data ;发送带小数点的称重数据
jmp prt_wdhz_ret
prt_total_over:
mov dptr,#data_err_code
mov r3,#6
lcall prn_send_loop ;发送"EEEEEE",表示数据太大溢出
jmp wdhz_prt_tot_x
prt_wdhz_ret:
mov a,#13
lcall printer_cr
mov dptr,#print_tab00
mov r3,#17
lcall prn_send_loop ;~~~~~~~X~~~~~~~~
mov a,#13
lcall printer_cr
mov r7,#5
wait_prnt_wdhz:
lcall wait_prnt
prt_wdhz_ret0:
clr f_record
ret
data_err_code:
db 'E','E','E','E','E','E'
;----------------------------------------------
err_11: ;显示"Err 11"表示负称量
mov disp_buf, #01h
mov disp_buf+1,#01h
mov disp_buf+2,#1fh
mov disp_buf+3,#18h
mov disp_buf+4,#18h
mov disp_buf+5,#0eh
lcall disp_sub ;显示"Err 11"
clr p_buzz
lcall delay500ms
setb p_buzz
mov mtd,#01h
mov mtd+1,#34h
lcall sendcmd ;去皮指示灯灭
lcall delay20ms
mov mtd,#01h
mov mtd+1,#36h
lcall sendcmd ;净重指示灯灭
lcall delay20ms
ret
;----------------------------
wait_prnt:
lcall dis_prnt ;显示"Prt---" 约20s
wait_prnt0:
mov dptr,#disp_tab
mov r2,#12
dgsadh:
mov mtd,#01h
clr a
movc a,@a+dptr
mov mtd+1,a
lcall sendcmd
inc dptr
lcall long_delay0
lcall long_delay0
lcall long_delay0
lcall long_delay0
djnz r2,dgsadh
lcall long_delay
djnz r7,wait_prnt0
ret
;-------------------------------
disp_tab:
db 9eh,26h,2eh ;亮,暗,暗
db 9eh,0a6h,2eh
db 9eh,0a6h,0aeh
db 1eh,26h,2eh
;-------------------------------
prnt_mode2:
lcall dis_flasho
prnt_mode2a:
mov a,mrd
jz prnt_mode2a
cjne a,#6,prnt_mode2b
mov mrd,#0
mov a,disp_buf
clr acc.6
mov disp_buf,a
jmp prnt_mode2b50
prnt_mode2b:
lcall dis_flasho0
mov r7,#5
prnt_mode2b4:
mov a,mrd
jz prnt_mode2b4
lcall key_handle
jnb f_key_num,prnt_mode2b5
lcall dis_forward_o
djnz r7,prnt_mode2b4 ;输入五位车号
prnt_mode2b5:
mov a,mrd
jz prnt_mode2b5
cjne a,#6,prnt_mode2b6 ;"确认"
mov mrd,#0
prnt_mode2b50:
lcall LedBit_p5 ;Led位处理
mov 16h,r4 ;out:16h17h18h
mov 17h,r3
mov 18h,r2 ;暂存车号
mov a,16h ;判断是车号还是货物号:00000是货物号,其他数字是车号
jz prnt_mode2b51
jmp prnt_mode3
prnt_mode2b51:
mov a,17h
jz prnt_mode2b52
jmp prnt_mode3
prnt_mode2b52:
mov a,18h
jz prnt_mode2e ;转,打印模式2:一次手动直接打印货物的称重单
jmp prnt_mode3 ;转打印模式3:两次贮存打印称重单
prnt_mode2b6:
cjne a,#2,prnt_mode2b7 ;"退出"
mov mrd,#0
jmp keyboard_p_ret
prnt_mode2b7:
cjne a,#4,prnt_mode2b5 ;"清除"
mov mrd,#0
jmp prnt_mode2b
prnt_mode2e: ;打印模式2:一次手动直接打印货物的称重单
lcall dis_flashH
prnt_mode2e1:
mov a,mrd
jz prnt_mode2e1
cjne a,#6,prnt_mode2e2
mov mrd,#0
mov a,disp_buf
clr acc.6
mov disp_buf,a
jmp prnt_mode2e50
prnt_mode2e2:
lcall dis_flashH0
mov r7,#2
prnt_mode2e3:
mov a,mrd
jz prnt_mode2e3
lcall key_handle
jnb f_key_num,prnt_mode2e5
lcall dis_forward_H
djnz r7,prnt_mode2e3 ;输入两位货号
prnt_mode2e5:
mov a,mrd
jz prnt_mode2e5
cjne a,#6,prnt_mode2e6 ;"确认"
mov mrd,#0
prnt_mode2e50:
lcall LedBit_p2 ;Led位处理
mov 19h,r2 ;暂存货号
jmp prnt_mode2f
prnt_mode2e6:
cjne a,#2,prnt_mode2e7 ;"退出"
mov mrd,#0
jmp keyboard_p_ret
prnt_mode2e7:
cjne a,#4,prnt_mode2e5 ;"清除"
mov mrd,#0
jmp prnt_mode2e2
prnt_mode2f:
lcall dis_flashCLT
prnt_mode2f1:
mov a,mrd
jz prnt_mode2f1
cjne a,#6,prnt_mode2f2
mov mrd,#0
mov a,disp_buf
clr acc.6
mov disp_buf,a
jmp prnt_mode2f50
prnt_mode2f2:
lcall dis_flashCLT0
mov r7,#2
prnt_mode2f3:
mov a,mrd
jz prnt_mode2f3
lcall key_handle
jnb f_key_num,prnt_mode2f5
lcall dis_forward_CLT
djnz r7,prnt_mode2f3 ;输入两位客户号
prnt_mode2f5:
mov a,mrd
jz prnt_mode2f5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -