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

📄 f200asm.asm

📁 IC卡底层操作接口,符合正向约定和反向约定.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        NOP                                             ;1
        MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$                                    ;2

        NOP                                             ;1
        NOP                                             ;1
        MOV     A,BAND_DELAY_SAM                        ;1
        CLR     C                                       ;1        
        RRC     A                                       ;1
        MOV     R0,A                                    ;1
        DJNZ    R0,$                                    ;2
RECEIVESAM_BYTE2:

        MOV     C,SAM_IO                        ;BIT0   ;1
        JNB     PROMISE_SAM,RECEIVESAM_BYTE20           ;2
        CPL     C                                       ;1
        RLC     A                                       ;1
        LJMP    RECEIVESAM_BYTE21                       ;2
RECEIVESAM_BYTE20:
        RRC     A                                       ;1
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
RECEIVESAM_BYTE21:
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
        MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$                                    ;3

RECEIVESAM_BYTE3:                                       
        MOV     C,SAM_IO                        ;BIT1   ;1
        JNB     PROMISE_SAM,RECEIVESAM_BYTE30           ;2
        CPL     C                                       ;1
        RLC     A                                       ;1
        LJMP    RECEIVESAM_BYTE31                       ;2
RECEIVESAM_BYTE30:
        RRC     A                                       ;1
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
RECEIVESAM_BYTE31:
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
        MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$                                    ;3

RECEIVESAM_BYTE4:
        MOV     C,SAM_IO                        ;BIT2   ;1
        JNB     PROMISE_SAM,RECEIVESAM_BYTE40           ;2
        CPL     C                                       ;1
        RLC     A                                       ;1
        LJMP    RECEIVESAM_BYTE41                       ;2
RECEIVESAM_BYTE40:
        RRC     A                                       ;1
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
RECEIVESAM_BYTE41:
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
        MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$                                    ;2

RECEIVESAM_BYTE5:
        MOV     C,SAM_IO                        ;BIT3   ;1
        JNB     PROMISE_SAM,RECEIVESAM_BYTE50           ;2
        CPL     C                                       ;1
        RLC     A                                       ;1
        LJMP    RECEIVESAM_BYTE51                       ;2
RECEIVESAM_BYTE50:
        RRC     A                                       ;1
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
RECEIVESAM_BYTE51:
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
        MOV     R0,BAND_DELAY_SAM
        DJNZ    R0,$

RECEIVESAM_BYTE6:
        MOV     C,SAM_IO                        ;BIT4
        JNB     PROMISE_SAM,RECEIVESAM_BYTE60
        CPL     C
        RLC     A
        LJMP    RECEIVESAM_BYTE61
RECEIVESAM_BYTE60:
        RRC     A                                       ;1
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
RECEIVESAM_BYTE61:
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
        MOV     R0,BAND_DELAY_SAM
        DJNZ    R0,$

RECEIVESAM_BYTE7:
        MOV     C,SAM_IO                        ;BIT5
        JNB     PROMISE_SAM,RECEIVESAM_BYTE70
        CPL     C
        RLC     A
        LJMP    RECEIVESAM_BYTE71
RECEIVESAM_BYTE70:
        RRC     A                                       ;1
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
RECEIVESAM_BYTE71:
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
        MOV     R0,BAND_DELAY_SAM
        DJNZ    R0,$

RECEIVESAM_BYTE8:
        MOV     C,SAM_IO                        ;BIT6
        JNB     PROMISE_SAM,RECEIVESAM_BYTE80
        CPL     C
        RLC     A
        LJMP    RECEIVESAM_BYTE81
RECEIVESAM_BYTE80:
        RRC     A                                       ;1
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
RECEIVESAM_BYTE81:
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
        MOV     R0,BAND_DELAY_SAM
        DJNZ    R0,$

RECEIVESAM_BYTE9:
        MOV     C,SAM_IO                        ;BIT7   ;2
        JNB     PROMISE_SAM,RECEIVESAM_BYTE90           ;4
        CPL     C                                       ;1
        RLC     A                                       ;1
        LJMP    RECEIVESAM_BYTE91                       ;2
RECEIVESAM_BYTE90:
        RRC     A                                       ;1
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
RECEIVESAM_BYTE91:
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
        MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$                                    ;2

RECEIVESAM_BYTE10:	;奇偶校验位判断
	MOV	C,SAM_IO				;2
	JNB	P,RECEIVESAM_BYTE101			;4
	CPL	C					;1
RECEIVESAM_BYTE101:
	MOV	R3,R3BAK
	JNC	RECEIVESAM_BYTEOK			;4
	MOV	R0,BAND_DELAY_SAM;			;2奇偶校验位错误
        DJNZ    R0,$                                    ;3
        CLR	SAM_IO					;2 10.5个ETU处拉低SAM_IO电平2个ETU
	MOV	R0,BAND_DELAY_SAM;			;2
        DJNZ    R0,$                                    ;3
	MOV	R0,BAND_DELAY_SAM;			;2
        DJNZ    R0,$                                    ;3
	DJNZ	VER_TIME,RECEIVESAM_BYTEAGAIN		;3 重新接收数据4次
	MOV	R3,#0H
	LJMP	RECEIVESAM_BYTEC
RECEIVESAM_BYTEAGAIN:
	LJMP	RECEIVESAM_BYTESTAR
RECEIVESAM_BYTEOK:	;奇偶校验位正确
	PUSH	ACC					;2
        MOV     A,BAND_DELAY_SAM;                       ;1
        CLR     C                                       ;1
	RRC	A					;1
        MOV     R0,A                                    ;1
        DJNZ    R0,$                                    ;2

	POP	ACC					;2
        SETB    SAM_IO                                  ;1
        SETB    C                                       ;1        ;if over time,c=0
        RET                                             ;2
