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

📄 gj0420.asm

📁 公司以前的项目
💻 ASM
📖 第 1 页 / 共 5 页
字号:
            CALL     WRITERAWRC    ;WRITERAWRC(COMIENREG,IRQEN +0x80) 
;
            MOVLW    COMIRQREG            ;0X04
            MOVWF    REGADR
            MOVLW    0X80                 ;CLR IRQ FLAG
            MOVWF    MASK
            CALL     CLEARBITMASK
;
            MOVLW    COMMANDREG           ;0X01
            MOVWF    REGADR
            MOVLW    0X00                 ;PCD_IDLE=0  开始执行命令
            MOVWF    VALUE
            CALL     WRITERAWRC
;
            MOVLW    FIFOLEVILREG         ;0X0A 
            MOVWF    REGADR
            MOVLW    0X80
            MOVWF    MASK
            CALL     SETBITMASK           ;清读/写缓冲区指针      
;
            MOVF     PINDATA,W            ;输入数据首地址送FSR
            MOVWF    FSR
            MOVLW    0X00
            MOVWF    JSQI
LOOPLEN
            MOVLW    FIFODATAREG          ;0X09
            MOVWF    REGADR
            MOVF     INDF,W
            MOVWF    VALUE
            CALL     WRITERAWRC
            INCF     FSR,F
            INCF     JSQI,F
            MOVF     INLENBYTE,W
            XORWF    JSQI,W
            BTFSS    STATUS,Z
            GOTO     LOOPLEN 
;
            MOVLW    COMMANDREG           ;0X01
            MOVWF    REGADR
            MOVF     COMMAND,W
            MOVWF    VALUE
            CALL     WRITERAWRC
;
            MOVF     COMMAND,W
            XORLW    PCD_TRANSCEIVE       ;0X0C
            BTFSS    STATUS,Z
            GOTO     TIMETZ
            MOVLW    BITFRAMINGREG        ;0X0D 
            MOVWF    REGADR
            MOVLW    0X80
            MOVWF    MASK
            CALL     SETBITMASK
TIMETZ
            MOVLW    0X02
            MOVWF    JSQH
            MOVLW    0X58
            MOVWF    JSQL                 ;JSQH,L=600
;
LOOPD1      MOVLW    COMIRQREG           ;0X04
            MOVWF    REGADR 
            CALL     READRAWRC
            MOVWF    N_COUNT
DEC_JSQHL   
            DECF     JSQL,F                ;16 bit counter dec 
            MOVF     JSQL,W 
            XORLW    0XFF
            BTFSS    STATUS,Z 
            GOTO     DECOK
            DECF     JSQH,F 
;
DECOK        
            MOVF     JSQH,W
            IORWF    JSQL,W
            BTFSC    STATUS,Z             
            GOTO     NEXTB                ;JSQHL=0
            MOVF     N_COUNT,W
            ANDLW    0X01
            BTFSS    STATUS,Z
            GOTO     NEXTB                ;N_COUNT&0X01!=0
            MOVF     N_COUNT,W
            ANDWF    WAITFOR,W
            BTFSS    STATUS,Z
            GOTO     NEXTB                ;N_COUNT&WAITFOR!=0
            GOTO     LOOPD1
;
NEXTB            
            MOVLW    BITFRAMINGREG         ;0X0D
            MOVWF    REGADR
            MOVLW    0X80
            MOVWF    MASK
            CALL     CLEARBITMASK
;
            MOVF     JSQH,W
            IORWF    JSQL,W
            BTFSC    STATUS,Z
            GOTO     NEXTC                ;JSQHL=0  
            MOVLW    ERRORREG              ;0X06
            MOVWF    REGADR
            CALL     READRAWRC
;
            ANDLW    0X1B
            BTFSS    STATUS,Z
            GOTO     F_ELSE2              ;
            MOVLW    MI_OK                ;0X00
            MOVWF    KA_STATUS
;
            MOVF     N_COUNT,W
            ANDWF    IRQEN,W
            BTFSC    STATUS,Z
            GOTO     NEXTD
            ANDLW    0X01
            BTFSC    STATUS,Z
            GOTO     NEXTD
            MOVLW    MI_NOTAGERR          ;0XFF
            MOVWF    KA_STATUS
;
NEXTD       MOVF     COMMAND,W
            XORLW    PCD_TRANSCEIVE        ;0X0C
            BTFSS    STATUS,Z
            GOTO     NEXTC
            MOVLW    FIFOLEVILREG         ;0X0A
            MOVWF    REGADR
            CALL     READRAWRC
            MOVWF    N_COUNT
            MOVLW    COTROLREG           ;0X0C  
            MOVWF    REGADR
            CALL     READRAWRC
            ANDLW    0X07
            MOVWF    LASTBITS
