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

📄 gj070613.asm

📁 公司以前的项目
💻 ASM
📖 第 1 页 / 共 4 页
字号:
           DECF     DRVCNT,F   ;
           BTFSC    STATUS,Z   ;
           GOTO     QMNOPEN    ;最大驱动时间到
           GOTO     QMOTRUN0   ;
;          
           BTFSC    LOCKZT     ;LOCKZT=RA1
           GOTO     QMOTRUN0   ;
           CALL     T10MS      ;
           BTFSC    LOCKZT     ;
           GOTO     QMOTRUN0   ; 
           CALL     T10MS      ;
           BTFSC    LOCKZT     ;
           GOTO     QMOTRUN0   ; 
;
           DJ1OFF
           MOVLW    LOCKDLY    ;锁开延时12秒上锁
           MOVWF    TEXIT1     ; 
           MOVLW    BP_NN1     ;加载开锁蜂鸣6次 
           MOVWF    BPCNT      ;   
           RETURN              ;
QMNOPEN    ;最大驱动时间到
           DJ1OFF           
           MOVLW    LOCKDLY    ;锁开延时12秒上锁  
           MOVWF    TEXIT1     ;   
           MOVLW    BP_NN2     ;加载开锁蜂鸣8次
           MOVWF    BPCNT      ;   
           RETURN 
;**************************************************
;锁延时归位驱动子程序
;**************************************************
LOCK1_CLOSE 
           MOVF     TEXIT1,F
           BTFSC    ZERO
           RETURN                 ;前锁已归位 
QM_NOPEN                    
           DECFSZ   TEXIT1,F      ;前锁驱动延时减量
           RETURN                 ;驱动延时未到返回
;
           MOVLW    0X02         ;电压低延时两秒
           MOVWF    TEXIT1       ;
           BTFSS    VCO           
           RETURN  
DJ1_EXIT
           CLRF     TEXIT1
           movlw    DRVTIME2      ;电机解锁驱动1.5秒
           movwf    DRVCNT       ;
           DJ1_DRB                ;电机归位
DJ1_EXIT1   
           CALL     T50MS         ;          
           DECFSZ   DRVCNT,F      ;
           GOTO     DJ1_EXIT1    
           DJ1OFF
           RETURN 
;**************************************************
;蜂鸣器延时驱动子程序
;**************************************************
BP_CLOSE 
           MOVF     BPCNT,F
           BTFSC    ZERO
           RETURN            ;非开锁期间                    
           DECFSZ   BPCNT,F  ;开锁期间
           RETURN            ;驱动延时未到返回
           BEEP_OFF 
           RETURN 

;**************************************************
;开锁蜂鸣驱动子程序
;**************************************************
OPLOCK_BP   ;开锁蜂鸣
           MOVF    BPCNT,F
           BTFSC   ZERO
           RETURN           ;非开锁
           ;开锁期间蜂鸣
           MOVF    MSCNT,W  
           BTFSS   ZERO
           GOTO    BPSTOP
           BEEP_ON          
           RETURN
BPSTOP     
           MOVLW   0X04     ;蜂鸣200MS
           SUBWF   MSCNT,W
           BTFSS   CY
           RETURN
           ;MSCNT>=04
           BEEP_OFF         ;关闭
           RETURN          
;*******************************************
T1S        
           MOVLW   0X0A
           MOVWF   TIM2
T1S0       CALL    T100MS
           DECFSZ  TIM2,F
           GOTO    T1S0
           RETURN 
;*******************************************
T500MS        
           MOVLW   0X05
           MOVWF   TIM2
T500MS0    CALL    T100MS
           DECFSZ  TIM2,F
           GOTO    T500MS0
           RETURN 
;-----------------------------------------
T200MS        
           MOVLW   0XC8
           MOVWF   TIM1
T200MS0    CALL    T1MS
           DECFSZ  TIM1,F
           GOTO    T200MS0
           RETURN 
;-----------------------------------------
T100MS        
           MOVLW   0X64
           MOVWF   TIM1
T100MS0    CALL    T1MS
           DECFSZ  TIM1,F
           GOTO    T100MS0
           RETURN 
;-----------------------------------------
T50MS        
           MOVLW   0X32
           MOVWF   TIM1
