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

📄 p23b-p.asm

📁 一卡通源码程序是我公司的一卡通源码程序,绝对难得
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;================================
;       Terminal Program p23A
;       2001.05.6
;       SLE44R31/M1/ML
;================================
	org 0000h
;----------------------------------
;       Const     Define
;----------------------------------
	null    equ    35
        sleep   equ    2
        bpnum   equ    10
        delay   equ    15
	dslep   equ    7
	dfcom   equ    18            ;'-'
	nfcom   equ    0a3h          ;'.'
;----------------------------------
	kb_0    equ     0
	kb_1    equ     1
	kb_2    equ     2
	kb_3    equ     3
	kb_4    equ     4
	kb_5    equ     5
	kb_6    equ     6
	kb_7    equ     7
	kb_8    equ     8
	kb_9    equ     9
	kb_a    equ     10
	kb_b    equ     11
	kb_dd   equ     12
	kb_p    equ     13
	kb_m    equ     14
	kb_eq   equ     15
	kb_cl   equ     16
	kb_en   equ     17
	kb_f1   equ     18
	kb_f2   equ     19

	k_f10   equ     20           ;F1+A+0
	k_f11   equ     21           ;F1+A+1
	k_f12   equ     22           ;F1+A+2
	k_f13   equ     23           ;F1+A+3
	k_f14   equ     24           ;F1+A+4
	k_f15   equ     25           ;F1+A+5
	k_f16   equ     26           ;F1+A+6

	k_f1d   equ     27           ;F1+A+.
	k_f1eq  equ     28           ;F1+A+=
	k_f1p   equ     29           ;F1+Plus
	k_f1m   equ     30           ;F1+Minus
	k_f2p   equ     31           ;F2+Plus
        k_f2m   equ     32           ;F2+Minus

	k_f1a   equ     33           ;F1+A
	;----------------
	c_rmm   equ     30h          ;Read Main Memory Command
	c_wmm   equ     38h          ;Write Main Memory Command
	c_rpm   equ     34h          ;Read Protect Memory Command
	c_wpm   equ     3ch          ;Write Protect Memory Command
	c_rsm   equ     31h          ;Read Sc Memory Command
	c_wsm   equ     39h          ;Write Sc Memory Command
	c_cvd   equ     33h          ;Comp Verify Data Command
	;----------------
        l_off   equ     3eh             ;lcd off command
        l_on    equ     3fh             ;lcd on command
        l_stl0  equ     0c0h            ;set lcd disp star row 0~63

        d_x0    equ     0b8h            ;set lcd ddram page x
        d_x1    equ     0bah
        d_x2    equ     0bch
        d_x3    equ     0beh

        d_y00   equ     40h             ;set lcd ddram y addr
       ; d_y01   equ     48h
        d_y10   equ     50h
       ; d_y11   equ     58h
       ; d_y20   equ     60h
       ; d_y21   equ     68h
       ; d_y30   equ     70h
       ; d_y31   equ     78h
       ; d_y40   equ     80h
        d_y41   equ     88h
        d_y50   equ     90h
        d_y51   equ     98h
       ; d_y60   equ     0a0h
       ; d_y61   equ     0a8h
        d_y70   equ     0b0h
       ; d_y71   equ     0b8h

        d_hzk   equ     1000h

        ;----------------

	normal  equ     0
	idle    equ     1            ;0-idle  1-all
	keyset  equ     0            ;0-keyset0&&key_a  1-keyset1&&key_a 2-keyset2&&key a
				     ;4-keyset0&&key_b  1-keyset1&&key_b 2-keyset2&&key b
	secnr   equ     0            ;Sector Number
	rf_sor  equ     80h
	rf_rfs  equ     40h
	rf_nrf  equ     02h
	rf_ac   equ     01h
	rf_br   equ     01h
	rf_pre  equ     40h
	rf_cen  equ     20h
	rf_cre  equ     10h
	rf_ppp  equ     06h
	rf_al   equ     80h
	rf_rc   equ     02h
	c_ant   equ     93h          ;command of antioll
	c_sel   equ     93h          ;command of select
	c_hlt   equ     50h          ;command of halt
	;----------------
	f_dt0   equ     0a2h
	f_dt1   equ     13h
	f_dt2   equ     10h
	f_dt3   equ     91h
	;----------------
	c_beg   equ     0e0h         ;Reading Card Main Memory Adress
	c_r_n   equ     32           ;Reading Card Main Memory Numbers
	;----------------
	err_0   equ     00h          ;RF Load_Key Err
	err_1   equ     01h          ;KeyBoard Error
	err_2   equ     02h          ;IC Pedestal Error
	err_3   equ     03h          ;IC Card Bad
	err_4   equ     04h          ;Sc Verfity Error
        ;err_5   equ     05h          ;RF Read Error
        err_5   equ     05h          ;无剩余次数
	err_6   equ     06h          ;Sc Count=0
	err_7   equ     07h          ;Read Error
	err_8   equ     08h          ;Illegal Pullout
	err_9   equ     09h          ;Add or Subb Over
	err_10  equ     0ah          ;Unregister
	err_11  equ     0bh          ;Dark Card
	err_12  equ     0ch          ;Manage Card None Push
	err_13  equ     0dh          ;Communication Error
	err_14  equ     0eh          ;Card Accounts Not Equ Receive Accounts
	err_15  equ     0fh          ;None Normal Card

	menufunc  equ   31h          ;Sale Menu FuncNum
	ratfunc   equ   11h          ;Sale Ration FuncNum
	countfunc equ   21h          ;Sale Count FuncNum
	norsale   equ   01h          ;Sale Normal FuncNum

	norsave   equ   02h          ;Save Normal FuncNum

	;-----------------------
	;     Bit Define
	;-----------------------
	icard_pow   equ     90h      ;Ic Card Power
	icard_rst   equ     91h      ;Ic Card Reset
	icard_clk   equ     92h      ;Ic Card Clock
	icard_dat   equ     93h      ;Ic Card Data
	;-----------------------
        lcd_di      equ     94h      ;lcd d/i
        lcd_rw      equ     95h      ;lcd r/w
        lcd_rst     equ     96h      ;lcd reset
        re184       equ     97h      ;
        ;-----------------------
        icard_chk   equ     0b2h     ;Ic Card Check
        ;887_irq     equ     0b3h     ;12887 irq
        mifs_rst    equ     0b5h     ;Rf Reset

	;-----------------------
	f_rsc   equ     00h          ;Requst Sc
	f_ini   equ     01h
	f_rde   equ     02h          ;Requst quota
	f_pow   equ     03h          ;Soft Switch
	f_ri    equ     04h          ;ri Interrupt
	f_com   equ     05h          ;Communication ?

	f_cny   equ     06h          ;Is Manage Card?
	f_rzh   equ     07h          ;Update Information
	f_rsl   equ     08h          ;Send Offline Sale
	f_sal   equ     09h          ;Request Send Sale
	f_zh    equ     0ah          ;Request Get Accounts
	f_beg   equ     0bh          ;Start Send Offline Sale
	f_mnu   equ     0ch          ;Menu Flag

        f_udt   equ     0dh          ;Stop Update Date & Time

        f_887   equ     0eh          ;Rewrite 887 Date & Time

	f_a_s   equ     0fh          ;1:Sale,0:Deposit

	f_n     equ     10h          ;Entered Key Flag
	f_dd     equ     11h          ;Enter . Key Flag
	f_add   equ     12h          ;Enter + Key Flag
	f_sub   equ     13h          ;Enter - Key Flag
	f_eq    equ     14h          ;Enter = Key Flag

	f_m_p   equ     15h          ;1:miune  0:plus
	f_p_m   equ     16h          ;Copy as f_m_p

	f_tj    equ     17h          ;OffLine

	f_rat   equ     18h          ;Qutoa Flag (Ration)

	bit_c   equ     19h          ;Bit Flag
	f_off   equ     1ah          ;Is Offline Flag
	f_sta   equ     1bh          ;Test Comm Flag
        b_chk   equ     1ch
        f_rwb   equ     1dh
	f_typ   equ     1eh          ;Card Type: 1=IC; 0=RF
        rf_chk  equ     1fh

       ;========================
       ;   Regeist Define
       ;========================
       rb_nme   equ     08h         ;
	v_key   equ     09h         ;Key Vaule
	v0_key  equ     0ah         ;Copy of v_key
	kdt0    equ     0bh         ;Keyboard Scan Code 0
	kdt1    equ     0ch         ;Keyboard Scan Code 1
	kdt2    equ     0dh         ;Keyboard Scan Code 2
	;
	r_mod   equ     0eh         ;RI Inputerrupt Step
	ricon   equ     0fh         ;RI Receive Data Counter
	rir0    equ     10h         ;RI Receive Data Address
	chksum  equ     11h         ;RI CheckSum
	;
	r_nme   equ     12h         ;Terminal Name Regist
	state   equ     13h         ;Terminal Work State
	max_h   equ     14h         ;
	max_l   equ     15h

	beg_h   equ     16h
	beg_l   equ     17h
	end_h   equ     18h
	end_l   equ     19h

	rat_0   equ     1ah         ;Ration
	rat_1   equ     1bh
	rat_2   equ     1ch

	adr_h   equ     1dh         ;Address
	adr_l   equ     1eh

	count   equ     1fh
	;
        r1_374     equ       25h
         a15       equ       28h
         a16       equ       29h
         a17       equ       2ah
         a18       equ       2bh
         en040     equ       2ch
        ; re184    equ       2dh
         bp       equ       2eh
         pow       equ       2fh

	;
        func    equ     26h         ;0=Fc.17,1=Fc.18,2=Fc.19,3=Fc.20,4=Fc.43
        scancount equ   27h         ;=func

        regt    equ     28h         ;Temp Regeist
        reg1    equ     29h         ;Temp Regeist

        reg0    equ     2ah         ;Temp Regeist
        rcr0    equ     2ah         ;=reg0:Copy of R0

        rftyp   equ     2bh

	;
	repeat  equ     2ch         ;Re-Send Sale/Save Count

	lim_cnt equ     2dh         ;Limit Count
	reclen  equ     2dh         ;=lim_cnt: Record Length
	;
	sata    equ     2eh
	r_err   equ     2fh
	;
        x_add   equ     30h             ;x地址
        xb_add  equ     31h
        y_add   equ     32h             ;y地址
        yb_add  equ     33h
        width   equ     34h             ;字符宽度8 or 16
        higth   equ     35h             ;字符高度2
        r_wth   equ     36h             ;右屏字符宽度
        l_wth   equ     37h             ;左屏字符宽度
        smzz    equ     38h             ;列扫描指针
        cbzz    equ     39h             ;查表指针
        h_hzk   equ     3ah             ;汉字库高字节地址
        m_hzk   equ     3bh             ;汉字库中字节地址
        l_hzk   equ     3ch             ;汉字库低字节地址
        hzc_h   equ     3dh             ;hz code h
        hzc_l   equ     3eh             ;hz code l
        shn     equ     3fh

        r_sp    equ     3fh

	;------------------------


        rf0ram  equ     60h
        rf1ram  equ     70h
        rf2ram  equ     80h

        rf3ram  equ     78h         ;=rf1ram+8

        ka0ram  equ     70h         ;=rf1ram
        ka1ram  equ     74h         ;=rf1ram+4

        kb0ram  equ     78h         ;=rf1ram+8
        kb1ram  equ     7ch         ;=rf1ram+12


	;----------------------
        icard_sc0   equ     61h         ;Comp Sc_0
        icard_sc1   equ     62h         ;Comp Sc_1
        icard_sc2   equ     63h         ;Comp Sc_2
        icard_sce   equ     64h         ;ScCompErrCounter

        icard_com   equ     65h         ;IC Read/Write Command
        icard_adr   equ     66h         ;IC Read/Write Address
        icard_dta   equ     67h         ;IC Read/Write Data

        icard_ram   equ     68h         ;32bytes

	;----------------------
	;----------------------
        exp_rm0   equ     88h       ;Expense
        exp_rm1   equ     89h
        exp_rm2   equ     8ah
        exp_rm3   equ     8bh
        exp_rm4   equ     8ch
        exp_rm5   equ     8dh

        sur_rm0   equ     8eh       ;Surplus
        sur_rm1   equ     8fh
        sur_rm2   equ     90h
        sur_rm3   equ     91h
        sur_rm4   equ     92h
        sur_rm5   equ     93h

        augend0   equ     94h       ;Augend
        augend1   equ     95h
        augend2   equ     96h
        augend3   equ     97h
        augend4   equ     98h
        augend5   equ     99h

        lim_rm0   equ     9ah       ;Limit Expense
        lim_rm1   equ     9bh
        lim_rm2   equ     9ch
        lim_rm3   equ     9dh
        lim_rm4   equ     9eh
        lim_rm5   equ     9fh
	;
	;-----------------------
	dflag   equ     0b0h        ;=2:Deposit,=1:Expense,=18:Fetch Money,=33: Sale-Count
	d_nme   equ     0b1h        ;Name
	d_ym    equ     0b2h        ;Date of Expense
	d_dat   equ     0b3h        ;
	d_hor   equ     0b4h        ;Time of Expense
	d_min   equ     0b5h
	dadr_h  equ     0b6h        ;Record Number
	dadr_l  equ     0b7h
	d_exp0  equ     0b8h        ;Expense
	d_exp1  equ     0b9h
	d_exp2  equ     0bah
	d_sur0  equ     0bbh        ;Surplus
	d_sur1  equ     0bch
	d_sur2  equ     0bdh
	madr_h  equ     0beh        ;Manage Card Record Number
	madr_l  equ     0bfh

	;-----------------------
	r_buf   equ     0a0h        ;0a0h-0bfh:32 Temp Buffer
	;
	ribuf   equ     0c0h        ;0c0h-0ffh:64 Receive && Send Buffer
	;*********************************
	;   Address Define
	;*********************************
	rfdata  EQU     8000H
	STACO   EQU     8001H
	EEABL   EQU     8002H
	BCNTS   EQU     8003H
	BCNTR   EQU     8004H
	BAUDR   EQU     8005H
	TOC     EQU     8006H
	MODE    EQU     8007H
	CRCDA   EQU     8008H
	CRCST   EQU     8009H
	KEYDA   EQU     800AH
	KEYST   EQU     800BH
	KEYAD   EQU     800CH
	RCODE   EQU     800EH
	;
        d1_374  equ     9000h
        d2_374  equ     0a000h
        d_887   equ     0b000h
        rsec    equ     0b000h      ;DS12887 Second Address
        rmin    equ     0b002h      ;DS12887 Minute Address
        rhor    equ     0b004h      ;DS12887 hour Address
        rwek    equ     0b006h      ;DS12887 Weekday Address
        rdat    equ     0b007h      ;DS12887 Day Address
        rmon    equ     0b008h      ;DS12887 Month Address
        ryer    equ     0b009h      ;DS12887 Year Address
	;---
        r18a    equ     0b00ah      ;DS12887 Control A address
        r18b    equ     0b00bh      ;DS12887 Control B address
        r18c    equ     0b00ch      ;DS12887 Control C address
        r18d    equ     0b00dh      ;DS12887 Control D address
	;---
	d_sc    equ     0080h       ;Sc && Id Address
	d_l_e1  equ     0094h       ;Offline Limit Expense Address
	d_num1  equ     0098h       ;Terminal Name Address
	d_stat1 equ     0099h       ;State Address
	d_max1  equ     009ah       ;Maxium Address
	d_beg1  equ     009ch       ;
	d_end1  equ     009eh       ;

	d_rat1  equ     00a0h       ;Ration Address
	d_menu1 equ     00a4h       ;Menu Address

        duy     equ     0b010h      ;updata person information time
        dum     equ     0b011h
        dud     equ     0b012h

        d_id    equ     0b034h      ;User ID Copy
        d_sc0   equ     0b03ch      ;User Sc Copy
        d_sc6   equ     0b042h      ;Init Sc Copy
        d_l_e   equ     0b048h      ;Offline Limit Expense  Copy
        d_num   equ     0b04ch      ;Terminal Name Copy
        d_state equ     0b04dh      ;State Copy
        d_max   equ     0b04eh      ;Max Copy
        d_beg   equ     0b050h
        d_end   equ     0b052h
	;
        d_rat   equ     0b054h      ;Ration Copy
        d_menu  equ     0b058h      ;Menu Copy
	;
        dctr    equ     0b070h      ;
        dyer    equ     0b071h      ;Year Data
        dmon    equ     0b072h      ;Month
        ddat    equ     0b073h      ;Day
        dwek    equ     0b074h      ;WeekDay
        dhor    equ     0b075h      ;Hour
        dmin    equ     0b076h      ;Minute
        dsec    equ     0b077h      ;Second

        sum0    equ     0b078h      ;
        sum1    equ     0b079h
        sum2    equ     0b07ah
        sum3    equ     0b07bh
        sum4    equ     0b07ch
        sum5    equ     0b07dh

        d_245   equ     0c000h
        d_cs1   equ     0f000h
        d_cs2   equ     0e000h
	;
	d_ram   equ     0100h       ;Address of Person'Information Offset
	d_sal   equ     8000h       ;18000h  Address of Offline Sale Offset
	;******************************
	;  Const Define
	;******************************
        dti_h   equ     0f8h        ;2.15ms
	dti_l   equ     0
	dt1_h   equ     10h         ;66.66ms
	dt1_l   equ     0

	p_recl  equ     10          ;Person Record Length
	mx_nh   equ     26          ;2600h*10=95KB
	mx_nl   equ     0           ;Maxium Number Of Person Record

	s_recl  equ     16          ;Sale Record Length
	mx_sh   equ     8           ;800h*16=32Kb
	mx_sl   equ     0           ;Maxium Number Of Offline Sale Record

;****************************
	ljmp main
       ;----------------
	org     0003h               ;int0
	ljmp    icard_move
       ;----------------
	org     000bh               ;T0
	clr tr0
	setb sm2
	clr f_ri
	sjmp m_t0
       ;----------------
	org     0013h               ;INT 1
	ljmp timer

m_t0:   mov r_mod,#0
	reti
       ;-----------------
	org     001bh               ;T1
	ljmp m_t1
	;
	;----------------------
	;  Serial Dispose Route
	;---------------------
	org     0023h
	push acc
	push 00h
	push psw
	;
        ;mov c,lcd_rw
        ;mov f0,c

        ;setb lcd_rw

	jbc ri,r_rece

	jbc ti,r_send

	ajmp d_reti
	;
r_send: mov a,ricon
	jnz r_sen1

	push dph
	push dpl
	;
        mov r0,#70
	djnz r0,$

	clr re184

	mov a,r1_374
	mov dptr,#d1_374
	movx @dptr,a
	;
	clr f_ri
	;
	pop dpl
	pop dph
	ljmp d_reti

r_sen1: mov r0,rir0
	mov a,@r0
	mov sbuf,a
	inc rir0
	dec ricon
	ljmp d_reti

r_rece: mov r0,sbuf
	clr tr0
	;
	mov a,r_mod
        cjne a,#0,r_md10        ;8

	mov a,r0
	cjne a,r_nme,r_md01

r_md00: clr sm2

	setb f_ri

	mov a,r0
	mov r0,#ribuf

	mov @r0,a
	inc r0

	mov rir0,r0
	inc r_mod

	sjmp r_md21

r_md01: cjne a,#0ffh,r_md02

	sjmp r_md00

r_md02: ajmp d_reti


r_md10: cjne a,#1,r_md20

	mov a,r0

	mov r0,rir0
	mov @r0,a

	cjne a,#17,r_md11         ;Write New Card

	mov a,#54
	sjmp r_md19

r_md11: cjne a,#18,r_md12         ;ReWrite Card

	mov a,#54
	sjmp r_md19

r_md12: cjne a,#70,r_md13         ;Get ZH

	mov a,#38
	sjmp r_md19

r_md13: cjne a,#74,r_md16         ;Update Time

	mov a,#38
	sjmp r_md19

r_md16: cjne a,#66,r_md17         ;Get Security

	mov a,#54
	sjmp r_md19

r_md17: cjne a,#76,r_md18

	mov a,#54
	sjmp r_md19


r_md18: mov a,#14

r_md19: mov ricon,a
	rr a
	mov chksum,a
	dec ricon
	dec ricon
	inc rir0
	inc r_mod
	sjmp r_md21
	;
r_md20: mov a,r0

	mov r0,rir0
	mov @r0,a

	inc rir0

	djnz ricon,r_md21

	mov r_mod,#0
	setb sm2
	ljmp rideal

