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

📄 waterm2.asm

📁 一卡通源码程序是我公司的一卡通源码程序,绝对难得
💻 ASM
📖 第 1 页 / 共 4 页
字号:







main:
            mov sp,#r_sp
            cpl watchdog


            clr re184
            lcall iniall
            cpl watchdog


            ;***********************
            ;clear the sign of valibale
            ;***********************

            clr f_plusa
            clr f_plusb
            clr lastplusa
            clr lastplusb

            clr f_iic

            clr f_zh
            clr f_com
            clr f_master
            clr f_status
            clr f_sal
            clr f_id
            clr f_60ms
            clr f_card
            clr f_card0
            clr f_updata
            clr f_kguan0
            clr f_kguan1
            clr f_kguan2
            clr f_erra
            clr f_money
            clr f_time

            mov rimod,#0
            mov rimod1,#0
            mov rimod2,#0
            mov rcount,#0
            mov kgcount,#0
            mov salecount,#1
            lcall beep_1
            lcall read_address
            lcall disp_name
            lcall closevalue







            ;==========================
            mov dptr,#fm_master
            mov icadd_h,dph
            mov icadd_l,dpl
            lcall irdbyte
            mov master,icdata

            ;==========================
            mov dptr,#fm_status
            mov icadd_h,dph
            mov icadd_l,dpl
            lcall irdbyte
            mov status,icdata


            lcall read_sys


            setb ea

            ;==========================
mmain:      cpl watchdog

            ;===========================
            ;判断是否有脱机消费数据
            ;===========================



            jnb    f_com,upstatus
            jb     f_sal,upstatus
            lcall  readrecord






            ;==========================
            ;系统状态更新
            ;==========================
upstatus:   jnb f_status,upmaster
            clr f_status
            mov dptr,#fm_status
            mov icadd_h,dph
            mov icadd_l,dpl
            mov icdata,status
            lcall irwrbyte
upmaster:   jnb f_master,insertcard
            clr f_master
            mov dptr,#fm_master
            mov icadd_h,dph
            mov icadd_l,dpl
            mov icdata,master
            mov icdata,master
            lcall irwrbyte
            ;===========================
            ;靠卡消费部分
            ;===========================

insertcard: jb f_id,expence
            lcall disp_name
            ljmp mmain

expence:    clr f_id

            jb  f_sal,mmain
            clr f_id
            lcall openvalue
            jnb f_com,lunconexpence
            setb f_zh
            nop
            nop
            nop



            mov   Request_Information_Count,#50
wait:       jnb f_zh,del_zh
            cpl watchdog
            mov a,Request_Information_Count
            jnz wait
            jb f_zh,lfail_zh
            ljmp  del_zh
lunconexpence:
            ljmp  unconexpence
lfail_zh:   ljmp  fail_zh
;================================
;申请到了帐户
;================================
del_zh:     cpl watchdog
            lcall acounts
            jb f_erra,erra_del0
            ljmp  conexpence

erra_del0:  ljmp erra_del
;=================================;
;                                 ;
;联机消费                         ;
;=================================;
conexpence: mov sal_time,#0
            setb f_card
            setb f_card0
            setb et1
            mov  expence_h,#0
            mov  expence_x,#0
            mov  expence_l,#0
            mov  liuliang_h,#0
            mov  liuliang_x,#0
            mov  liuliang_l,#0
            mov Card_On_Or_Off_Count,#50


            ;============================
            ;消费结算
            ;============================
conexpence0:
            cpl    watchdog
            jnb     f_kguan1,conexpence2
            clr     f_kguan1
            mov     a,kgcount
            mov     b,#2
            div     ab
            mov     a,b
            jz      open1
            lcall   closevalue
            setb    f_kguan2
            ljmp    check_card
open1:      lcall   openvalue
            clr     f_kguan2
conexpence2:
            jb      f_kguan2,check_card
            jnb       f_60ms,check_card
            clr     f_60ms
            lcall   read_plus
            jnb     f_updata,check_card
            clr     f_updata
            lcall   updata

check_card:
            jb     f_card,conexpence0
            lcall  closevalue
            clr    et1
            jnb     f_com,check_card1
            lcall  collect_saledata
            setb   f_sal
            clr    f_kguan2
            mov    kgcount,#0
            lcall  disp_name
            ljmp   mmain

check_card1:lcall  save_saledata
            clr    f_kguan2
            mov    kgcount,#0
            lcall  disp_name
            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 error,#err12
            setb f_erra

            ;======================
unconexpence0:
            setb  et1
            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
            mov  Card_On_Or_Off_Count,#50
            lcall erro_del
            clr f_erra
            ;========================
            ;脱机消费结算
            ;========================
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_60ms,check_card_in
            clr    f_60ms
            lcall  read_plus
            jnb    f_updata,check_card_in
            clr    f_updata
            lcall  updata1
            ljmp   check_card_in
            ;========================
check_card_in:
            jb     f_card,unconexpence1
            lcall  closevalue
            nop
            nop
            mov    kgcount,#0
            clr    f_kguan2
            clr    et1
            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,#0ah
            lcall irwrbyte

            ret




;*******************************************
;脱机消费数据更新
;*******************************************
updata1:   lcall expence_add
           lcall liuliang_add
           mov   money_h,expence_h
           mov   money_x,expence_x
           mov   money_l,expence_l

           lcall disp_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
           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





           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,#41h
           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,#0ffh
            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,#00010110b     ;ea   *   *  es  et1 ex1 et0 ex0

            ;setb ea
            ret


;****************************
;CLOSE VALUE
;****************************
closevalue:
            setb  cm_a
            nop
            nop
            clr   cm_b
            nop
            nop
            ret
;***************************
;OPEN VALUE

⌨️ 快捷键说明

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