T50MS0     CALL    T1MS
           DECFSZ  TIM1,F
           GOTO    T50MS0
           RETURN 
;-----------------------------------------
T10MS        
           MOVLW   0X0A
           MOVWF   TIM1
T10MS0     CALL    T1MS
           DECFSZ  TIM1,F
           GOTO    T10MS0
           RETURN 
;-----------------------------------
T1MS                       ;
           MOVLW   0XFA
           MOVWF   TIM0
T1MS0       
           NOP
           DECFSZ  TIM0,F
           GOTO    T1MS0
           RETURN
;-----------------------------------
T100US                       ;
           MOVLW   0X19
           MOVWF   TIM0
T100US0       
           NOP
           DECFSZ  TIM0,F
           GOTO    T100US0
           RETURN
;***********************************************************
INIT690B                               ;BANK 1 
           BANKSEL OPTION_REG    ;OP_REG:/RABPU INTEDG T0CS T0SE PSA PS2 PS1 PS0          
           movlw   b'01001111'   ;          0      1    0    0    1   1   1   1
           MOVWF   OPTION_REG    ;WDT=1:128,RAB弱上拉,INT下降沿触发中断
           MOVLW   B'00010010'   ;Twdt=(1/31KHZ)X16384x128=64s
           MOVWF   WDTCON        ;
           BSF     PCON,NOT_POR  ;
           BSF     PCON,NOT_BOR  ;
           BANKSEL PORTA
;
           CALL    CR_RAM
           CALL    IO_INIT 
           CALL    T1ME2_INIT
           CHG_EN              ;使能充电
;----
INT_ENB    ;使能T1,C1,引脚变化中断
           BANKSEL  PIE1
           CLRF     PIE1
           CLRF     PIE2
           BSF      PIE1,TMR2IE   ;
           MOVLW    B'01001000'   ;GIE,PEIE,T0IE,INTE,RABIE,T0IF,INTF,RABIF
           MOVWF    INTCON
           BANKSEL  PORTA  
;
           MOVLW   0XFF
		   MOVWF   DEFKEYBUF
		   MOVWF   DEFKEYBUF1
		   MOVWF   DEFKEYBUF2
		   MOVWF   DEFKEYBUF3
		   MOVWF   DEFKEYBUF4
		   MOVWF   DEFKEYBUF5
           MOVWF   ANSTS
           CLRF    ANTIM        
           RETURN
;--------------------------------------------
;I/O口设置
;--------------------------------------------
IO_INIT     
           BANKSEL WPUA
           MOVLW   B'00010011'          ;RA0,1,4弱上拉
           MOVWF   WPUA                 ;RA2,5外部弱下拉
           MOVLW   B'00000000'          ;A无变化中断
           MOVWF   IOCA   
           ;              
           BANKSEL WPUB
           MOVLW   B'11010000'          ;RB4,6,7弱上拉
           MOVWF   WPUB
           MOVLW   B'10000000'          ;RB7变化中断(RING)
           MOVWF   IOCB  
;2bank
           MOVLW   b'00000000'  ;ANS7,6,5,4,3,2,1,0 IS I/O 
           movwf   ANSEL        ;
           MOVLW   b'00000000'  ;ANS11,10,9,8 IS I/O  
           movwf   ANSELH       ;   
;
           CLRF     PORTA      ;A口初始状态
           CLRF     PORTB      ;B口初始状态
           CLRF     PORTC      ;C口初始状态
           MOVF     PORTA,W    ;读A口初始状态
           ANDLW    0X03
           MOVWF    PASTS0    ;
           MOVF     PORTB,W    ;读B口初始状态
           RETURN
;--------------------------------------------
;TIME2设置:50MS中断
;--------------------------------------------
T1ME2_INIT                       
           BANKSEL PR2           ;
           MOVLW   0XC3          ;
           MOVWF   PR2           ;T=1X256X195
           BANKSEL T2CON         ;T2CON=TO3,TO2,TO1,TO0,T2ON,TI1,TI0
           MOVLW   B'01111111'   ;
           MOVWF   T2CON
           RETURN
;----------------------------------------------
;请20-5F    
;----------------------------------------------
CR_RAM       
           movlw   0x20                 ;Clear 20-5F
           movwf   FSR                  ;
