📄 p23b-p.asm
字号:
;================================
; 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 + -