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

📄 waterm1.01.asm

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

;*********************************
;错误信息处理
;*********************************
erro_del:   mov a,error
            clr f_erra
            rl a
            add a,error
            mov dptr,#ritab2
            jmp @a+dptr
ritab2:     ljmp  erro_del0
            ljmp  erro_del1
            ljmp  erro_del2
            ljmp  erro_del3
            ljmp  erro_del4
            ljmp  erro_del5
            ljmp  erro_del6
            ljmp  erro_del7
            ljmp  erro_del8
            ljmp  erro_del9
            ljmp  erro_del10
            ljmp  erro_del11
            ljmp  erro_del12
            ljmp  erro_del13
            ljmp  erro_del14
            ljmp  erro_del15
            ljmp  erro_del16
erro_del0:  clr beep
                                ;错误信息未定义
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#00h
            mov dispbuf0,#00h
            lcall disp
            lcall delay_1500ms

            setb  beep
            lcall disp_name
            ret

erro_del1:  clr beep             ;错误信息未定义
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#00h
            mov dispbuf0,#01h
            lcall disp
            lcall delay_1500ms
            setb beep
            lcall disp_name
            ret

erro_del2:  clr beep             ;错误信息未定义
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#00h
            mov dispbuf0,#02h
            lcall disp
            lcall delay_1500ms
            setb beep
            lcall disp_name
            ret

erro_del3:  clr beep             ;错误信息未定义
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#00h
            mov dispbuf0,#03h
            lcall disp
            lcall delay_1500ms
            setb beep
            lcall disp_name
            ret

erro_del4:  clr beep              ;错误信息未定义
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#00h
            mov dispbuf0,#04h
            lcall disp
            lcall delay_1500ms
            setb beep
            lcall disp_name
            ret

erro_del5:  clr beep               ;错误信息未定义
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#00h
            mov dispbuf0,#05h
            lcall disp
            lcall delay_1500ms
            setb beep
            lcall disp_name
            ret

erro_del6:  clr beep               ;错误信息未定义
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#00h
            mov dispbuf0,#06h
            lcall disp
            lcall delay_1500ms
            setb beep
            lcall disp_name
            ret

erro_del7:  clr  beep              ;错误信息未定义
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#00h
            mov dispbuf0,#07h
            lcall disp
            lcall delay_1500ms
            setb  beep
            lcall disp_name
            ret

erro_del8:  clr  beep              ;错误信息未定义
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#00h
            mov dispbuf0,#08h
            lcall disp
            lcall delay_1500ms
            setb beep
            lcall disp_name
            ret

erro_del9:  clr beep              ;卡中余额不足
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#00h
            mov dispbuf0,#09h
            lcall disp
            lcall delay_1500ms
            setb  beep
            lcall disp_name
            ret

erro_del10: clr beep               ;未注册卡

            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#01h
            mov dispbuf0,#00h
            lcall disp
            lcall delay_1500ms
            setb beep
            lcall disp_name
            ret

erro_del11: clr beep               ;挂失卡

            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#01h
            mov dispbuf0,#01h
            lcall disp
            lcall delay_1500ms
            setb  beep
            lcall disp_name
            ret

erro_del12: clr beep               ;卡号比较错误

            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#01h
            mov dispbuf0,#02h
            lcall disp
            lcall delay_1500ms
            setb  beep
            lcall disp_name
            ret

erro_del13: clr  beep              ;请求数据超时
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#01h
            mov dispbuf0,#03h
            lcall disp
            lcall delay_1500ms
            setb  beep
            lcall disp_name
            ret

erro_del14: clr beep
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#01h
            mov dispbuf0,#04h
            lcall disp
            lcall delay_1500ms
            setb  beep
            lcall disp_name
            ret

erro_del15: clr  beep
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#01h
            mov dispbuf0,#05h
            lcall disp
            lcall delay_1500ms

            setb beep
            lcall disp_name
            ret

erro_del16: clr beep
            mov dispbuf4,#0ch
            mov dispbuf3,#0dh
            mov dispbuf2,#0dh
            mov dispbuf1,#01h
            mov dispbuf0,#06h
            lcall disp
            lcall delay_1500ms
            setb  beep
            lcall disp_name
            ret
;************************************
;count处理帐户信息
;************************************
acounts:    lcall judgeflagid
            jb f_erra,acounts0
            mov sicon0,#0a7h
            mov r0,sicon0
            mov a,@r0
            mov money_h,a
            inc r0
            mov a,@r0
            mov money_x,a
            inc r0
            mov a,@r0
            mov money_l,a
            inc r0
            mov a,@r0
            mov rate,a
            ;==========================
            ;==========================
            mov dptr,#sal_rate
            mov icadd_h,dph
            mov icadd_l,dpl
            mov icdata,rate
            lcall irwrbyte

            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 disp_money


