📄 cap1p3.asm
字号:
mov 18h,#13 ;回车
mov 08h,#02h ;起始字
setb f_start_send
get_sbuf_data_ret:
ret
;-------------------------------------------------------
key_handle: ;确定0~9数字键
mov r5,#10
mov r4,#0ffh
mov dptr,#keynum_tab
look_loop:
clr a
movc a,@a+dptr
cjne a,mrd,look_continue
mov mrd,#0
inc r4
setb f_key_num
;setb p_buzz
jmp key_handle_ret
look_continue:
inc dptr
inc r4
djnz r5,look_loop
clr f_key_num
;mov mrd,#0
key_handle_ret:
ret
;-----------------------------------------------------
rd_key_value:
lcall scankey
cjne a,#00h,have_key_value
clr keyon
jmp rd_key_value_ret
have_key_value:
setb keyon
mov mrd,a
lcall p_buzzer
rd_key_value_ret:
ret
;--------------------------------
p_buzzer:
mov a,f_function0
jnb acc.5,p_buzzer0
clr p_buzz
lcall long_delay0
p_buzzer0:
setb p_buzz
p_buzzer_ret:
ret
;-----------------------------------------------------
keyboard_p: ;20ms rd keyvalue once
jnb keyon,keyboard_p_ret
clr keyon
mov a,mrd
cjne a,#1,s2 ;key_value=1(去皮),or jump s2
mov mrd,#0
lcall p_s1 ;key_value=1(去皮)处理程序
s2: cjne a,#2,s3 ;key_value=2(退出),or jump s3
mov mrd,#0
lcall p_s2 ;key_value=2(退出)处理程序
s3: cjne a,#3,s4 ;key_value=3(汇总),or jump s4
mov mrd,#0
lcall p_s3 ;key_value=3(汇总)处理程序
s4: cjne a,#4,s5 ;key_value=4(清除),or jump s5
mov mrd,#0
lcall p_s4 ;key_value=4(清除)处理程序
s5: cjne a,#5,s6 ;key_value=5(客户),or jump s6
mov mrd,#0
lcall p_s5 ;key_value=5(客户)处理程序
s6: cjne a,#6,s9 ;key_value=6(确定/打印),or jump s9
mov mrd,#0
jmp p_s6 ;key_value=6(确定/打印)处理程序
s9: cjne a,#9,s10 ;key_value=9(车号),or jump s10
mov mrd,#0
jmp p_s9 ;key_value=9(车号)处理程序
s10: cjne a,#10,s11 ;key_value=10(调显),or jump s11
mov mrd,#0
jmp p_s10 ;key_value=10(调显)处理程序
s11: cjne a,#11,s13 ;key_value=11(序号),or jump s13
mov mrd,#0
lcall p_s11 ;key_value=11(序号)处理程序
s13: cjne a,#13,s14 ;key_value=13(货号),or jump s14
mov mrd,#0
lcall p_s13 ;key_value=13(货号)处理程序
s14: cjne a,#14,s21 ;key_value=14(自检),or jump s21
mov mrd,#0
lcall p_s14 ;key_value=14(自检)处理程序
s21: cjne a,#21,s22 ;key_value=21(清零)处理程序
mov mrd,#0
lcall p_s21 ;key_value=21(清零),or jump s22
s22: cjne a,#22,s30 ;key_value=22(日期/时间),or jump s30
mov mrd,#0
jmp p_s22 ;key_value=22(日期/时间)处理程序
keyboard_p_ret:
ret
s30: cjne a,#30,YZPZ ;key_value=30(存贮),转>>>预置皮重功能
mov mrd,#0
jmp prnt_mode1 ;key_value=30(存贮)处理程序,进入打印模式1
YZPZ: ;预置皮重功能:<数字>+"去皮"键
mov a,m_tare_count
jnb acc.0,YZPZa0 ;在"皮重"状态下,禁止再次去皮操作
jmp keyboard_p_ret
YZPZa0:
mov a,mrd
jz keyboard_p_ret
lcall hide_data
mov r7,#5
YZPZa:
mov a,mrd
jz YZPZa
lcall key_handle
jnb f_key_num,YZPZ0
lcall dis_forward_P
djnz r7,YZPZa ;输入五位皮重
YZPZ0:
mov a,mrd
jz YZPZ0
cjne a,#1,YZPZ1 ;"去皮"键
mov mrd,#0
lcall LedBit_p5 ;Led位处理
mov m_tare_0,r4 ;毛重大于5e才允许去皮
mov m_tare_1,r3
mov m_tare_2,r2 ;当前所输入的数字转为皮重值
inc m_tare_count ;"去皮"键的按键次数加1
mov mtd,#01h
mov mtd+1,#0b4h
lcall sendcmd ;去皮状态指示灯亮
lcall delay20ms
mov mtd,#01h
mov mtd+1,#35h
lcall sendcmd ;毛重指示灯灭
lcall delay20ms
mov mtd,#01h
mov mtd+1,#0b6h
lcall sendcmd ;净重状态指示灯亮
lcall delay20ms
jmp keyboard_p_ret
YZPZ1:
mov a,mrd
jz YZPZ1
cjne a,#2,YZPZ2 ;"退出"键
mov mrd,#0
jmp keyboard_p_ret
YZPZ2:
cjne a,#4,YZPZ0 ;"清除"键
mov mrd,#0
lcall dis_flashp0 ;闪烁显示"P 0"
mov r7,#5
jmp YZPZa
;------------------------------
;按下"存贮"键后
prnt_mode1: ;打印模式:
;毛重已保存在m_gross_0,m_gross_1,m_gross_2
mov disp_buf, #1fh
mov disp_buf+1,#1fh
mov disp_buf+2,#0eh
mov disp_buf+3,#1ah
mov disp_buf+4,#0ah
mov disp_buf+5,#05h
lcall disp_sub ;显示"SAVE"
prnt_mode1aa:
mov a,mrd
jz prnt_mode1aa
cjne a,#9,prnt_mode1aa1 ;"车号"键
mov mrd,#0
jmp prnt_mode2
prnt_mode1aa1:
cjne a,#2,prnt_mode1a2 ;"退出"键
mov mrd,#0
jmp keyboard_p_ret
prnt_mode1a2:
lcall key_handle
mov mrd,#0
jnb f_key_num,prnt_mode1aa
mov r7,#5
lcall hide_data
mov mrd,r4
jmp prnt_mode1k
prnt_mode1ab: ;打印模式一:一次手动预置皮重打印称重单
mov r7,#5
lcall hide_data
lcall dis_flashp0
prnt_mode1a: ;输入皮重
mov a,mrd
jz prnt_mode1a
lcall key_handle
jnb f_key_num,prnt_mode1c
prnt_mode1k:
mov mrd,#0
lcall dis_forward_P
djnz r7,prnt_mode1a ;输入五位皮重
prnt_mode1b:
mov a,mrd
jz prnt_mode1b
cjne a,#1,prnt_mode1c ;"去皮"
mov mrd,#0
lcall LedBit_p5 ;Led位处理
mov 10h,r4 ;out:10h11h12h
mov 11h,r3
mov 12h,r2 ;暂存皮重
inc m_tare_count ;"去皮"键按键次数加1
mov m_tare_0,r4
mov m_tare_1,r3
mov m_tare_2,r2 ;皮重
mov mtd,#01h
mov mtd+1,#0b4h
lcall sendcmd ;去皮指示灯亮
lcall delay20ms
jmp prnt_mode1b0
prnt_mode1c:
mov a,mrd
jz prnt_mode1c
cjne a,#2,prnt_mode1d ;"退出"
mov mrd,#0
jmp keyboard_p_ret
prnt_mode1d:
cjne a,#4,prnt_mode1b ;"清除"
mov mrd,#0
lcall dis_flashp0 ;闪烁显示数字"0",等待输入
jmp prnt_mode1ab
prnt_mode1b8: ;显示"Err 11"表示负称量,不能贮存
lcall hide_data
lcall err_11
lcall delay500ms
lcall delay500ms
jmp keyboard_p_ret ;退出
prnt_mode1b0:
lcall prnt_mode1_weight ;计算出净重(13h14h15h)并显示,净重指示灯亮
jc prnt_mode1b8 ;显示"Err 11"表示负称量,不能贮存
lcall dis_weight_led0 ;显示净重
mov mtd,#01h
mov mtd+1,#0b6h
lcall sendcmd ;净重指示灯亮
lcall delay20ms
mov mtd,#01h
mov mtd+1,#35h
lcall sendcmd ;毛重指示灯灭
lcall delay20ms
prnt_mode1b1:
mov a,mrd
jz prnt_mode1b1
cjne a,#9,prnt_mode1b2 ;"车号"键
mov mrd,#0
jmp prnt_mode1b3
prnt_mode1b2:
cjne a,#2,prnt_mode1b1 ;"退出"
prnt_mode1_exit:
mov mrd,#0
inc m_tare_count ;"去皮"键按键次数加1
clr a
mov m_tare_0,a
mov m_tare_1,a
mov m_tare_2,a ;皮重
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 ;退出
prnt_mode1b3:
lcall dis_flasho
prnt_mode1b3a:
mov a,mrd
jz prnt_mode1b3a
cjne a,#6,prnt_mode1b3b
mov mrd,#0
mov a,disp_buf
clr acc.6
mov disp_buf,a
jmp prnt_mode1ba
prnt_mode1b3b:
lcall dis_flasho0
mov r7,#5
prnt_mode1b4:
mov a,mrd
jz prnt_mode1b4
lcall key_handle
jnb f_key_num,prnt_mode1b5
lcall dis_forward_o
djnz r7,prnt_mode1b4 ;输入五位车号
prnt_mode1b5:
mov a,mrd
jz prnt_mode1b5
cjne a,#6,prnt_mode1b6 ;"确认"
mov mrd,#0
prnt_mode1ba:
lcall LedBit_p5 ;Led位处理
mov 16h,r4 ;out:16h17h18h
mov 17h,r3
mov 18h,r2 ;暂存车号
jmp prnt_mode1e
prnt_mode1b6:
cjne a,#2,prnt_mode1b7 ;"退出"
mov mrd,#0
jmp prnt_mode1_exit
prnt_mode1b7:
cjne a,#4,prnt_mode1b5 ;"清除"
mov mrd,#0
jmp prnt_mode1b3b
prnt_mode1e:
lcall dis_flashH
prnt_mode1e1:
mov a,mrd
jz prnt_mode1e1
cjne a,#6,prnt_mode1e2
mov mrd,#0
mov a,disp_buf
clr acc.6
mov disp_buf,a
jmp prnt_mode1e50
prnt_mode1e2:
lcall dis_flashH0
mov r7,#2
prnt_mode1e4:
mov a,mrd
jz prnt_mode1e4
lcall key_handle
jnb f_key_num,prnt_mode1e5
lcall dis_forward_H
djnz r7,prnt_mode1e4 ;输入两位货号
prnt_mode1e5:
mov a,mrd
jz prnt_mode1e5
cjne a,#6,prnt_mode1e6 ;"确认"
mov mrd,#0
prnt_mode1e50:
lcall LedBit_p2 ;Led位处理
mov 19h,r2 ;暂存货号
jmp prnt_mode1f
prnt_mode1e6:
cjne a,#2,prnt_mode1e7 ;"退出"
mov mrd,#0
jmp prnt_mode1_exit
prnt_mode1e7:
cjne a,#4,prnt_mode1e5 ;"清除"
mov mrd,#0
jmp prnt_mode1e2
prnt_mode1f:
lcall dis_flashCLT
prnt_mode1f1:
mov a,mrd
jz prnt_mode1f1
cjne a,#6,prnt_mode1f2
mov mrd,#0
mov a,disp_buf
clr acc.6
mov disp_buf,a
jmp prnt_mode1f50
prnt_mode1f2:
lcall dis_flashCLT0
mov r7,#2
prnt_mode1f3:
mov a,mrd
jz prnt_mode1f3
lcall key_handle
jnb f_key_num,prnt_mode1f5
lcall dis_forward_CLT
djnz r7,prnt_mode1f3 ;输入两位客户号
prnt_mode1f5:
mov a,mrd
jz prnt_mode1f5
cjne a,#6,prnt_mode1f6 ;"确认"
mov mrd,#0
prnt_mode1f50:
lcall LedBit_p2 ;Led位处理
mov 1ah,r2 ;暂存客户号
;显示"Prnt "等待打印
jmp prnt_mode1g
prnt_mode1f6:
cjne a,#2,prnt_mode1f7 ;"退出"
mov mrd,#0
jmp prnt_mode1_exit
prnt_mode1f7:
cjne a,#4,prnt_mode1f5 ;"清除"
mov mrd,#0
jmp prnt_mode1f2
prnt_mode1g:
lcall readtime ;读取时间日期
lcall check_CZJLZZ ;判断称重记录单的存贮指针位置(use:08h,09h...)
jc prnt_mode1h ;称重记录已满,跳转
;称重记录未满
;将打印数据写打印缓冲区
mov 08h,16h
mov 09h,17h
mov 0ah,18h ;车号
mov 0bh,10h
mov 0ch,11h
mov 0dh,12h ;皮重
mov 0eh,m_gross_0
mov 0fh,m_gross_1
mov 10h,m_gross_2 ;毛重
mov 11h,13h
mov 12h,14h
mov 13h,15h ;净重
mov 14h,19h ;货号
mov 15h,1ah ;客户号
mov 16h,hour
mov 17h,minute
mov 18h,second ;时分秒
mov 19h,year
mov 1ah,month
mov 1bh,date ;年月日
jmp prnt_mode1i ;称重记录未满
prnt_mode1h:
mov 23h,16h
mov 24h,17h
mov 25h,18h ;保护车号
mov 26h,10h
mov 27h,11h
mov 28h,12h ;保护皮重
mov 29h,13h
mov 32h,14h
mov 53h,15h ;保护净重
mov 59h,19h ;保护货号
mov 77h,1ah ;保护客户号
lcall SavePush_CZJL ;将最早的一组记录挤出
mov 08h,23h
mov 09h,24h
mov 0ah,25h ;将车号写入打印缓冲区
mov 0bh,26h
mov 0ch,27h
mov 0dh,28h ;将皮重写入打印缓冲区
mov 0eh,m_gross_0
mov 0fh,m_gross_1
mov 10h,m_gross_2 ;将毛重写入打印缓冲区
mov 11h,29h
mov 12h,32h
mov 13h,53h ;将净重写入打印缓冲区
mov 14h,59h ;将货号写入打印缓冲区
mov 15h,77h ;将客户号写入打印缓冲区
mov 16h,hour
mov 17h,minute
mov 18h,second ;时分秒
mov 19h,year
mov 1ah,month
mov 1bh,date ;年月日
prnt_mode1i: ;写存贮器
mov r0,#08h
mov r2,#20
mov addr_h,dph
mov addr_l,dpl
lcall write_block ;写存贮器
mov 1ch,dph
mov 1dh,dpl
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -