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

📄 pos.asm

📁 一卡通源码程序是我公司的一卡通源码程序,绝对难得
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	;-----------------------
	; Edit PosName
	;-----------------------
edit_pos_name:
	mov regt,#1

	mov a,end_h
	cjne a,beg_h,ed_p0

	mov a,end_l
	cjne a,beg_l,ed_p0

	;;;;;;;mov beg_h,#0
	;;;;;;;mov beg_l,#0
	;;;;;;;mov end_h,#0
	;;;;;;;mov end_l,#0

	dec regt

ed_p0:
	lcall get_pos_name

 ed_p1: lcall key_in
	mov a,v_key
	cjne a,#kb_cl,ed_p2

	mov regt,#1

 ed_p2: cjne a,#k_f12,ed_p8

	lcall set_pn                  ;Edit PostName
	mov regt,#1

 ed_p8: lcall check_battery

	djnz regt,ed_p1


	lcall clrsum
	;
	mov scon,#11110000b     ;sm0 sm1 sm2 ren tb8 rb8 ti ri
	;------
	mov tmod,#11h
	mov tcon,#00000001b     ;TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
	;
	mov th1,#dt1_h
	mov tl1,#dt1_l
	setb tr1

	mov ip,#00010000b       ; *   *  pt2  ps pt1 px1 pt0 px0
	mov ie,#00011110b       ; ea  *  et2  es et1 ex1 et0 ex0

	setb ea

	mov reg1,#dfcom



;=========================================
;       Main Loop
;=========================================
mmain:  setb f_f
	lcall shift

no_shift:
	lcall write_sc              ;Write ID && Sc

	lcall upt_sl            ;Send SaleData of Offline

;        jb f_pow,on_power
;
;        lcall clrsum            ;Clear Sum
;
;on_power:

        ;;ljmp pos_save   ;;test pos save

	mov a,state
	anl a,#3
	mov b,a
	rl a
	add a,b
	mov dptr,#m_tab
	jmp @a+dptr

m_tab:  ljmp pos_wait           ;Pos Waitting
	ljmp pos_sale           ;Pos Sale
	ljmp pos_save           ;Pos Save
	ljmp card_server        ;Card Server



;=========================================
;=========================================
;       Pos Waitting
;=========================================
pos_wait:
	mov r_err,#7
	lcall get_code

pos_w_loop:
	lcall key_in

	mov a,v_key
	cjne a,#kb_f1,p_wl01

	lcall  key_f1              ;Disp PosName
	sjmp pos_wait


p_wl01: cjne a,#k_f13,p_wl03

	lcall tmdisp               ;Disp Date && Time
	sjmp pos_wait


p_wl03: cjne a,#k_f14,p_wl04

	lcall key_zj              ;Test Keyboard && DispCode
	sjmp pos_wait


p_wl04: jb b_chk,p_wl08

	mov a,state
	jz pos_w_loop

	ljmp mmain


p_wl08: ljmp bat_err             ;Battery Error



;=========================================
;=========================================
;       Pos Saling
;=========================================
pos_sale:
        setb rf_chk
	setb f_a_s
	clr f_cny

	mov regt,#dslep

pos_sl_loop:
	lcall key_in

	lcall deal_func_kb

	;--------------------
	;   Read  Card
	;--------------------
	lcall card_read

	jnb rf_chk,sale_deal_card


	djnz regt,pos_sl_loop


	jb b_chk,sale_bat_err

	jnb f_com,sale_no_comm

	mov reg1,#dfcom
	inc reg0
	clr f_off
	ljmp mmain


sale_no_comm:
	setb f_pow

	jnb f_off,sale_plus_disp

	mov reg1,#nfcom
	inc reg0

	setb f_f		;news

	ljmp mmain


sale_plus_disp:
;;;;;;;;clr mifs_rst

	mov r_err,#4		;"+"
	lcall get_code

	clr f_f			;news

	ljmp no_shift


sale_bat_err:
	ljmp bat_err


	;-------------------
	;  Deal Card
	;-------------------
sale_deal_card:

	jb f0,sale_d_0

	ljmp deal_error          ;Read Err

	;--------------
	;  Read Succ
	;--------------