r_md21: mov th0,#dti_h         ;7
	mov tl0,#dti_l
	setb tr0

        ;
d_reti: ;mov c,f0
        ;mov lcd_rw,c

	pop psw
	pop 00h
	pop acc
	reti


;*********************************************
;*********************************************
main:   mov sp,#r_sp
        clr re184
  	mov dptr,#d1_374        ;
        mov a,#11010000b        ;D7   D6   D5    D4    D3  D2  D1  D0
                                ;pow  bp   re184 en040 a18 a17 a16 a15
	mov r1_374,a
	movx @dptr,a

        mov dptr,#d2_374
        mov a,#0ffh             ;D7  D6  D5  D4   D3   D2   D1   D0
                                ;*   *   *   row4 row3 row2 row1 row0
        mov shn,a
        movx @dptr,a


        lcall lcd_off
        lcall lcd_clr

       ; lcall check_battery

	;-----------------------
	; Set Sreial Paramete
	;-----------------------

        mov th2,#0ffh           ;115200 57600 38400 28800 19200 9600
        mov tl2,#0fah           ;ff:fd  ff:fa ff:f7 ff:f4 ff:ee ff:dc--11.0592MHZ
        mov rcap2h,#0ffh        ;-----  ff:ff ----- ff:fe ff:fd ff:fa--1.8432MHZ
        mov rcap2l,#0fah
        mov t2con,#00110100b    ;tf2 exf2 rclk tclk exen2 tr2 c/t2 cp/rl2
	;------
	mov r_mod,#0

	mov state,#0

	;--------------------
	;  Initilize Flag
	;--------------------
	clr f_ri
	clr f_zh
	clr f_sal
	clr f_rsl
	clr f_cny
	clr f_a_s
	clr f_beg

	clr f_com
	setb f_pow

	clr f_mnu

	clr f_rat

	setb f_rde
	setb f_rsc

	clr f_rzh
        clr f_off

	clr f_udt
        clr f_887

	clr f_sta

	mov count,#0

	setb mifs_rst

	setb rf_chk

	mov func,#0ffh

        lcall lcd_clr
        lcall lcd_on
        ;---------------
        ;  zhi jian
        ;----------------
        mov xb_add,#d_x0
        mov r_err,#2
        lcall get_code

	;----------------
	;  Test Ram
	;----------------
        lcall v0_ram

	jb f0,ram_s
        mov r_err,#10
        mov xb_add,#d_x1
	lcall get_code           ;Test RamErr

ram_e:  lcall clrbp
	;
        mov r4,#bpnum
	lcall d0lay

	lcall setbp

        mov r4,#15
	lcall d0lay


        lcall check_battery

        sjmp ram_e


ram_s:
        lcall inial

	;--------------------------
	; Test Keyboard && IC Card
	;-------------------------
	mov regt,#60

test_k: jb icard_chk,ic_err

        lcall key_in
        mov a,v_key

	cjne a,#0ffh,kb_err        ;Keyboard Err

        ;lcall check_battery

	djnz regt,test_k

	sjmp load_rf_key


	;-------------------
	; Ic Touch Error
	;--------------------
ic_err: mov r_err,#err_2
	sjmp err_dp

	;-------------------
	; Keyborad Error
	;--------------------
kb_err: mov r_err,#err_1

err_dp: mov xb_add,#d_x1
        lcall error_code

	lcall clrbp
        mov r4,#bpnum
	lcall d0lay

	lcall setbp
        mov r4,#15
	lcall d0lay

        lcall check_battery

	ljmp test_k

	;-----------------------
	; Load  Rf  Key
	;-----------------------
load_rf_key:
	mov dptr,#d_sc0
	mov r3,#keyset
	mov r4,#secnr

⌨️ 快捷键说明

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