⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 waterm3.01.asm

📁 一卡通源码程序是我公司的一卡通源码程序,绝对难得
💻 ASM
📖 第 1 页 / 共 5 页
字号:
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:lcall disp_money
            jb     f_kguan2,check_card_in
            jnb     f_60ms,check_card_in
            clr     f_60ms
            lcall   read_plus
            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










;******************************************
;子程序部分
;******************************************
;*******************************************
;读取系统信息
;*******************************************
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  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_h
           lcall irwrbyte

           inc dptr
           mov icadd_h,dph
           mov icadd_l,dpl
           mov icdata,expence_x

           lcall irwrbyte
           inc   dptr
           mov   icadd_h,dph
           mov   icadd_l,dpl

           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










;*******************************************
;蜂鸣器短叫一声
;*******************************************

beepup:    clr p3.6
           lcall delay_254ms
           setb p3.6
           ret

;***************************
;read the pos address
;***************************
read_address:
            clr  p1.3
            mov a,p0
            cpl a
            mov address,a
            setb p1.3
            ret
;***************************
;cpu install
;***************************
iniall:     mov th0,#15h
            mov tl0,#0a0h

            mov th1,#0fch
            mov tl1,#00h


            mov tmod,#11h


            mov th2,#0ffh
            mov tl2,#baud
            mov rcap2h,#0ffh
            mov rcap2l,#baud
            mov t2con,#00110100b  ;tf2 exf2 rclk tclk exen2 tr2 c/t2 cp/rl2
            mov scon,#11110000b   ;sm0 sm1 sm2 ren tb8 rb8 ti ri
            mov ip,#00010000b     ;*   *  pt2  ps pt1 px1 pt0 px0
            mov tcon,#01010100b   ;tf1 tr1 tf0 tr0 ie1 it1 ie0 it0
            mov ie,#00011110b     ;ea   *   *  es  et1 ex1 et0 ex0

            ;setb ea
            ret


;****************************
;CLOSE VALUE
;****************************
closevalue:

            clr   cm_a
            setb  cm_b


            ret
;***************************
;OPEN VALUE
;***************************
openvalue:
            setb   cm_a
            clr    cm_b

            ret

;****************************
;judge value
;****************************
judgevalue: clr    f_value
            setb   overload
            mov    valuecount,#15
setwatchdog:mov    a,valuecount
            cpl    watchdog
            jnz    setwatchdog

            mov    valuecount,#50
value_wait0:jnb    overload,judgevalue0
            mov    a,valuecount
            cpl    watchdog
            jnz    value_wait0
            setb   f_value
            ret
judgevalue0:mov    valuecount,#10
setwatchdog1:
            cpl    watchdog
            mov    a,valuecount
            jnz    setwatchdog1

            setb   overload
            mov    valuecount,#50
value_wait1:jb     overload,judgevalue1
            mov    a,valuecount
            cpl    watchdog
            jnz    value_wait1
            setb   f_value
judgevalue1:
            ret

;****************************
;write a byte to 74HC595
;****************************
write_595:   mov rrx0,#8
write_595_1:
             clr c
             rlc a
             jc  write_595_0
             clr ser
             ljmp write_595_2
write_595_0: setb ser
write_595_2: clr srclk
             nop
             nop
             nop
             setb srclk
             djnz rrx0,write_595_1
             ret


;*******************************
;read the formation of the water
;---|_|-----
;*******************************
read_plus:  jb plusa,read_plusa0
            lcall delay_10ms
            jb plusa,read_plusa0
            jnb lastplusa,read_plusa0
            setb f_plusa
            clr lastplusa
            ljmp  read_plusb
read_plusa0:setb lastplusa

read_plusb: jb plusb,read_plusb0
            lcall delay_10ms
            jb plusb,read_plusb0
            jnb lastplusb,read_plusb0
            setb f_plusb
            clr lastplusb
            ret
read_plusb0:setb lastplusb
            jnb   f_plusa,read_plus0
            clr   f_plusa
            jnb   f_plusb,read_plus0
            clr   f_plusb
           ; inc   sal_time
           ; mov   a,sal_time
           ; lcall beep_1
           ; cjne  a,#10,read_plus0
           ; mov   sal_time,#0
             setb  f_updata
read_plus0:


            ret



;***************************
;delay_1ms program
;***************************
delay_1ms:  mov r6,#0ah
      dl2:  mov r7,#18h
      dl1:  nop
            nop
            djnz r7,dl1
            djnz r6,dl2
            ret
;***************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -