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

📄 waterm1.01.asm

📁 一卡通源码程序是我公司的一卡通源码程序,绝对难得
💻 ASM
📖 第 1 页 / 共 5 页
字号:
         mov @r0,pf
         mov sendnum,#11h
         mov sicon,#sendbuf
         setb ti
         setb re184
         nop
         nop
         nop
         nop
         nop
         nop
         pop 01h
         ljmp r_mod4             ;写消费发送数据

;*******************************************
;空闲应答
;*******************************************


r_mod37: mov sicon1,#sendbuf     ;写普通应答数据
         mov r0,sicon1
         mov @r0,#05h
         inc sicon1

         mov r0,sicon1
         mov @r0,#01h
         inc sicon1

         mov pf,#06h
         mov r0,sicon1
         mov @r0,address
         inc sicon1

         mov r0,sicon1
         mov a,pf
         add a,address
         mov pf,a
         jnb  f_valuerr,r_mod37_1
         mov @r0,#0feh
         inc  sicon1
         mov  r0,sicon1
         mov  a,pf
         add  a,#0feh
         mov  pf,a
         mov  @r0,pf
         ljmp r_mod37_2
r_mod37_1:
         mov @r0,status
         inc sicon1

         mov r0,sicon1
         mov a,pf
         add a,status
         mov pf,a
         mov @r0,pf
r_mod37_2:
         mov sendnum,#05h
         mov sicon,#sendbuf
         setb ti
         setb re184
         nop
         nop
         nop
         nop
         nop
         nop
         ljmp r_mod4




;**********************************
;功能号为0x2
;请求到指定id号信息
;**********************************
r_mod32:   clr f_zh
           ljmp r_mod4


;*********************************
;功能号为0x3
;时间更新信息
;*********************************
r_mod33:    nop
            ljmp r_mod4


;*********************************
;功能号为0x4
;收到消费应答
;*********************************
r_mod34:    mov r0,ricon
            mov a,@r0
            cjne a,#55h,r_mod340
            clr f_sal
r_mod340:   ljmp r_mod4



;********************************
;功能号为0x5
;在线测试应答
;********************************
r_mod35:    mov sicon1,#sendbuf
            mov r0,sicon1
            mov @r0,#03h
            inc sicon1
            mov r0,sicon1
            mov @r0,#04h
            mov pf,#07h
            inc sicon1
            mov r0,sicon1
            mov @r0,pf
            mov sendnum,#03h
            mov sicon,#sendbuf
            setb ti
            setb re184
            nop
            nop
            nop
            nop
            nop
            nop

r_mod4:
            mov rimod,#0
            setb sm2


d_reti:     pop b
            pop 00h
            pop dpl
            pop dph
            pop acc
            pop psw
            reti









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
            clr f_value
            clr f_valuerr

            mov hongcount,#0
            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
            ;lcall delay_254ms
            ;lcall delay_254ms
            ;lcall delay_254ms
            ;lcall delay_254ms
            ;lcall delay_254ms
            ;lcall delay_254ms
            ;lcall delay_254ms
            ;======================================
            ;测试阀门部分
            ;======================================
            ;setb  ea

            ;lcall openvalue
            ;lcall judgevalue






            ;==========================
            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
            ;clr    ea
            lcall  readrecord
            ;setb   ea





            ;==========================
            ;系统状态更新
            ;==========================
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:
            lcall openvalue
            ;========================================================
            ;需要添加阀门检测处理
            ;========================================================
            ;lcall judgevalue
            ;jnb   f_value,unconexpence_11
            ;lcall closevalue
            ;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 openvalue
            ;lcall judgevalue
            ;jnb   f_value,unconexpence_11
            ;setb  f_valuerr
            ;mov   error,#14
            ;ljmp  erra_del0


unconexpence_11: clr f_valuerr
            ljmp  unconexpence
lfail_zh:   ljmp  fail_zh
;================================
;申请到了帐户
;================================
del_zh:     cpl watchdog
            lcall acounts
            jb f_erra,erra_del0
            lcall openvalue
            ;===================================
            ;需要添加阀门检测处理
            ;===================================
            ;lcall judgevalue
            ;jnb   f_value,conexpence
            ;lcall closevalue
            ;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 judgevalue
            ;jnb   f_value,conexpence
            ;setb  f_valuerr
            ;mov   error,#14       ;
            ljmp  conexpence

erra_del0:  ljmp  erra_del
;=================================;
;                                 ;
;联机消费                         ;
;=================================;
conexpence: clr f_valuerr
            mov sal_time,#0
            setb f_card
            setb f_card0
            cpl  plus
            nop
            nop
            cpl  plus
            ;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,#idnum_time


            ;============================
            ;消费结算
            ;============================
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_updata,check_card
            clr     f_updata
            lcall   updata

check_card:
            jb     f_card,conexpence0
            cpl    plus
            nop
            nop
            cpl    plus
            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
            lcall  collect_saledata
            setb   f_sal
            clr    f_kguan2
            mov    kgcount,#0
            lcall  disp_name

            clr    f_id
            ljmp   mmain

check_card1:lcall  save_saledata
            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
            lcall openvalue
            ljmp  unconexpence0

;=====================
;脱机消费状态
;=====================
unconexpence:
            cpl watchdog
            mov error,#err12
            setb f_erra

            ;======================
unconexpence0:
            ;setb  et1
            mov  sal_time,#0
            setb f_card
            cpl  plus
            nop
            nop
            cpl  plus
            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,#idnum_time
            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_updata,check_card_in
            clr    f_updata
            lcall  updata1
            ljmp   check_card_in
            ;========================
check_card_in:
            jb     f_card,unconexpence1
            cpl    plus
            nop
            nop
            nop

⌨️ 快捷键说明

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