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

📄 waterm4.1.asm

📁 一卡通源码程序是我公司的一卡通源码程序,绝对难得
💻 ASM
📖 第 1 页 / 共 5 页
字号:
            mov dispbuf1,#0ah
            mov dispbuf0,#0ah
            ret

;******************************
;显示子程序
;******************************
disp:       mov r6,#5
            mov r0,#dispbuf4
disp0:      mov a,@r0
            lcall decode
            lcall write_595
            dec r0
            djnz r6,disp0
            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 b,rate
            ;mov a,#decmoney
            ;div  ab
            ;mov rate,a

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


;**************************************
;双字节相乘
;**************************************
mul22:  mov  r7,assic4

        mov  r6,assic5
        mov  r5,#03h
        mov  r4,#0e8h

mul1:   mov   r0,#dtr0
        mov   a,r6
        mov   b,r4
        mul   ab
        mov   @r0,a
        mov   r3,b
mul2:   mov   a,r7
        mov   b,r4
        mul   ab
        add   a,r3
        mov   r3,a
        mov   a,b
        addc  a,#00h
        mov   r2,a
mul3:   mov   a,r6
        mov   b,r5
        mul   ab
        add   a,r3
        dec  r0
        mov   @r0,a
        mov   a,r2
        addc  a,b
        mov   r2,a
        jnc   mul4
        mov   r1,#01h
mul4:   mov   a,r7
        mov   b,r5
        mul   ab
        add   a,r2
        dec  r0
        mov   @r0,a
        mov   a,b
        addc  a,r1
        dec  r0
        mov   @r0,a
        ret
;************************************
;整数加小数
;************************************
addmoney:mov  a,assic6
         mov  b,#10
         mul  ab
         mov  r0,#dtr1
         mov  @r0,a
         inc  r0
         mov  @r0,b
         mov  r0,#dtr0
         mov  b,@r0
         add  a ,b
         mov  r0,#dtr0
         mov  @r0,a
         mov  r0,#dtr2
         mov  a,@r0
         mov  r0,#dtr0
         dec  r0
         mov  b,@r0
         addc a,b
         mov  @r0,a
         dec  r0
         mov  a,@r0
         addc a,#0
         mov  @r0,a
         mov  r0,#dtr0
         mov  money_l,@r0
         dec  r0
         mov  money_x,@r0
         dec 

⌨️ 快捷键说明

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