acounts0:   ret
;************************************
;收集消费数据
;************************************
collect_saledata:
            mov r0,#salbuf
            mov @r0,#41h
            inc r0
            mov @r0,address
            inc r0
            mov @r0,idnum0
            inc r0
            mov @r0,idnum1
            inc r0
            mov @r0,idnum2
            inc r0
            mov @r0,idnum3
            inc r0
            mov @r0,idnum4
            inc r0
            lcall judge_expence
            jnb f_expence,collect_saledata0
            clr f_expence
            mov @r0,#0
            inc r0
            mov @r0,#0
            inc r0
            mov @r0,rate
            inc r0
            mov @r0,#0
            inc r0
            mov @r0,#0
            inc r0
            mov @r0,#50
            inc r0
            mov @r0,salecount
            inc salecount
            ljmp collect_saledata1
collect_saledata0:
            mov @r0,liuliang_h
            inc r0
            mov @r0,liuliang_x
            inc r0
            mov @r0,liuliang_l
            inc r0
            mov @r0,expence_h
            inc r0
            mov @r0,expence_x
            inc r0
            mov @r0,expence_l
            inc r0
            mov @r0,salecount
            inc salecount
collect_saledata1:
            ret






;************************************
;判断消费是否为0
;************************************
judge_expence:
           clr  f_expence
           mov  a,expence_h
           cjne a,#0,judge_expence0
           mov  a,expence_x
           cjne a,#0,judge_expence0
           mov  a,expence_l
           clr  c
           cjne a,#50,judge_expence1
judge_expence1:
           jnc  judge_expence0
           clr  c
           setb f_expence
judge_expence0:
           ret


;************************************
;判断卡的合法性
;************************************
judgeflagid: clr f_erra
             mov sicon0,#recievebuf
             mov r0,sicon0
             inc r0
             mov a,@r0
             mov b,a
             inc sicon0
             inc sicon0
             rl a

             add a,b
             mov dptr,#ritab4
             jmp @a+dptr
ritab4:      ljmp judge0
             ljmp judge1
             ljmp judge2
             ljmp judge3
;**************************************
;写未注册代码
;**************************************

judge0:      mov error,#err10
             setb f_erra
             ljmp judge8

;**************************************
;合法卡
;**************************************

judge1:      ljmp judge4

;**************************************
;写挂失卡
;**************************************

judge2:      mov error,#err11
             setb f_erra
             ljmp judge8


judge3:



judge4:      ;jb f_erra,judge6
             mov r0,sicon0
             mov a,@r0
             cjne a,idnum0,judge5
             inc sicon0
             mov r0,sicon0
             mov a,@r0
             cjne a,idnum1,judge5
             inc sicon0
             mov r0,sicon0
             mov a,@r0
             cjne a,idnum2,judge5
             inc sicon0
             mov r0,sicon0
             mov a,@r0
             cjne a,idnum3,judge5
             inc sicon0
             mov r0,sicon0
             mov a,@r0
             cjne a,idnum4,judge5
             ljmp judge6



judge5:      mov error,#err14
             setb f_erra
             ljmp judge8

judge6:      inc sicon0
             mov r0,sicon0
             mov a,@r0
             clr c
             cjne a,#80h,judge7
judge7:      jc judge8
             mov error,#err9
             setb f_erra



judge8:
             ret


;************************************
;定时器0中断服务函数
;************************************
del_timer0:
             push psw
             push acc


             clr tr0
             mov th0,#2ch
             mov tl0,#90h
             setb tr0

             setb f_60ms
             ;==========================
             ;==========================
             mov  a,valuecount
             dec  a
             mov  valuecount,a


             mov  a,disp_time
             inc  a
             mov  disp_time,a
             cjne a,#12,del_timer00
             cpl  f_time
             mov  disp_time,#0

             ;=========================
             ;红外开关处理程序
             ;=========================
del_timer00:
             jnb   f_card,_timer119
             setb recieve

             jb   f_kguan0,_timer118
             jb   recieve,_timer117
             inc  rcount
             mov  a,rcount
             cjne a,#10,_timer119
             mov  rcount,#0
             setb f_kguan0
_timer118:   setb recieve
             jnb  recieve,_timer119

             inc  kgcount
             setb f_kguan1
             clr  f_kguan0




_timer117:   mov  rcount,#0

_timer119:   ;mov  rcount,#0
             jnb f_card,del_timer01
             jb  f_kguan2,del_timer01
             mov a,sal_time
             inc a
             mov sal_time,a
             cjne a,#sale_time,del_timer01
             mov sal_time,#0
             setb f_updata
             inc  hongcount
             mov  a,hongcount
             cjne a,#0ah,del_timer01
             mov  hongcount,#0
             setb et1




del_timer01: mov a,Inline_Or_Offline_Count
             inc a
             cjne a,#17,del_timer1
             clr  f_com

             ljmp del_timer2
del_timer1:
             mov inline_or_offline_count,a
del_timer2:  mov a,Request_Information_

⌨️ 快捷键说明

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