sale_d_0:
        jb f_typ,sale_d_00
        lcall divsub

        setb f_id

sale_d_00:

	mov r0,#rf1ram
	mov adr_h,@r0
	inc r0
	mov adr_l,@r0

	jb f_com,sale_online      ;联机

	lcall get_accounts         ;脱机

	sjmp salecomp  ;; old:sjmp sale_comp

	;--------------
	;  Receie Zh
	;--------------
sale_online:

	mov sata,#0         ;
	setb f_zh
	clr f_pow

	mov r2,#255		;old 130

sale_comm_wait:
	jnb f_zh,salecomp

;;	lcall card_test

;;	jb rf_chk,sale_card_off

	lcall disp

	djnz r2,sale_comm_wait

        clr f_id
	clr f_zh
	mov r_err,#err_13     ;Comm Err
	setb f_pow

	ljmp deal_error


	;------------
sale_card_off:
	setb f_pow
	clr  f_zh
        clr f_id
	ljmp card_pullout

	;---------------------
	;  Comp ZH for Read && Receive
	;---------------------
salecomp: jb f_typ,sale_comp

        mov r0,#r_buf	; date_format:addr(2)+flag+身份+card code(5)+surplus(3)
;			+limit(3)+surplus counter+credit(2)+last addr(2) CHKSUM
        mov r1,#rf1ram

        mov adr_h,@r0
        mov @r1,adr_h
        inc r0
        inc r1

        mov adr_l,@r0
        mov @r1,adr_l

sale_comp:
	setb f_pow
	lcall comp_accounts
	jb f0,sale_comp_succ

	ljmp deal_error            ;comp zh Err


sale_comp_succ:
	mov r0,#r_buf
	inc r0
	inc r0
	mov a,state

	;----------------
	;Sale Count
	;----------------
	cjne a,#countfunc,sale_d_3

	jnb f_com,sale_err

	clr f_rat

	cjne @r0,#1,sale_err

	ljmp sale_counter


	;------------------
	;Ration Expense
	;------------------
sale_d_3: cjne a,#ratfunc,sale_d_5

	setb f_rat

	sjmp sale_normal


	;-------------------
	;  Alrm  Err 015
	;-------------------
sale_err: mov r_err,#err_3
	ljmp deal_error


	;----------------
	; Menu Sale
	;----------------
sale_d_5: cjne a,#menufunc,sale_d_6

	jb f_rat,sale_normal

	jnb f_com,sale_normal

	cjne @r0,#1,sale_err

	ljmp sale_menu


	;---------------
	;  Normal Sale
	;---------------
sale_d_6: cjne a,#norsale,sale_err

sale_normal:
	cjne @r0,#0ffh,sale_d_7

	;----------------
	; Offline Sale
	;----------------
	setb f_tj
	clr f_m_p
	clr f_p_m
	lcall tj_t_x

	sjmp sale_d_8

	;----
	;----
sale_d_7:
        cjne @r0,#1,sale_err

	clr f_tj

	mov r0,#d_exp2
	mov r1,#sur_rm5

	lcall bin2dec

	mov c,bit_c
	mov f_m_p,c
	mov f_p_m,c

	mov r0,#d_sur2
	mov r1,#lim_rm5

	lcall bin2dec

	;MOV A,ICARD_SC1
	;CLR C
	;ADD A,#1
	;MOV ICARD_SC1,A

	;MOV A,ICARD_SC0
	;ADDC A,#0
	;MOV ICARD_SC0,A

	MOV R0,#ICARD_SC1	; credit
	MOV R1,#ICARD_adr	;
				;
	LCALL BNDEC2		;


sale_d_8: jnb f_rat,sale_d_9

	lcall clr_bit
	lcall clr_expense

	mov r0,#rat_2          ;Ration
	mov r1,#exp_rm5

	lcall bin2dec

	lcall ok_key

	ljmp mmain


sale_d_9: lcall clear_input

	;----------------
	;++++++++++++++++
	;mov r5,#0bh
	;mov r6,#0b8h
        ;++++++++++++++++
