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

📄 gj0420.asm

📁 公司以前的项目
💻 ASM
📖 第 1 页 / 共 5 页
字号:
           MOVF     JSQI,W
           XORLW    0X04
           BTFSS    STATUS,Z
           GOTO     LOOPCOOL
;
           MOVLW    MF522BUF4  ;MF522BUF4 0xc0
           MOVWF    FSR        ;FSR=MF522BUF0+JSQI
           MOVF     INDF,W
           XORWF    SNR_CHECK,W
           BTFSC    STATUS,Z    ;MF522BUF[i]=SNR_CHECK?
           GOTO     STAOK
;
           MOVLW    MI_ERR        ;0XFE
           MOVWF    KA_STATUS           
STAOK      
           MOVLW    COLLREG       ;0X0E
           MOVWF    REGADR
           MOVLW    0X80
           MOVWF    MASK
           CALL     SETBITMASK
           MOVF     KA_STATUS,W
           RETURN
;-------------------------------------------------------            
;选定卡片
;参数:PSNR:卡片序列号 4字节
PCDSELECT                            ;13   
           BSF      STATUS,RP0   
           MOVLW    PICC_ANTICOLL1   ;0X93
           MOVWF    MF522BUF0
           MOVLW    0X70
           MOVWF    MF522BUF1
           MOVLW    0
           MOVWF    MF522BUF6
           BCF      STATUS,RP0
;
           MOVLW    0
           MOVWF    JSQI
LOOPPS     MOVF     PSNR,W
           ADDWF    JSQI,W
           MOVWF    FSR
           MOVF     INDF,W
           MOVWF    TEMPA
           MOVLW    MF522BUF2        ;0X42  
           ADDWF    JSQI,W
           MOVWF    FSR
           MOVF     TEMPA,W
           MOVWF    INDF
           BSF      STATUS,RP0
           XORWF    MF522BUF6,F
;           MOVWF    MF522BUF6
           BCF      STATUS,RP0
           INCF     JSQI,F
           MOVLW    0X04
           XORWF    JSQI,W
           BTFSS    STATUS,Z
           GOTO     LOOPPS   
;
           CALUCRC_N 0XC7,0X07
           CALL     CALULATECRC
;
           MOVLW    STATUS2REG    ;0X08
           MOVWF    REGADR
           MOVLW    0X08
           MOVWF    MASK
           CALL     CLEARBITMASK
;
           PCD_COMF522 0X09
           CALL     PCDCOMF522
           MOVF     KA_STATUS,W
;
           BTFSS    STATUS,Z
           GOTO     XKERR          
           MOVF     UNLENH,W
           BTFSS    STATUS,Z
           GOTO     XKERR
           MOVF     UNLENL,W
           XORLW    0X18
           BTFSS    STATUS,Z
           GOTO     XKERR
           MOVF     KA_STATUS,W
           RETURN 
XKERR      MOVLW    MI_ERR          ;0XFE             
           MOVWF    KA_STATUS
           MOVF     KA_STATUS,W
           RETURN
;------------------------------------------------------   
;验证卡片密码
;参数:ADDR :块地址  
;      PKEY:密码  
;      PSNR :卡片序列号 4字节                           
;      成功:返回MI_OK
;------------------------------------------------------
PCDAUTHSTATE                        ;15 
           MOVF     AUTH_MODE,W
           BSF      STATUS,RP0 
           MOVWF    MF522BUF0       ;MF522BUF[0]=AUTH_MODE
           BCF      STATUS,RP0
           MOVF     ADDR,W 
           BSF      STATUS,RP0
           MOVWF    MF522BUF1       ;MF522BUF[1]=ADDR
           BCF      STATUS,RP0
           CLRF     JSQI
LOOPYZ1    
           MOVF     PKEY,W            ;密码首地址
           ADDWF    JSQI,W
           MOVWF    FSR
           MOVF     INDF,W
           MOVWF    TEMPA
;
           MOVLW    MF522BUF2       ;MF522BUF2
           ADDWF    JSQI,W
           MOVWF    FSR
           MOVF     TEMPA,W         ;
           MOVWF    INDF
           INCF     JSQI,F
           MOVF     JSQI,W
           XORLW    0X06
           BTFSS    STATUS,Z
           GOTO     LOOPYZ1             
;
           CLRF     JSQI    
LOOPYZ2    MOVF     PSNR,W         ;序列号
           ADDWF    JSQI,W       
           MOVWF    FSR       ;FSR=PSNR+JSQI  
           MOVF     INDF,W   
           MOVWF    TEMPA     ;读序列号
