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

📄 waterm2.asm

📁 一卡通源码程序是我公司的一卡通源码程序,绝对难得
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;*******************************************;
;           Author:David zhang              ;
;           Date:  2004-10-13               ;
;       the water_pos control program       ;
;          use the mcu AT89C52              ;
;          or  the mcu AT89S52              ;
;          or  the mcu AT89C55(WD)          ;
;    the at89c2051  use  the  id_2051.asm   ;
;          updata: 2004-10-21               ;
;  本程序为计流量方式,计量单位为x哩/升     ;
;         初始单价为:10哩/升               ;
;          Describe:  ASM51                 ;
;  用户名称: 高淳漆桥中学                   ;
;*******************************************;
             org 0000h                      ;
;*******************************************;
;the special register define zero           ;
;*******************************************;

        send    equ p1.0                    ;红外开关
        recieve equ p1.1

        wp    equ   p1.4
        scl1  equ   P1.5
        sda1  equ   P1.6

        watchdog equ p1.7

        ser   equ P2.0
        srclk equ p2.1
        rrclk equ P2.2

        plusa equ P2.3
        plusb equ P2.4
        cm_a  equ p2.5
        cm_b  equ p2.6

        re184 equ p3.2
        beep  equ p3.6
        r2051 equ p3.5





;*******************************************;
;   bit define zero                         ;
;*******************************************;
        f_plusa   bit 00h
        f_plusb   bit 01h
        lastplusa bit 02h
        lastplusb bit 03h

        f_iic     bit 04h
        f_zh      bit 05h
        f_com     bit 06h
        f_master  bit 07h
        f_status  bit 08h
        f_sal     bit 09h
        f_60ms    bit 0ah
        f_id      bit 0bh
        f_card    bit 0ch
        f_erra    bit 0dh
        f_card0   bit 0eh
        f_expence bit 0fh
        f_updata  bit 10h
        f_kguan0  bit 11h
        f_kguan1  bit 12h
        f_money   bit 13h
        f_time    bit 14h
        f_kguan2  bit 15h



;******************************
;valible define
;******************************
        icdata     equ 08h                   ;FM24-16从指定地址读写
        icadd_h    equ 09h
        icadd_l    equ 0ah

        money_h    equ 0bh                   ;金额的高字节
        money_x    equ 0ch
        money_l    equ 0dh

        expence_h  equ 0eh    ;消费额高字节
        expence_x  equ 0fh
        expence_l  equ 10h

        liuliang_h equ 11h    ;流量高字节
        liuliang_x equ 12h
        liuliang_l equ 13h

        rate       equ 14h    ;单价

        ;=================================
        money_hbcd equ 15h    ;未用
        money_xbcd equ 16h    ;未用
        money_lbcd equ 17h    ;未用
        ;==================================

        dispbuf0   equ 18h    ;显示缓冲区
        dispbuf1   equ 19h
        dispbuf2   equ 1ah
        dispbuf3   equ 1bh
        dispbuf4   equ 1ch
        dispbuf5   equ 1dh


        address    equ 1eh     ;本机地址

        rega       equ 1fh

        ;*******************;

        length     equ 23h     ;和管理机通信的数据长度
        pf         equ 24h     ;校验和


        ricon      equ 25h     ;和管理机通信接受存储指针
        rimod1     equ 26h

        master     equ 27h     ;管理机地址存放单元
        status     equ 28h     ;POS功能状态存放单元

        Inline_Or_Offline_Count   equ 29h

        sendnum    equ 2ah    ;发送字节数

        ricon1     equ 2bh
        error      equ 2ch
        Request_Information_Count equ 2dh
        Card_On_Or_Off_Count      equ 2eh

        rimod2     equ 2fh




        idnum0     equ 30h       ;卡号
        idnum1     equ 31h
        idnum2     equ 32h
        idnum3     equ 33h
        idnum4     equ 34h
        idnum5     equ 35h
        ;=========================
        assic0     equ 36h
        assic1     equ 37h
        assic2     equ 38h
        assic3     equ 39h
        assic4     equ 3ah
        assic5     equ 3bh
        assic6     equ 3ch
        assic7     equ 3dh
        assic8     equ 3eh
        assic9     equ 3fh
        assic10    equ 40h
        assic11    equ 41h
        ;==========================
        ricon2     equ 42h    ;接受卡号的存储指针
        sicon      equ 43h
        sicon0     equ 44h

        sal_time   equ 45h
        rimod      equ 46h
        sicon1     equ 47h
        rrx        equ 48h
        rrx0       equ 49h


        rrx1       equ 4ah
        rrx3       equ 4bh
        sdispbuf0  equ 50h
        sdispbuf1  equ 51h
        sdispbuf2  equ 53h
        dmoney_h   equ 54h
        dmoney_x   equ 55h
        dmoney_l   equ 56h
        daddr_h    equ 57h
        daddr_l    equ 58h
        rcount     equ 59h
        kgcount    equ 5ah
        salecount  equ 5bh
        disp_time  equ 5ch
        rrx4       equ 5dh

        r_sp       equ 60h

        recievebuf equ 0a0h
        sendbuf    equ 0c0h
        salbuf     equ 0e0h



