📄 waterm1.01.asm
字号:
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 + -