;
           MOVLW    MF522BUF8 ;MF522BUF8
           ADDWF    JSQI,W
           MOVWF    FSR       ;FSR=&MF522BUF8+JSQI
           MOVF     TEMPA,W
           MOVWF    INDF      ;
           INCF     JSQI,F
           MOVF     JSQI,W
           XORLW    0X06
           BTFSS    STATUS,Z
           GOTO     LOOPYZ2
;
           PCD_COMF522 0X0C   ;MA1=12字节
;
           MOVLW    PCD_AUTHENT ;0X0E 
           MOVWF    COMMAND     ;验证密钥
           CALL     PCDCOMF522
           MOVF     KA_STATUS,W
;
           BTFSS    STATUS,Z
           GOTO     RETERR  
           MOVLW    STATUS2REG    ;0X08
           MOVWF    REGADR
           CALL     READRAWRC
           ANDLW    0X08
           BTFSC    STATUS,Z
           GOTO     RETERR
           MOVF     KA_STATUS,W
           RETURN
RETERR     MOVLW    MI_ERR        ;0XFE;
           MOVWF    KA_STATUS
           MOVF     KA_STATUS,W
           RETURN
;--------------------------------------------------------
;读卡内数据
;参数:ADDR: 块地址,输入
;      PDATA: 数据,输出,16字节0X30=>PDATA   (0x30--0x3f)
;      成功:返回MI_OK
PCDREAD                               ;10
            BSF      STATUS,RP0
            MOVLW    PICC_READ        ;0X30
            MOVWF    MF522BUF0
            BCF      STATUS,RP0
            MOVF     ADDR,W
            BSF      STATUS,RP0
            MOVWF    MF522BUF1
            BCF      STATUS,RP0 
            CALUCRC_N  0XC2,0X02
            CALL     CALULATECRC
;
            PCD_COMF522 0X04
            CALL     PCDCOMF522
;
            MOVF     KA_STATUS,W
            BTFSS    STATUS,Z
            GOTO     FELSE
            MOVF     UNLENH,W
            BTFSS    STATUS,Z
            GOTO     FELSE
            MOVF     UNLENL,W
            XORLW    0X90
            BTFSS    STATUS,Z
            GOTO     FELSE  
;
            MOVLW    0
            MOVWF    JSQI
LOOPRK
;	        BSF      STATUS,RP0    
            MOVLW    MF522BUF0        ;0Xc0
;            BCF      STATUS,RP0
            ADDWF    JSQI,W
            MOVWF    FSR
            MOVF     INDF,W
            MOVWF    TEMPA
            MOVF     PDATA,W          ;PDATA首地址
            ADDWF    JSQI,W
            MOVWF    FSR
            MOVF     TEMPA,W
            MOVWF    INDF
            INCF     JSQI,F
            MOVF     JSQI,W
            XORLW    0X10
            BTFSS    STATUS,Z
            GOTO     LOOPRK
            MOVF     KA_STATUS,W
            RETURN 
FELSE
            MOVLW    MI_ERR           ;0XFE
            MOVWF    KA_STATUS
            MOVF     KA_STATUS,W      ;建立标志! 
            RETURN
;----------------------------------------------
;命令卡片休眠   成功 返回MI_OK;
;MF522BUF0,1,2,3,4,5,----
PCDHALT                                 ;8
            BSF      STATUS,RP0
            MOVLW    PICC_HALT          ;0X50,卡片休眠
            MOVWF    MF522BUF0
            CLRW
            MOVWF    MF522BUF1
            BCF      STATUS,RP0
            CALUCRC_N  0XC2,0X02
            CALL     CALULATECRC
            PCD_COMF522 0X04
            CALL     PCDCOMF522        ;通过RC522和ISO14443卡通讯
            RETLW    0                  ;MI_OK
;----------------------------------------------
read_send   ;IC卡主程序
            MOVF     ANTIM,W    ;******按钮禁止时间(ms)???
            BTFSS    STATUS,Z    ;******
            goto     ReadCard    ;在按钮禁止时间(ms)内
            nop                  ;不在
            BTFSC    ANSTS,7
            goto     anup
            nop
            BTFSC    ANZT        ;#define  ANZT  PORTA,3    ;按钮状态,0按下
			RETURN
            CALL     T50MS 			
            BTFSC    ANZT
			RETURN
			nop
     	    LED_ON
            bsf      ANSTS,7    ;ANSTS      EQU    2FH    ;按钮触发状态
