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

📄 gj070613.asm

📁 公司以前的项目
💻 ASM
📖 第 1 页 / 共 4 页
字号:
            MOVF     MF522BUF1,W     ;MF522BUF1
            MOVWF    INDF
            BCF      STATUS,RP0
            MOVF     KA_STS,W     ;MI_OK
            RETURN
PR_ELSE
            MOVLW    MI_ERR          ;0XFE
            MOVWF    KA_STS
            MOVF     KA_STS,W
            RETURN           
;------------------------------------------------------
;防冲撞:参数:PSNR=卡片类型码指针
;------------------------------------------------------
PCDANTICOLL                        ;14
           PCD_ANTICOLL G_UCTBUF
           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_STS,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
           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_STS           
STAOK      
           MOVLW    COLLREG       ;0X0E
           MOVWF    REGADR
           MOVLW    0X80
           MOVWF    MASK
           CALL     SETBITMASK
           MOVF     KA_STS,W
           RETURN
;-------------------------------------------------------            
;选定卡片
;参数:PSNR:卡片序列号 4字节
PCDSELECT                            ;13   
           PCD_ANTICOLL G_UCTBUF
           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
           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_STS,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_STS,W
           RETURN 
XKERR      MOVLW    MI_ERR          ;0XFE             
           MOVWF    KA_STS
           MOVF     KA_STS,W
           RETURN
;------------------------------------------------------   
;验证卡片密码
;参数:ADDR :块地址  PKEY:密码 PSNR :卡片序列号 4字节                           
;成功返回:MI_OK
;------------------------------------------------------
PCDAUTHSTATE                        ;15 
           PCD_AUTHSTA PICC_AUTHENT1A,0,G_UCTBUF
           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_STS,W
;
           BTFSS    STATUS,Z
           GOTO     RETERR  
           MOVLW    STATUS2REG    ;0X08
           MOVWF    REGADR
           CALL     READRAWRC
           ANDLW    0X08
           BTFSC    STATUS,Z
           GOTO     RETERR
           MOVF     KA_STS,W
           RETURN
RETERR     MOVLW    MI_ERR        ;0XFE;
           MOVWF    KA_STS
           MOVF     KA_STS,W
           RETURN
;--------------------------------------------------------
;读卡内数据
;参数:ADDR 块地址,输入
;PDATA 数据,输出,16字节0X30=>PDATA   (0x30--0x3f)
;成功,返回MI_OK
PCDREAD                               ;10
            PCD_READ 1,G_UCTBUF
            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_STS,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_STS,W
            RETURN 
FELSE
            MOVLW    MI_ERR           ;0XFE
            MOVWF    KA_STS
            MOVF     KA_STS,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
            RETLW    0                  ;MI_OK
;----------------------------------------------
read_send
           MOVF     CHGDLY,F  ;******
           BTFSS    STATUS,Z  ;******
           return             ;禁充电期间
;
           MOVF    ANTIM,F
           BTFSS   ZERO
           GOTO    ReadCard  ;3.2秒寻卡期内
;          读按钮状态
           RLF     ANSTS,F   ;
           BSF     ANSTS,0
           BTFSS   ANZT      ;RA3=按钮状态,0有效
           BCF     ANSTS,0
           MOVF    ANSTS,W   ;
           ANDLW   0XF7      ;XXXX0111
           XORLW   0X07      ;00000111
           BTFSS   STATUS,Z
           RETURN            ;按钮无效
           ;按钮有效,置3.2秒有效刷卡时间
           MOVLW   0X40
           MOVWF   ANTIM     ;设定本次按钮有效
		   RETURN
;****************************************************
ReadCard    ;T2 50毫秒中断进入,首次按钮有效,ANTIM=0X40         
            DECF     ANTIM,F   ;50毫秒-1
            MOVLW    0X03        
            ANDWF    ANTIM,W     
            BTFSS    STATUS,Z
			RETURN
            ;200毫秒间隔到读卡
            nop
		    DC3V_EN
            call     T10MS
            LED_OFF               ;**灭灯
;		
            BANKSEL  PIE1         ;当前摘机,仅比较器1中断
            BCF      INTCON,RABIE ;RABIE=0,保留RABIF中断
            BCF      PIE1,TMR2IE  ;禁止定时器2    
            BANKSEL  PIR1  
            CLRF     PIR1
            CLRF     PIR2   
            CLRF     MSCNT
            CLRF     T_SEND 
;
            CLRF     KA_STS
;           复位RF522
		    CALL     PCDRESET
;           关天线
		    CALL     PCDANTENNAOFF
;           开天线
		    CALL     PCDANTENNAON
;           寻卡
;       PCD_REQUEST PICC_REQALL,G_UCTBUF
		    CALL     PCDREQUEST
            MOVF     KA_STS,W
            BTFSS    STATUS,Z
            GOTO     MF_FALSE
;           防冲突
; 		PCD_ANTICOLL G_UCTBUF
		    CALL     PCDANTICOLL
            MOVF     KA_STS,W
            BTFSS    STATUS,Z
            GOTO     MF_FALSE
;           选择
; 		PCD_ANTICOLL G_UCTBUF
		    CALL     PCDSELECT
            MOVF    KA_STS,W
            BTFSS   STATUS,Z
            GOTO    MF_FALSE
;           验证密钥
;      PCD_AUTHSTA PICC_AUTHENT1A,0,G_UCTBUF
		    CALL    PCDAUTHSTATE
            MOVF    KA_STS,W
            BTFSS   STATUS,Z
            GOTO    MF_FALSE
;           读卡
;    PCD_READ 1,G_UCTBUF
		    CALL	PCDREAD
            MOVF    KA_STS,W
            BTFSS   STATUS,Z
            GOTO    MF_FALSE
            ;停止读卡
		    CALL    PCDHALT   
            BSF      SSEL      ;撤销从选择
            DC3V_disEN         ;关闭读卡电压   
            ;
           
           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
           BANKSEL EEADR
		   MOVWF   EETAMP
		   EE_WRITE 7

           BANKSEL TRISA
		   MOVF	   G_UCTBUF8,W
           BANKSEL EEADR
		   MOVWF   EETAMP
		   EE_WRITE 8

           BANKSEL TRISA
		   MOVF	   G_UCTBUF9,W
           BANKSEL EEADR
		   MOVWF   EETAMP
		   EE_WRITE 9

           BANKSEL TRISA
		   MOVF	   G_UCTBUFA,W
           BANKSEL EEADR
		   MOVWF   EETAMP
		   EE_WRITE 0x000A
		   
            MOVLW    0X0A
            MOVWF    DTCNT     ;发送码长10
            MOVLW    G_UCTBUF  ;
            MOVWF    DTADDR    ; 置DTMF缓冲区首地址
            CALL     DTMF_SEND ;启动发送  
            MOVLW    0X40      ;
            MOVWF    CHGDLY    ;3S禁止充电
            MOVLW    0X00
            MOVWF    ANTIM     ;读卡结束
MF_FALSE
		    DC3V_disEN    
            LED_OFF 
            BANKSEL  PIE1
            BSF      PIE1,TMR2IE  ;
            BSF      INTCON,RABIE ;
            BANKSEL  PIR1
            CLRF     PIR1
            CLRF     PIR2
            CLRF     MSCNT
            CLRF     T_SEND 
			RETURN	
;*****************************************           
           END                         ;     

⌨️ 快捷键说明

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