CRRAMLP    clrf    INDF                 ;
           incf    FSR,1                ;
           MOVF    FSR,W                ;
           SUBLW   0x60                 ;
           BTFSS   STATUS,Z
           goto    CRRAMLP              ;
           RETURN           
;----------------------------------------------------------------------
;发送DTBUF中n位(DTCNT)双音频:
;----------------------------------------------------------------------
DTMF_SEND 
           CHG_INH               ;禁止充电
           HOOK_UP               ;CE=0 ,线路摘机 
           ;BTFSC    DTCNT,3      ;DTCNT=01/0A
           CALL     CARD_BEEP    ;刷卡成功提示               
SDTMF_LP0  
          ; CALL     T100MS       ;
           MOVF     DTADDR,W     ;地址指针至FSR 
           MOVWF    FSR 
           INCF     DTADDR,F     ;地址指针增量       
           MOVF     INDF,W        ;
           MOVWF    TEMP          ;        
           CALL     WR_9200A      ;写5位DTMF码
           CALL     T100MS         ;                    
           DECFSZ   DTCNT,F
           GOTO     WR_STOP  
;
           HOOK_OFF          
           CALL     T50MS       ;等待挂机稳定  
           CLRF     MSCNT       ;重开定时发送
           CLRF     T_SEND      ;
           RETURN               ; 
WR_STOP
           MOVLW    0X1F        ;写5位STOP码
           MOVWF    TEMP        ;到9200A
           CALL     WR_9200A
           CALL     T100MS      ;*** +
           GOTO     SDTMF_LP0   ;  
;----------------------------------------------------------------------
;刷卡成功“嘀”-“嘀”提示:
;----------------------------------------------------------------------
CARD_BEEP  
		   ;MOVLW   0X01
           ;MOVWF   DTBUF       ;送发送缓冲区
          ; MOVLW   0X01
          ; MOVWF   DTCNT       ;发送码长1
           ;MOVLW    DTBUF      ;
           ;MOVWF    DTADDR     ; 置DTMF缓冲区首地址
           
           ;MOVLW    0XB0
          ; MOVWF    FSR
           ;MOVLW    0X0B
           ;MOVWF    INDF
           ;INCF     FSR,F
           ;MOVLW    0X01
           ;MOVWF    INDF
           ;INCF     FSR,F
           ;MOVLW    0X02
           ;MOVWF    INDF
           ;INCF     FSR,F
           ;MOVLW    0X03
           ;MOVWF    INDF
           ;INCF     FSR,F
           ;MOVLW    0X04
           ;MOVWF    INDF
           ;INCF     FSR,F
           ;MOVLW    0X05
           ;MOVWF    INDF
           ;INCF     FSR,F
           ;MOVLW    0X06
           ;MOVWF    INDF
           ;INCF     FSR,F
           ;MOVLW    0X07
           ;MOVWF    INDF
           ;INCF     FSR,F
           ;MOVLW    0X08
           ;MOVWF    INDF
           ;INCF     FSR,F
           ;MOVLW    0X0C
           ;MOVWF    INDF
           ;
           ;MOVLW    0XB0
          ; MOVWF    DTADDR
           ;
           LED_ON
           BEEP_ON
           CALL     T100MS
           BEEP_OFF                     
           CALL     T500MS
           BEEP_ON
           CALL     T100MS
           BEEP_OFF
           CALL     T1S
           LED_OFF           
           RETURN
;----------------------------------------------------------------------
;发送一个双音频:TEMP=DTMF CODE 
;执行时间:13X5+4=69US
;----------------------------------------------------------------------
WR_9200A  
           MOVLW    0X05
           MOVWF    VLCNT                   
WR_92LP   
           rrf      TEMP,1           ;
           bcf      MOSI             ;
           btfsc    STATUS,C         ;
           bsf      MOSI             ;PORTB=11011011/11011111
           bcf      SCK              ;SCK ViH to ViL
           NOP                       ;
           NOP                       ;
           NOP
           NOP
           bsf      SCK              ;CK ViL to ViH
           decfsz   VLCNT,1          ;
           goto     WR_92LP          ; 
           RETURN                    ; 