;****************************************************************************
DELAY_SAM:                                              ;t=0==>320;t=1==>160
        JB      PROTOCOL_SAM,DELAY_SAM0                 ;2
        NOP                                             ;1
        MOV     R0,#8                                   ;1
        DJNZ    R0,$                                    ;2
	MOV     R0,BAND_DELAY_SAM                       ;2
DELAY_SAMA:
        NOP
        NOP
        DJNZ    R0,DELAY_SAMA                           ;2
        LJMP    DELAY_SAM1                              ;2

DELAY_SAM0:                                             ;extra_protect_time
        NOP                                             ;1
        MOV     R0,#3                                   ;1
        DJNZ    R0,$                                    ;2
        MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$                                    ;2

DELAY_SAM1:
        MOV     A,PROTECT_TIME_SAM                      ;1
        MOV     R4,A                                    ;1
        JNZ     DELAY_SAM2                              ;2
        RET
DELAY_SAM2:
        NOP                                             ;1
        MOV     R0,#4                                   ;1
        DJNZ    R0,$                                    ;2
	MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$                                    ;2
        DJNZ    R4,DELAY_SAM2                           ;2
        RET
;****************************************************************************
SENDSAM_BYTE:
	MOV	VER_TIME,#04H
SENDSAM_BYTESTAR:
        PUSH    ACC

        CLR     SAM_IO;START				;2

        JNB     PROMISE_SAM,SENDSAM_BYTE0               ;4
        NOP                                             ;1
        NOP                                             ;1
        NOP                                             ;1
        MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$                                    ;2
        RLC     A                                       ;1
        CPL     C                                       ;1
        LJMP    SENDSAM_BYTE01                          ;2
SENDSAM_BYTE0:
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$                                    ;2
        RRC     A                                       ;1
SENDSAM_BYTE01:
        MOV     SAM_IO,C;BIT0                           ;2
        JNB     PROMISE_SAM,SENDSAM_BYTE1               ;2
        NOP                                             ;1
        NOP                                             ;1
        MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$                                    ;2
        RLC     A                                       ;1
        CPL     C                                       ;1
        LJMP    SENDSAM_BYTE11                          ;2
SENDSAM_BYTE1:                                          ;
        NOP                                             ;
        NOP                                             ;
        NOP                                             ;
        NOP                                             ;
        NOP                                             ;
	MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$
        RRC  A
SENDSAM_BYTE11:
        MOV     SAM_IO,C                ;BIT1
        JNB     PROMISE_SAM,SENDSAM_BYTE2
        NOP
        NOP
        MOV     R0,BAND_DELAY_SAM
        DJNZ    R0,$
        RLC     A
        CPL     C
        LJMP    SENDSAM_BYTE21
SENDSAM_BYTE2:
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$
        RRC  A
SENDSAM_BYTE21:
        MOV     SAM_IO,C                ;BIT2

        JNB     PROMISE_SAM,SENDSAM_BYTE3
        NOP
        NOP
        MOV     R0,BAND_DELAY_SAM
        DJNZ    R0,$
        RLC     A
        CPL     C
        LJMP    SENDSAM_BYTE31
SENDSAM_BYTE3:
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$
        RRC  A
SENDSAM_BYTE31:
        MOV     SAM_IO,C                ;BIT3

        JNB     PROMISE_SAM,SENDSAM_BYTE4
        NOP
        NOP
        MOV     R0,BAND_DELAY_SAM
        DJNZ    R0,$
        RLC     A
        CPL     C
        LJMP    SENDSAM_BYTE41
SENDSAM_BYTE4:
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$
        RRC  A
SENDSAM_BYTE41:
        MOV     SAM_IO,C                ;BIT4

        JNB     PROMISE_SAM,SENDSAM_BYTE5
        NOP
        NOP
        MOV     R0,BAND_DELAY_SAM
        DJNZ    R0,$
        RLC     A
        CPL     C
        LJMP    SENDSAM_BYTE51
SENDSAM_BYTE5:
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$
        RRC  A
SENDSAM_BYTE51:
        MOV     SAM_IO,C                ;BIT5

        JNB     PROMISE_SAM,SENDSAM_BYTE6
        NOP
        NOP
        MOV     R0,BAND_DELAY_SAM
        DJNZ    R0,$
        RLC     A
        CPL     C
        LJMP    SENDSAM_BYTE61
SENDSAM_BYTE6:
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$
        RRC  A
SENDSAM_BYTE61:
        MOV     SAM_IO,C                ;BIT6

        JNB     PROMISE_SAM,SENDSAM_BYTE7
        NOP
        NOP
        MOV     R0,BAND_DELAY_SAM
        DJNZ    R0,$
        RLC     A
        CPL     C
        LJMP    SENDSAM_BYTE71
SENDSAM_BYTE7:
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$
        RRC  A
SENDSAM_BYTE71:
        MOV     SAM_IO,C        ;BIT7			;2
        NOP
        NOP
        NOP
        NOP
        MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$                                    ;2
        POP     ACC                                     ;2
        JB      P,SENDSAM_BYTE8                         ;2
        CLR     SAM_IO;PARITY                           ;2
        SJMP    SENDSAM_BYTE9                           ;2
SENDSAM_BYTE8:
        SETB    SAM_IO;PARITY                           ;2
        NOP
        NOP
SENDSAM_BYTE9:
        NOP
        NOP
        NOP
	NOP
	NOP
	NOP
	MOV     R0,BAND_DELAY_SAM                       ;2
        DJNZ    R0,$                                    ;2

⌨️ 快捷键说明

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