waterm4.1.1.asm
来自「一卡通源码程序是我公司的一卡通源码程序,绝对难得」· 汇编 代码 · 共 2,777 行 · 第 1/5 页
ASM
2,777 行
open1: lcall openvalue
clr f_kguan2
conexpence2:
jb f_kguan2,check_card
jnb f_updata,check_card
clr f_updata
lcall updata
;lcall beep_1
check_card:
jb f_card,conexpence0
lcall closevalue
;clr f_card
;clr f_id
;===============================
;添加阀门检测功能
;===============================
lcall judgevalue
jnb f_value,check_card_0
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
lcall openvalue
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall closevalue
lcall judgevalue
jnb f_value,check_card_0
mov error,#14
lcall erro_del
setb f_valuerr
ljmp check_card_1
;==========================
check_card_0:
clr f_valuerr
check_card_1:
clr et1
mov hongcount,#0
jnb f_com,check_card1
mov a,expence_x
cjne a,#27h,exit0
exit0: jnc exit1
lcall collect_saledata
setb f_sal
exit1: clr f_kguan2
mov kgcount,#0
lcall disp_name
clr f_id
ljmp mmain
check_card1:mov a,expence_x
cjne a,#27h,exit2
exit2: jnc exit3
lcall save_saledata
exit3: clr f_kguan2
mov kgcount,#0
lcall disp_name
clr f_id
ljmp mmain
;=====================
;未声请到帐户
;=====================
fail_zh: mov error,#err13
clr f_zh
setb f_erra
setb f_card
lcall erro_del
clr f_erra
ljmp unconexpence0
;=====================
;脱机消费状态
;=====================
unconexpence:
cpl watchdog
mov a,assic4
anl a,#80h
cjne a,#80h,continue
mov error,#err9
setb f_erra
lcall erro_del
clr f_erra
ljmp mmain
continue: mov error,#err12
setb f_erra
;======================
unconexpence0:
mov sal_time,#0
setb f_card
mov expence_h,#0
mov expence_x,#0
mov expence_l,#0
mov liuliang_h,#0
mov liuliang_x,#0
mov liuliang_l,#0
lcall mul22
lcall addmoney
lcall moneydec_100
mov Card_On_Or_Off_Count,#idnum_time
lcall erro_del
clr f_erra
lcall disp_money
;lcall money_hextobcd
;lcall get_int
;lcall get_dot
;lcall send_money
;========================
;脱机消费结算
;========================
unconexpence1:
cpl watchdog
jnb f_kguan1,unconexpence2
clr f_kguan1
mov a,kgcount
mov b,#2
div ab
mov a,b
jz open
lcall closevalue
setb f_kguan2
ljmp check_card_in
open: lcall openvalue
clr f_kguan2
unconexpence2:
jb f_kguan2,check_card_in
jnb f_updata,check_card_in
clr f_updata
lcall updata1
;lcall beep_1
ljmp check_card_in
;========================
check_card_in:
jb f_card,unconexpence1
lcall closevalue
lcall judgevalue
jnb f_value,check_card_in_1
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
lcall delay_254ms
lcall openvalue
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
cpl watchdog
lcall delay_254ms
lcall closevalue
lcall judgevalue
jnb f_value,check_card_in_1
setb f_valuerr
mov error,#14
lcall erro_del
ljmp check_card_in_2
check_card_in_1:
clr f_valuerr
nop
nop
check_card_in_2:
nop
nop
mov kgcount,#0
clr f_kguan2
clr et1
mov hongcount,#0
lcall save_saledata
lcall disp_name
ljmp mmain
;======================
;错误帐户信息处理
;======================
erra_del: lcall erro_del
clr f_erra
lcall closevalue
lcall disp_name
ljmp mmain
;******************************************
;子程序部分
;******************************************
get_numkey:
mov assic0,#02h
mov assic11,#0dh
mov r0,#num_key
mov a,@r0
mov assic1,a
inc r0
mov a,@r0
mov assic2,a
inc r0
mov a,@r0
mov assic3,a
inc r0
mov a,@r0
mov assic4,a
inc r0
mov a,@r0
mov assic5,a
inc r0
mov a,@r0
mov assic6,a
inc r0
mov a,@r0
mov assic7,a
inc r0
mov a,@r0
mov assic8,a
inc r0
mov a,@r0
mov assic9,a
inc r0
mov a,@r0
mov assic10,a
ret
;*******************************************
;读取系统信息
;*******************************************
read_sys:
mov dptr,#sal_flag
mov icadd_h,dph
mov icadd_l,dpl
lcall irdbyte
mov a,icdata
cjne a,#0aah,read_sys0
mov dptr,#sal_rate
mov icadd_h,dph
mov icadd_l,dpl
lcall irdbyte
mov rate,icdata
ret
read_sys0: mov icdata,#0aah
lcall irwrbyte
mov dptr,#sal_beg
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,#00h
lcall irwrbyte
mov dptr,#sal_end
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,#00h
lcall irwrbyte
mov dptr,#sal_rate
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,#10h
lcall irwrbyte
ret
;*******************************************
;脱机消费数据更新
;*******************************************
updata1: lcall expence_add
lcall liuliang_add
lcall moneydec_100
lcall disp_money
;lcall money_hextobcd
;lcall get_int
;lcall get_dot
;lcall send_money
ret
;********************************************
;脱机数据保存
;********************************************
save_saledata:
mov dptr,#sal_beg
mov icadd_h,dph
mov icadd_l,dpl
lcall irdbyte
mov a,icdata
cjne a,#100,save_saledata0
mov icdata,#0
lcall irwrbyte
mov dptr,#sal_end
mov icadd_h,dph
mov icadd_l,dpl
lcall irwrbyte
ret
save_saledata0:
mov a,icdata
mov b,#11
mul ab
mov icadd_h,b
mov icadd_l,a
mov dptr,#fm_buf
clr c
add a,dpl
mov icadd_l,a
mov a,icadd_h
addc a,dph
mov icadd_h,a
mov dph,icadd_h
mov dpl,icadd_l
;===================
;save idnumber
;===================
mov icdata,idnum0
lcall irwrbyte
inc dptr
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,idnum1
lcall irwrbyte
inc dptr
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,idnum2
lcall irwrbyte
inc dptr
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,idnum3
lcall irwrbyte
inc dptr
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,idnum4
lcall irwrbyte
;==========================
;save liuliang
;==========================
inc dptr
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,liuliang_h
lcall irwrbyte
inc dptr
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,liuliang_x
lcall irwrbyte
inc dptr
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,liuliang_l
lcall irwrbyte
;============================
;save expence
;============================
inc dptr
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,expence_h
lcall irwrbyte
inc dptr
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,expence_x
mov a,expence
cjne a,#27h,esc
esc: jnc esc0
lcall irwrbyte
inc dptr
mov icadd_h,dph
mov icadd_l,dpl
mov a,expence_h
jnz esc1
mov a,expence_x
jnz esc1
mov a,expence_l
jnz esc1
mov expence_h,#0
mov expence_x,#0
mov expence_l,#50
esc1: mov icdata,expence_l
lcall irwrbyte
;=========================
;sal_beg++
;=========================
mov dptr,#sal_beg
mov icadd_h,dph
mov icadd_l,dpl
lcall irdbyte
mov a,icdata
inc a
mov icdata,a
mov dptr,#sal_beg
mov icadd_h,dph
mov icadd_l,dpl
lcall irwrbyte
esc0:
ret
;*******************************************
;读取保存数据
;*******************************************
readrecord:
mov dptr,#sal_beg
mov icadd_h,dph
mov icadd_l,dpl
lcall irdbyte
mov b,icdata
mov dptr,#sal_end
mov icadd_h,dph
mov icadd_l,dpl
push b
lcall irdbyte
pop b
mov a,icdata
clr c
cjne a,b,readrecord0
readrecord0:
jc readrecord1
mov dptr,#sal_beg
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,#0
lcall irwrbyte
mov dptr,#sal_end
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,#0
lcall irwrbyte
ret
readrecord1: clr c
mov dptr,#sal_end
mov icadd_h,dph
mov icadd_l,dpl
lcall irdbyte
mov a,icdata
mov b,#11
mul ab
mov icadd_l,a
mov icadd_h,b
mov dptr,#fm_buf
clr c
add a,dpl
mov icadd_l,a
mov a,b
addc a,dph
mov icadd_h,a
mov dph,icadd_h
mov dpl,icadd_l
mov r0,#salbuf
mov @r0,#0c1h
inc r0
mov @r0,address
inc r0
mov rrx0,#11
readrecord2:
lcall irdbyte
mov @r0,icdata
inc dptr
mov icadd_h,dph
mov icadd_l,dpl
inc r0
djnz rrx0,readrecord2
mov @r0,salecount
mov a,salecount
inc a
mov salecount,a
readrecord3:
mov dptr,#sal_end
mov icadd_h,dph
mov icadd_l,dpl
lcall irdbyte
mov a,icdata
inc a
mov icdata,a
mov dptr,#sal_end
mov icadd_h,dph
mov icadd_l,dpl
lcall irwrbyte
setb f_sal
ret
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?