;            CALL    T1S

           BANKSEL PORTA
		   MOVF	   ANSTS,W
           BANKSEL EEADR
		   MOVWF   EETAMP
		   EE_WRITE 0x0030
anup       ;ANSTS.7=1
            nop
            CALL     T50MS 
            BTFSS    ANZT
			RETURN
            CALL     T50MS 			
            BTFSS    ANZT
			RETURN
			nop
            bcf      ANSTS,7
;
            MOVLW    0X40
            MOVWF    ANTIM   
;//
           BANKSEL PORTA
		   MOVF	   ANSTS,W
           BANKSEL EEADR
		   MOVWF   EETAMP
		   EE_WRITE 0x0030
;//
			RETURN
ReadCard
            MOVLW    0X03        
            ANDWF    ANTIM,W    ;every 0.2s read card one times 
            BTFSS    STATUS,Z
			RETURN
            nop
		    DC3V_EN
            call     T10MS
            LED_OFF               ;**灭灯
;		
            BANKSEL  PIE1         ;当前摘机,仅比较器1中断
            BCF      INTCON,RABIE ;RABIE=0,保留RABIF中断
            BCF      PIE1,TMR2IE  ;禁止定时器2    
            BANKSEL  PORTA  
            CLRF     PIR1
            CLRF     PIR2   
            CLRF     MSCNT
            CLRF     T_SEND 
;
            CLRF     KA_STATUS
;
		    CALL     PCDRESET
;
		    CALL     PCDANTENNAOFF
;
		    CALL     PCDANTENNAON
;
		    PCD_REQUEST PICC_REQALL,G_UCTBUF
		    CALL     PCDREQUEST
;
            MOVF     KA_STATUS,W
            BTFSS    STATUS,Z
            GOTO     MF_FALSE
;
		    PCD_ANTICOLL G_UCTBUF            ;G_UCTBUF=0XB0
		    CALL     PCDANTICOLL
;
            MOVF     KA_STATUS,W
            BTFSS    STATUS,Z
            GOTO     MF_FALSE
;
		    PCD_ANTICOLL G_UCTBUF
		    CALL     PCDSELECT
;
            MOVF    KA_STATUS,W
            BTFSS   STATUS,Z
            GOTO    MF_FALSE

		    PCD_AUTHSTA PICC_AUTHENT1A,0,G_UCTBUF
		    CALL    PCDAUTHSTATE
;
            MOVF    KA_STATUS,W
            BTFSS   STATUS,Z
            GOTO    MF_FALSE
;
		    PCD_READ 1,G_UCTBUF
		    CALL	   PCDREAD
;
            MOVF    KA_STATUS,W
            BTFSS   STATUS,Z
            GOTO    MF_FALSE
;//
;           BANKSEL PORTA
;		   MOVF	   KA_STATUS,W
;           BANKSEL EEADR
;		   MOVWF   EETAMP
;		   EE_WRITE 0x0010
;//
		    CALL    PCDHALT
            BSF      SS
;//
;           BANKSEL EEADR
;		   MOVWF   EETAMP
;		   EE_WRITE 0x0020

           BANKSEL TRISA
		   MOVF	   G_UCTBUF,W
           BANKSEL EEADR
		   MOVWF   EETAMP
		   EE_WRITE 0

           BANKSEL TRISA
		   MOVF	   G_UCTBUF1,W
           BANKSEL EEADR
		   MOVWF   EETAMP
		   EE_WRITE 1

           BANKSEL TRISA
		   MOVF	   G_UCTBUF2,W
           BANKSEL EEADR
		   MOVWF   EETAMP
		   EE_WRITE 2

           BANKSEL TRISA
		   MOVF	   G_UCTBUF3,W
           BANKSEL EEADR
		   MOVWF   EETAMP
		   EE_WRITE 3

           BANKSEL TRISA
		   MOVF	   G_UCTBUF4,W
           BANKSEL EEADR
		   MOVWF   EETAMP
		   EE_WRITE 4

           BANKSEL TRISA
		   MOVF	   G_UCTBUF5,W
           BANKSEL EEADR
		   MOVWF   EETAMP
		   EE_WRITE 5

           BANKSEL TRISA
		   MOVF	   G_UCTBUF6,W
           BANKSEL EEADR
		   MOVWF   EETAMP
		   EE_WRITE 6

           BANKSEL TRISA
		   MOVF	   G_UCTBUF7,W
         

⌨️ 快捷键说明

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