;###############################################################
;RF522读卡器程序
;###############################################################
;计算CRCV16函数
; 参数:*PINDATA 输入数据指针  LEN 长度
; *POUTDATA 输出数据指针 次序:crcL,crcH;
CALULATECRC                           ;18          
            BANKSEL  PORTC
            MOVLW    DIVIRQREG       ;0X05
            MOVWF    REGADR
            MOVLW    0X04
            MOVWF    MASK
            CALL     CLEARBITMASK    ;清CRCIRQ位
;
            MOVLW    COMMANDREG      ;0X01
            MOVWF    REGADR
            MOVLW    PCD_IDLE        ;0X00
            MOVWF    VALUE
            CALL     WRITERAWRC      ;取消当前执行的命令
;
            MOVLW    FIFOLEVILREG    ;0X0A
            MOVWF    REGADR
            MOVLW    0X80
            MOVWF    MASK
            CALL     SETBITMASK      ;请FIFO指针
;
            MOVLW    0
            MOVWF    JSQI
LOOPCRC        
            MOVF     PINDATA,W      
            MOVWF    FSR
            MOVLW    FIFODATAREG      ;0X09
            MOVWF    REGADR
            MOVF     JSQI,W
            ADDWF    FSR,F
            MOVF     INDF,W 
            MOVWF    VALUE
            CALL     WRITERAWRC     ;写字节到FIFODATAREG
;
            INCF     JSQI,F
            MOVF     LEN,W
            SUBWF    JSQI,W
            BTFSS    STATUS,C		;C=0时,有借位
            GOTO     LOOPCRC        ;未写完
;                                   ;JSQI=len
            MOVLW    COMMANDREG     ;0X01
            MOVWF    REGADR
            MOVLW    PCD_CALCCRC    ;0X03 
            MOVWF    VALUE
            CALL     WRITERAWRC     ;命令522计算校验和
;
            MOVLW    0XFF
            MOVWF    JSQI           ;
LOOPDO      
            MOVLW    DIVIRQREG       ;0X05
            MOVWF    REGADR
            CALL     READRAWRC                                      ;
;            MOVWF    JSQL           ;JSQL=x00x0 CRCIRQ 00
            ANDLW    0X04
            BTFSS    STATUS,Z
            GOTO     CRCEND       ;CRCIRQ=1,检验完   
;
            DECFSZ   JSQI,F       ;
            GOTO     LOOPDO       ;未到256次
CRCEND      ;读2字节检验和
            MOVF     POUTDATA,W
            MOVWF    FSR
            MOVLW    CRCRESULTREGL   ;0X22
            MOVWF    REGADR
            CALL     READRAWRC
            MOVWF    INDF
;
            INCF     FSR,F
            MOVLW    CRCRESULTREGM   ;0X21
            MOVWF    REGADR
            CALL     READRAWRC      
            MOVWF    INDF  
            RETURN
;----------------------------------------------           
;读RC632寄存器(地址在REGADR中)返回读出的值在VALUE中
;SCK==RB6,MISO==RB4,MOSI==RC7;
;工作单元:REGADR,UCADDR,VALUE,BJSQ 
READRAWRC                                ;1
            BANKSEL  TRISC
		    BCF      TRISC,3
		    BCF      TRISC,7
		    BCF      TRISB,6
		    BCF      TRISC,6
		    BSF      TRISB,4
            BANKSEL  PIR1
;
            CLRF     VALUE
            BCF      SCK
			NOP
            BCF      SSEL
			MOVF	 REGADR,W
            MOVWF    UCADDR
            RLF      UCADDR,W
	        ANDLW    0X7E
            IORLW    0X80        ;UCADDR=1AAAAAA0           
            MOVWF    UCADDR      ;
            MOVLW    0X08
            MOVWF    BJSQ  
;写地址
LOOPR1      
            BCF      MOSI          ;写地址 
            BTFSC    UCADDR,7          
            BSF      MOSI    
MOSI_2      
            BSF      SCK
            RLF      UCADDR,F
;
            BCF      SCK
            DECFSZ   BJSQ,F
            GOTO     LOOPR1 
;读数据            
            MOVLW    0X08
            MOVWF    BJSQ 
LOOPR2   
            BSF      SCK
;
            RLF      VALUE,F    ;            
            BCF      VALUE,0
            BTFSC    MISO 
            BSF      VALUE,0
;

⌨️ 快捷键说明

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