;
            MOVF     POUTLENBIT,W
            MOVWF    FSR
            MOVF     LASTBITS,W
            BTFSC    STATUS,Z
            GOTO     F_ELSE1
            DECF     N_COUNT,W
            MOVWF    TEMPA
            CLRF     LEN
            BCF      STATUS,C
            RLF      TEMPA,F 
            RLF      LEN,F      
            RLF      TEMPA,F 
            RLF      LEN,F   
            RLF      TEMPA,F               ;(N_COUNT-1)*8  (高位在LEN,低位在TEMPA) 
            RLF      LEN,F  
            DECF     FSR,F     
            MOVF     LASTBITS,W
            ADDWF    TEMPA,W
            MOVWF    INDF
            INCF     FSR,F 
            MOVF     LEN,W
            BTFSS    STATUS,C
            GOTO     NOTCY
            ADDLW    0X01
NOTCY       MOVWF    INDF    
            GOTO     NEXTE
;
F_ELSE1     MOVF     N_COUNT,W
            MOVWF    TEMPA
            CLRF     LEN
            BCF      STATUS,C
            RLF      TEMPA,F 
            RLF      LEN,F 
            RLF      TEMPA,F 
            RLF      LEN,F  
            RLF      TEMPA,F           ;(N_COUNT)*8 (高位在LEN,低位在TEMPA) 
            RLF      LEN,F          
            MOVF     LEN,W
            MOVWF    INDF 
            DECF     FSR,F
            MOVF     TEMPA,W
            MOVWF    INDF 
NEXTE       
            MOVF     N_COUNT,W
            BTFSS    STATUS,Z
            GOTO     NEXTF
            INCF     N_COUNT,F
NEXTF
            MOVF     N_COUNT,W
            SUBLW    MAXRLEN
            BTFSC    STATUS,C
            GOTO     NEXTG
            MOVLW    MAXRLEN
            MOVWF    N_COUNT
;
NEXTG       MOVLW    0
            MOVWF    JSQI
            MOVF     POUTDATA,W
            MOVWF    FSR
LOOPRD      MOVLW    FIFODATAREG      ;0X09
            MOVWF    REGADR
            CALL     READRAWRC
            MOVWF    INDF
            INCF     FSR,F
            INCF     JSQI,F
            MOVF     N_COUNT,W
            SUBWF    JSQI,W
            BTFSS    STATUS,C
            GOTO     LOOPRD
            GOTO     NEXTC
;
F_ELSE2     
            MOVWF    KA_STATUS         ;MI_ERR
;
NEXTC       
            MOVLW    COTROLREG         ;0X0C
            MOVWF    REGADR
            MOVLW    0X80
            MOVWF    MASK
            CALL     SETBITMASK
;
            MOVLW    COMMANDREG       ;0X01
            MOVWF    REGADR
            MOVLW    PCD_IDLE         ;0X00  
            MOVWF    VALUE
            CALL     WRITERAWRC
            MOVF     KA_STATUS,W
;                                     ;出口BANK0
            RETURN  
;##################################################
;-----------------------------------------------                 
;复位RC522, 无参数; 成功:返回MI_OK
;M_RST==RB5;MI_OK==0;
;-----------------------------------------------  
PCDRESET                                  ;3
            BANKSEL  TRISB                ;!!!!!!!!!!!!
		    BCF      TRISB,5
            BANKSEL  PORTB
;
;            CALL     T1S
            BSF      M_RST
;            CALL     T1S
            BCF      M_RST
;            CALL     T1S
            BSF      M_RST
;            CALL     T1S
;
            MOVLW    COMMANDREG    ;0X01
            MOVWF    REGADR
            MOVLW    PCD_RESETPHASE;0X0F
            MOVWF    VALUE
            CALL     WRITERAWRC    ;WRITERAWRC(COMMANDREG,PCD_RESETPHASE) 
;            CALL     T1S
;                
            MOVLW    MODEREG       ;0X11
            MOVWF    REGADR
            MOVLW    0X3D
            MOVWF    VALUE
            CALL     WRITERAWRC    ;WRITERAWRC(MODEREG,0X3D)
;            CALL     T1S
;
            MOVLW    TRELOADREGL   ;0X2D
            MOVWF    REGADR
            MOVLW    0X1E
            MOVWF    VALUE
            CALL     WRITERAWRC    ;WRITERAWRC(TRELOADREGL ,0X1E)
;            CALL     T1S
;
            MOVLW    TRELOADREGH	;0X2C
            MOVWF    REGADR
            MOVLW    0
            MOVWF    VALUE
            CALL     WRITERAWRC    ;WRITERAWRC(TRELOADREGH ,0)