sale_wait:

        ;lcall  card_id
        ;jnb    f0,sl_wait8
        ljmp sl_wait8
        ljmp   sale_d_0

sl_wait8:
	lcall key_in

	mov a,v_key

        jb   f_n,sl_wait7
        cjne a,#kb_cl,sl_wait7
	;ljmp mmain
				;if "clear" then set f_0
	setb f_0		;
	ljmp keyok7		;


sl_wait7:
	cjne a,#kb_en,sl_wait0

	lcall key_ok

        jnb f0,sale_wait

	ljmp mmain


sl_wait0:
        jnc sl_wait5

	lcall kb_deal


sl_wait5:jnb  f_typ,sl_wait6
	lcall card_test

	jnb rf_chk,sale_wait         ;Card On

	ljmp card_pullout
sl_wait6:
        ;|+|+|+|+|+|+|+|+|+|+|+|+|+||+|+|+|+|+|+

;	mov r3,#78h
;sl:	mov r4,#7h
;	djnz r4,$
;	djnz r3,sl 		;10ms
;
;	djnz r6,dd
;	mov r6,#0ffh
;	djnz r5,dd		;记次3000次

	;ljmp mmain
        ;+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+
;dd:     nop
	ljmp   sale_wait



;=========================================
;=========================================
;       Pos Save
;=========================================
pos_save:
	clr f_a_s
	mov regt,#dslep

pos_sv_loop:
	lcall key_in

	lcall deal_func_kb

	;--------------------
	;   Read  Card
	;--------------------
	lcall card_read

	jnb rf_chk,save_deal_card

	;
	djnz regt,pos_sv_loop


	jb b_chk,save_bat_err

	jnb f_com,save_no_comm

	mov reg1,#dfcom
	inc reg0
	clr f_off
	ljmp mmain


save_no_comm:
	setb f_pow

	jnb f_off,save_plus_disp

	mov reg1,#nfcom
	inc reg0
	ljmp mmain


save_plus_disp:
;;;;;;;;clr mifs_rst

	mov r_err,#4
	lcall get_code

	ljmp no_shift


save_bat_err:
	ljmp bat_err


	;-------------------
	;  Deal Card
	;-------------------
save_deal_card:

	jb f0,save_d_0

	ljmp deal_error          ;Read Err

	;--------------
	;  Read Succ
	;--------------
save_d_0:
        jb  f_typ,save_d_00
        lcall divsub
        setb f_id

save_d_00:

	mov r0,#rf1ram
	mov adr_h,@r0
	inc r0
	mov adr_l,@r0

	jb f_com,save_online       ;OnLine

	;lcall get_accounts         ;OffLine

	;sjmp save_comp

	ljmp save_err

	;--------------
	;  Receie Zh
	;--------------
save_online:
	mov sata,#0         ;
	setb f_zh
	clr f_pow

	mov r2,#255		;old 130

save_comm_wait:
	jnb f_zh,savecomp

;;	lcall card_test

;;	jb rf_chk,save_rf_off       ;Card Off

	lcall disp

	djnz r2,save_comm_wait

        clr f_id
	clr f_zh
	mov r_err,#err_13             ;Comm Err
	setb f_pow

	ljmp deal_error

        ;------------
save_rf_off:
	setb f_pow
	clr  f_zh
        clr  f_id
	ljmp card_pullout

	;---------------------
	;  Comp ZH for Read && Receive
	;---------------------
savecomp: jb f_typ,save_comp

        mov r0,#r_buf
        mov r1,#rf1ram

        mov adr_h,@r0
        mov @r1,adr_h
        inc r0
        inc r1

        mov adr_l,@r0
        mov @r1,adr_l


save_comp:
	setb f_pow
	lcall comp_accounts
        ;;ljmp testt         ;;test
        ;;setb   f0            ;;test

        jb f0,save_comp_succ

	ljmp deal_error            ;comp zh Err


save_comp_succ:
	mov r0,#r_buf
	inc r0
	inc r0
	mov a,state
	;----------------
	;Save Normal
	;----------------
	cjne a,#norsave,save_err

	jb f_cny,save_normal

	cjne @r0,#3,save_12_err

	ljmp saver_card

	;-------------------
	;  Alrm  Err 012
	;-------------------