;********************************
;const define zero
;********************************
       ;=========================
       ; 出错信息处理
       ;=========================
       err0      equ  0
       err1      equ  1
       err2      equ  2
       err3      equ  3
       err4      equ  4
       err5      equ  5
       err6      equ  6
       err7      equ  7
       err8      equ  8
       err9      equ  9
       err10     equ  10
       err11     equ  11
       err12     equ  12
       err13     equ  13
       err14     equ  14
       err15     equ  15
       ;==========================
       ;==========================

       bn        equ  12        ;ID卡送字节数

       ;==========================
       ;==========================
       ;铁电信息
       ;==========================
       fm_flag0  equ  0000h     ;铁电中的系统标志
       fm_master equ  0001h     ;铁电中的管理器地址
       fm_addr   equ  0002h     ;铁电中的本机地址
       fm_status equ  0003h     ;铁电中的功能状态


       sal_rate  equ  0010h
       sal_flag  equ  0011h
       sal_beg   equ  0012h
       sal_end   equ  0013h
       fm_buf    equ  0100h
       ;===========================
       ;===========================
       baud      equ  0f4h      ;//ff:fd  ff:fa ff:f7 ff:f4 ff:ee ff:dc
                                ;  115200 57600 38400 28800 19200 9600




        ljmp main


        org 0003h
        ljmp main


        org  000bh
        ljmp del_timer0




;******************************
;与读卡头通信通过2051转换成并口
;*****************************

        org  0013h
        ljmp int_1




        org 001bh
        ljmp  _timer11



;*********************************
;和集线器通信波特率57600
;*********************************
        org 0023h


        push psw
        push acc
        push dph
        push dpl
        push 00h
        push b


        jbc ri,r_ceive

r_send: clr ti              ;发送数据
        mov  a,sendnum
        jz r_send0
        mov r0,sicon
        mov a,@r0
        mov sbuf,a

        inc sicon
        dec sendnum
        ljmp r_send1

r_send0:clr re184
r_send1:ljmp d_reti





;**********************************
;多机通信下的接受数据状态
;**********************************

r_ceive:
        mov rega,sbuf
        clr ri
        mov a,rimod
        anl a,#07h
        rl a
        add a,rimod

	mov dptr,#ritab
	jmp @a+dptr
ritab:  ljmp r_mod0
        ljmp r_mod1
        ljmp r_mod2
        ljmp r_mod3
        ljmp r_mod4
        ljmp r_mod4
        ljmp r_mod4
;****************************
;第一字节是否为pos机号
;****************************


r_mod0: mov a,rega
        cjne a,address,r_mod00
        clr sm2
        inc rimod
r_mod00:ljmp d_reti