;            CALL     T1S
;
            MOVLW    TMODEREG      ;0X2A
            MOVWF    REGADR
            MOVLW    0X8D
            MOVWF    VALUE
            CALL     WRITERAWRC    ;WRITERAWRC(TMODEREG,0X8D)
;            CALL     T1S
;
            MOVLW    TPRESCALERREG  ;0X2B
            MOVWF    REGADR
            MOVLW    0X3E
            MOVWF    VALUE
            CALL     WRITERAWRC    ;WRITERAWRC(TPRESCALERREG,0X3E)
;            CALL     T1S
;
            MOVLW    TXASKREG       ;0X15
            MOVWF    REGADR
            MOVLW    0X40
            MOVWF    VALUE
            CALL     WRITERAWRC    ;WRITERAWRC(TXASKREG,0X40)
;            CALL     T1S
;
            RETLW    MI_OK         ;0
;-------------------------------------------------------
;寻卡                 
;参数:REQ_CODE:寻卡方式 (0X52:寻所有附合14443标准的卡;0X26:寻未进入休眠的卡)
PCDREQUEST                             ;12
            MOVLW    STATUS2REG       ;0X08
            MOVWF    REGADR
            MOVLW    0X08
            MOVWF    MASK
            CALL     CLEARBITMASK
;
            MOVLW    BITFRAMINGREG    ;0X0D
            MOVWF    REGADR
            MOVLW    0X07
            MOVWF    VALUE
            CALL     WRITERAWRC
;
            MOVLW    TXCONTROLREG     ;0X14
            MOVWF    REGADR
            MOVLW    0X03
            MOVWF    MASK
            CALL     SETBITMASK
;
            MOVF     REQ_CODE,W     ;REQ_CODE=0X52
            BSF      STATUS,RP0            
            MOVWF    MF522BUF0
            BCF      STATUS,RP0 
;
            PCD_COMF522 0X01        ;长度=1
            CALL     PCDCOMF522
            MOVF     KA_STATUS,W  
;
            BTFSS    STATUS,Z
            GOTO     PR_ELSE  
            MOVF     UNLENH,W
            BTFSS    STATUS,Z
            GOTO     PR_ELSE
            MOVF     UNLENL,W
            XORLW    0X10
            BTFSS    STATUS,Z
            GOTO     PR_ELSE
; 
            MOVF     PTAGTYPE,W  ;状态OK且长度=0X10
            MOVWF    FSR  
            BSF      STATUS,RP0          
            MOVF     MF522BUF0,W     ;MF522BUF0
            MOVWF    INDF
            INCF     FSR,F           
            MOVF     MF522BUF1,W     ;MF522BUF1
            MOVWF    INDF
            BCF      STATUS,RP0
            MOVF     KA_STATUS,W     ;MI_OK
            RETURN
PR_ELSE
            MOVLW    MI_ERR          ;0XFE
            MOVWF    KA_STATUS
            MOVF     KA_STATUS,W
            RETURN           
;------------------------------------------------------
;防冲撞:参数:PSNR=卡片类型码指针
;------------------------------------------------------
PCDANTICOLL                        ;14
           CLRF     SNR_CHECK
           MOVLW    STATUS2REG     ;0X08 
           MOVWF    REGADR
           MOVLW    0X08
           MOVWF    MASK
           CALL     CLEARBITMASK
;
           MOVLW    BITFRAMINGREG  ;0X0D
           MOVWF    REGADR
           MOVLW    0
           MOVWF    VALUE
           CALL     WRITERAWRC
;
           MOVLW    COLLREG        ;0X0E
           MOVWF    REGADR  
           MOVLW    0X80
           MOVWF    MASK
           CALL     CLEARBITMASK
;
           BSF      STATUS,RP0
           MOVLW    PICC_ANTICOLL1 ;0X93 
           MOVWF    MF522BUF0
           MOVLW    0X20
           MOVWF    MF522BUF1
           BCF      STATUS,RP0
;
           PCD_COMF522 0X02
           CALL     PCDCOMF522
           MOVF     KA_STATUS,W
;           
           BTFSS    STATUS,Z
           GOTO     STAOK
           CLRF     JSQI       ;MI_OK
LOOPCOOL   MOVLW    MF522BUF0  ;MF522BUF0 0xc0
           ADDWF    JSQI,W
           MOVWF    FSR       ;FSR=MF522BUF0+JSQI
           MOVF     INDF,W
           MOVWF    TEMPA  
           ;
           MOVF     PSNR,W           
           ADDWF    JSQI,W
           MOVWF    FSR       ;FSR=PSNR+JSQI
           MOVF     TEMPA,W   ;[MF522BUF0+JSQI]
           MOVWF    INDF      ;=>[PSNR+JSQI]
;
           MOVF     TEMPA,W
           XORWF    SNR_CHECK,F
;        
           INCF     JSQI,F

⌨️ 快捷键说明

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