📄 rfcode40old.asm
字号:
.copy "LF2407.h"
.copy "set.asm"
; .copy "vectors.asm"
.def _sendISOCmd,_GISR4,_CAP3_ISR
.def _feedWatchDog
.ref _viccdata,_ISOMode,_labeldata
.text
H_TBL: .word 0,05feh,0cedh,1363h,17f6h,199dh
.word 17f6h,1363h,0cedh,05feh,0
DIGITAL_R:
.word 00,00,19,23,26,28,32,35,37,39,41,43,45
.word 47,49,52,54,56,58,60,61,62,64,66,68,69
.word 71,72,74,76,78,80,82,83,85,87,89,91,94,96,97
********************************************
_sendISOCmd:POPD *+ ;与C语言兼容的代码
SAR AR0,*+
SAR AR2,*+
SAR AR3,*+
SAR AR4,*+
SAR AR5,*+
SAR AR6,*+
SAR AR7,*+
SAR AR1,*
ldp #5h
SAR AR1,SAVE_AR1
************************
; CALL SCI_INIT
CALL CAP3_INIT
; CALL RAM_INIT
CALL CS_FLASH_1
call CS_RAM_0
; CALL LED_OPT_INIT
CLRC INTM
******************************************
; CALL WRITE_SINGLE_H
; CALL GET_SYSINF_L
; CALL RESET_TO_RDY_H
; CALL GET_SYSINF_H
***********************************************************
EMULATE: LDP #0
SPLK #0,MODIFY
SPLK #0,MCOUNTER
LAR AR3,#_viccdata
MAR *,AR3
LACL *
SUB #01H
LDP #4
SACL CODEN_NUMBERS
LACC #_viccdata
ADD #01H
SACL ADR_CODEN
;************ADD_0802ZYB******ASK_OR_FSK********
LAR AR3,#_ISOMode
MAR *,AR3
LACL *
AND #20H ;ISOMODE.5, ASK or FSK
BCND ASK,EQ
NOP
NOP
CALL FSK
B ISOCMD_OUT
;*****************************************************
ASK: LAR AR3, #_viccdata
ADRK #01H ;指向标志单元
LACL *
AND #02H
LDP #5
SACL TXD_RATE
SUB #02H
BCND H_SPEED,EQ
NOP
NOP ;返回信号为低速
CALL PARA_LOW_SPEED
B PPPP
H_SPEED: NOP
NOP ;返回信号为高速
CALL PARA_HIGH_SPEED
PPPP: LAR AR3,#_viccdata
MAR *,AR3
ADRK #02H ;指向命令单元
LACL *
SUB #01H
BCND INVENTOY_CMD,EQ
NOP
NOP ;一般的ISO命令
LAR AR3,#_ISOMode ;ISOMODE.0 ,1/256 or 1/4
MAR *,AR3
LACL *
AND #0001H
BCND FSAT_SEND,NEQ
NOP
NOP ;低速发送
CALL SOF
CALL DATACODEN
CALL ENDF
B JUDGE_RD_WR
FSAT_SEND: CALL SOFQ ;高速发送
CALL DATA_CODING
CALL ENDF
JUDGE_RD_WR:LAR AR3,#_ISOMode ;isomode.4 ,read or write
MAR *,AR3
LACL *
AND #0010H
BCND WR_CMD,NEQ
NOP
NOP ; 读命令
CALL DELAY250;延时
B RECEIVE_BACKDATA
WR_CMD: LAR AR3,#_ISOMode ;写命令
MAR *,AR3
LACL *
AND #0004H
BCND ISO_TAG,NEQ
NOP
NOP ;I_CODE TAG
CALL DELAY_10MS
CALL DELAY250
B RECEIVE_BACKDATA
ISO_TAG: CALL DELAY_10MS ; ISO TAG
CALL WENDF ;发送附加的结束信号
CALL DELAY250
RECEIVE_BACKDATA:
CALL JUDGE_LEVEL ;读取标签的返回信号
; CALL CAPDATA_TXD ;;;;;;;;;;
LDP #04H
LACL RESPONCE_FLAG
SUB #01H
BCND SUCCESS,EQ
NOP
NOP
LACL #00H
B ISOCMD_OUT
SUCCESS: CALL SAVE_DATA
LACL #01H
B ISOCMD_OUT
INVENTOY_CMD: ;寻卡命令
;******************************************************
LAR AR3,#_ISOMode ;ISOMODE.7 ,SLOT_0 or SLOT_N(1-15)
MAR *,AR3
LACL *
AND #0080H
BCND SLOT_N_INV,NEQ
NOP
NOP
LAR AR3,#_ISOMode ;ISOMODE.0 ,1/256 or 1/4
MAR *,AR3
LACL *
AND #0001H
BCND FSEND_INV,NEQ
NOP
NOP ;低速发送
CALL SOF
CALL DATACODEN
CALL ENDF
B RECEIVE_INV
FSEND_INV: CALL SOFQ ;高速发送
CALL DATA_CODING
CALL ENDF
RECEIVE_INV:CALL DELAY250
LDP #04H
SPLK #0,RESPONCE_FLAG
CALL JUDGE_LEVEL ;读取标签的返回信号
B ISOCMD_OUTCOM
SLOT_N_INV: CALL WENDF
CALL DELAY250
LDP #04H
SPLK #0,RESPONCE_FLAG
CALL JUDGE_LEVEL ;读取标签的返回信号
ISOCMD_OUTCOM:
LDP #04H
LACL RESPONCE_FLAG
SUB #01H
BCND INV_SAVE_DATA,EQ
NOP
NOP
LDP #4
LACL RESPONCE_FLAG
B ISOCMD_OUT
INV_SAVE_DATA:
CALL SAVE_DATA
LDP #4
LACL RESPONCE_FLAG
;******************************************************
; LAR AR3,#_ISOMode ;寻卡命令
; MAR *,AR3
; LACL *
; AND #0008H
; BCND NEW_READ,NEQ
; NOP
; NOP ;读取区域内的全部标签
; CALL RESET_TO_READY
; CALL INV_QUIET
; B ISOCMD_TXD
;NEW_READ: CALL INV_QUIET ;读取区域内新出现的标签
;*************
;ISOCMD_TXD:
; LDP #4
; LACL CARD_ALL
; BCND SUCCESS_INV,GT
; NOP
; NOP
; LACL #0
; B ISOCMD_OUT
;SUCCESS_INV: LACL #1
;*********************
ISOCMD_OUT: NOP
NOP
ldp #5h
LAR AR1,SAVE_AR1
MAR *,AR1
SBRK #01H
LAR AR7,*-
LAR AR6,*-
LAR AR5,*-
LAR AR4,*-
LAR AR3,*-
LAR AR2,*-
LAR AR0,*-
PSHD * ;弹出返回地址,并压入硬件堆栈
; CALL CS_RAM_1
RET
***********************************************************
FSK: LAR AR3,#_viccdata
MAR *,AR3
ADRK #02H ;指向命令单元
LACL *
SUB #01H
BCND INVENTOY_CMD_FSK,EQ
NOP
NOP ;一般的ISO命令
LAR AR3,#_ISOMode
MAR *,AR3
LACL *
AND #0001H
BCND FSAT_SENDF,NEQ
NOP
NOP ;低速发送
CALL SOF
CALL DATACODEN
CALL ENDF
B JF_RD_WR
FSAT_SENDF: CALL SOFQ ;高速发送
CALL DATA_CODING
CALL ENDF
JF_RD_WR: LAR AR3,#_ISOMode
MAR *,AR3
LACL *
AND #0010H
BCND WR_CMDF,NEQ
NOP
NOP ; 读命令
RPT #06H
NOP
CALL DELAY_300US;延时
B RECEIVE_FSKDATA
WR_CMDF: LAR AR3,#_ISOMode ;写命令
MAR *,AR3
LACL *
AND #0004H
BCND ISO_TAGF,NEQ
NOP
NOP ;I_CODE TAG
CALL DELAY_10MS
CALL DELAY_300US
B RECEIVE_BACKDATA
ISO_TAGF: NOP
NOP
NOP
NOP
CALL DELAY_10MS ; ISO TAG
CALL WENDF ;发送附加的结束信号
CALL DELAY_300US
RECEIVE_FSKDATA: ;-->20
LAR AR3, #_viccdata
ADRK #01H ;指向标志单元
LACL *
AND #02H
SUB #02H
BCND H_SPEEDF,EQ
NOP
NOP ;-->29
CALL FSK_LOW_CAPTURE ;返回信号为低速
B FSK_END
H_SPEEDF: CALL FSK_CAPTURE_HIGH ;返回信号为高速
FSK_END: ; CALL RESULT_ZHISHI
LDP #04H
LACL RESPONCE_FLAG
SUB #01H
BCND SUCCESSF,EQ
NOP
NOP
LACL #00H
B FSK_OUT
SUCCESSF: CALL SAVE_DATA
LACL #01H
B FSK_OUT
INVENTOY_CMD_FSK: ;寻卡命令
;**********************************************
LAR AR3,#_ISOMode ;ISOMODE.7 ,SLOT_0 or SLOT_N(1-15)
MAR *,AR3
LACL *
AND #0080H
BCND SLOT_N_INVF0,NEQ
NOP
NOP
LAR AR3,#_ISOMode
MAR *,AR3
LACL *
AND #0001H
BCND FSAT_SENDF_INV,NEQ
NOP
NOP ;低速发送
CALL SOF
CALL DATACODEN
CALL ENDF
B JF_INVF
SLOT_N_INVF0:CALL WENDF
B SLOT_N_INVF
FSAT_SENDF_INV: CALL SOFQ ;高速发送
CALL DATA_CODING
CALL ENDF
JF_INVF:
LAR AR3, #_viccdata
ADRK #01H ;指向标志单元
LACL *
AND #02H
LDP #5
SACL TIMES
SLOT_N_INVF:CALL DELAY_300US;延时
RPT #10H
NOP
LDP #5
LACL TIMES
SUB #02H
BCND H_SPEEDF_INV,EQ
NOP
NOP ;-->29
CALL FSK_LOW_CAPTURE ;返回信号为低速
B FSK_END_INV
H_SPEEDF_INV: CALL FSK_CAPTURE_HIGH ;返回信号为高速
FSK_END_INV:
LDP #04H
LACL RESPONCE_FLAG
SUB #01H
BCND SUCCESSF_INV,EQ
NOP
NOP
LDP #04H
LACL RESPONCE_FLAG
B FSK_OUT
SUCCESSF_INV: CALL SAVE_DATA
LACL #01H
B FSK_OUT
; LAR AR3,#_ISOMode ;寻卡命令
; MAR *,AR3
; LACL *
; AND #0008H
; BCND NEW_READF,NEQ
; NOP
; NOP ;读取区域内的全部标签
; CALL RESET_TO_READY
; CALL INV_QUIET
; B ISOCMD_TXDF
;NEW_READF: CALL INV_QUIET ;读取区域内新出现的标签
;*************
;ISOCMD_TXDF:
; LDP #4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -