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 + -
显示快捷键?