;****************************
;第二字节为数据长度
;****************************
r_mod1: mov a,rega
        mov pf,a
        clr c
        subb a,#02h
        mov length,a
        mov ricon,#recievebuf
        inc rimod
        ljmp d_reti



;***************************
;接收数据部分
;***************************
r_mod2: mov a,rega
        mov r0,ricon
        mov @r0,a
        inc ricon
        add a,pf                           ;处理校验和
        mov pf,a
        djnz length,r_mod20
        inc rimod
r_mod20:ljmp d_reti


;**************************
;接收校验和
;**************************
r_mod3:
        mov a,rega
        cjne a,pf,r_mod30
        mov ricon,#recievebuf
        mov r0,ricon
        mov a,@r0
        anl a,#07h
        inc ricon
        mov rrx3,a
        rl a
        add a,rrx3
        mov dptr,#ritab1
        jmp @a+dptr
ritab1: ljmp r_mod30
        ljmp r_mod31
        ljmp r_mod32
        ljmp r_mod33
        ljmp r_mod34
        ljmp r_mod35
        ljmp r_mod36


;***********************
;***********************
r_mod30:nop
        ljmp r_mod4
;***********************
;功能号为01h
;为轮循命令
;***********************
r_mod31: mov a,status
         mov r0,ricon
         inc ricon
         mov b,@r0
         cjne a,b,r_mod310

r_mod312:mov a,master
         mov r0,ricon
         mov b,@r0
         cjne a,b,r_mod311
         ljmp r_mod313

r_mod310:mov status,b
         setb f_status
         ljmp r_mod312

r_mod311:mov master,b
         setb f_master

r_mod313:setb f_com
         mov Inline_Or_Offline_Count,#0


;*******************************;
;轮循状态下是否有帐户请求标志   ;
;                               ;
;第一优先级为帐户申请           ;
;*******************************;
         jnb f_zh,r_mod36
         mov sicon1,#sendbuf    ;写帐户申请数据

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

         mov r0,sicon1
         mov @r0,#02h
         mov pf,#0bh
         inc sicon1

         mov r0,sicon1
         mov @r0,address
         inc sicon1
         mov a,pf
         add a,address
         clr c
         mov pf,a

         mov r0,sicon1
         mov @r0,idnum0
         inc sicon1
         mov a,pf
         add a,idnum0
         clr c
         mov pf,a

         mov r0,sicon1
         mov @r0,idnum1
         inc sicon1
         mov a,pf
         add a,idnum1
         clr c
         mov pf,a

         mov r0,sicon1
         mov @r0,idnum2
         inc sicon1
         mov a,pf
         add a,idnum2
         clr c
         mov pf,a

         mov r0,sicon1
         mov @r0,idnum3
         inc sicon1
         mov a,pf
         add a,idnum3
         clr c
         mov pf,a

         mov r0,sicon1
         mov @r0,idnum4
         inc sicon1
         mov a,pf
         add a,idnum4
         clr c
         mov pf,a

         mov r0,sicon1
         mov @r0,pf
         mov sendnum,#09h
         mov sicon,#sendbuf
         setb ti
         setb re184
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         ljmp r_mod4


;*********************************
;是否有消费发送数据
;*********************************

r_mod36: jnb f_sal,r_mod37
         push 01h
         mov sicon1,#sendbuf
         mov r0,sicon1
         mov @r0,#11h
         inc sicon1
         mov r0,sicon1
         mov @r0,#03h
         inc sicon1
         mov r0,sicon1
         mov pf,#14h
         mov r1,#salbuf
         mov rrx,#14

r_mod360:mov a,@r1
         inc r1
         mov @r0,a
         inc r0
         add a,pf
         mov pf,a
         djnz rrx,r_mod360

         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
         mov @r0,status
         inc sicon1

         mov r0,sicon1
         mov a,pf
         add a,status
         mov pf,a
         mov @r0,pf

         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


⌨️ 快捷键说明

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