save_12_err:
	mov r_err,#err_12
	ljmp deal_error


	;-------------------
	;  Alrm  Err 015
	;-------------------
save_err: mov r_err,#err_15
	ljmp deal_error


save_normal:
	cjne @r0,#1,save_err

	clr f_tj

	clr f_rat

	mov r0,#d_exp2
	mov r1,#sur_rm5

	lcall bin2dec

	mov c,bit_c
	mov f_m_p,c
	mov f_p_m,c

	mov r0,#d_sur2
	mov r1,#lim_rm5

	lcall bin2dec

	lcall clear_input

	;----------------
save_wait:

	lcall key_in

	mov a,v_key

        jb  f_n,sv_wait7
        cjne a,#kb_cl,sv_wait7  ;
        LJMP LLL
        ;ljmp mmain

sv_wait7:
	cjne a,#kb_en,sv_wait0

LLL:	lcall key_ok

	jnb f0,save_wait

	ljmp mmain


sv_wait0: jnc sv_wait5

	lcall kb_deal


sv_wait5:
        jnb  f_typ,sv_wait6
	lcall card_test

	jnb rf_chk,save_wait         ;Card On

	ljmp card_pullout

sv_wait6:ljmp   save_wait


;-------------------------------
;       Saver Card Deal
;-------------------------------
testt:  ;;
saver_card:
	mov r0,#madr_h
	mov @r0,adr_h
	inc r0
	mov @r0,adr_l
	;
	mov r_err,#2
	lcall get_code

	mov r0,#ddsp05
	mov r1,#ddsp15

	lcall call_pos_name

saver_loop:
	mov r7,#2
saver_lp4:
        mov r2,#100
saver_lp0:
        lcall  key_in
        mov    a,v0_key
        cjne   a,#kb_cl,saver_lp3
        ljmp   saver_ret

saver_lp3:
        djnz r2,saver_lp0
        djnz r7,saver_lp3

        lcall  clrbp
	mov r4,#0
saver_lp5:
	mov r3,#0
        djnz r3,$
        djnz r4,saver_lp5
        lcall  setbp

saver_ret:
	setb f_cny
	clr f_a_s

	lcall key_in
	lcall key_in

	ljmp mmain


;-------------------------------
;      Error  Alrm
;-------------------------------
deal_error:
	lcall error_code
        mov   r7,#3

dl_er0: lcall clrbp

	mov r4,#15
	lcall d0lay

	lcall setbp

        mov r2,#8

dl_er2: lcall disp

	djnz r2,dl_er2

	mov r4,#0
	mov r3,#0


dl_er4: djnz r3,dl_er4

	djnz r4,dl_er4

        djnz r7,dl_er0


dl_er5: ;;lcall key_in
	;;lcall key_in
	mov a,r_err	;
	cjne a,#0ch,qiu	; 判断是不是ERR 012 报警,是的话就自动回传数据
	ljmp fuwei	; 关闭管理器中的帐户,以便下一次可以正确的靠卡

qiu:	mov a,r_err
	cjne a,#16,rett	;判断刚才的告警是不是016告警

	mov r7,#100
lp:	lcall key_in		;是的话就调用判键子程序
	mov a,v_key
	cjne a,#kb_en,pl
	ljmp fuwei		;是按下的ENTER键就跳

pl:	djnz r7,lp
rett:	ljmp mmain		;不是的话就直接返回主程序


fuwei:	mov r0,#dflag		;write flag
	mov a,state
	mov c,f_com
	mov acc.7,c
	MOV A,#3		;
	mov @r0,a

	lcall put_date		;write name,date,time

	mov r0,#dadr_h		;write address
	mov @r0,adr_h
	inc r0
	mov @r0,adr_l

	mov r0,#d_exp0		;write #0ff to expens addr and surplus addr
	mov r3,#6
llp:	mov @r0,#0ffh
	inc r0
	djnz r3,llp

	lcall w_sale		;
	lcall key_in

⌨️ 快捷键说明

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