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

📄 cdj-1-73.asm

📁 一个充电机用的成熟程序.带各种报警,自动恒压.直接下载即可用.
💻 ASM
字号:

	list      p=16f873A           ; list directive to define processor
	;_config	0x01
	#include  P16f873A.inc        ; processor specific variable definitions
	;**********************************************************************
	 __CONFIG  _PWRTE_ON & _WDT_OFF & _HS_OSC &_BODEN_OFF &_CP_ALL


JS1             EQU     0X5E
JS2             EQU     0X5F
JS3             EQU     0X51
R3	        	EQU	    0x39
R4	        	EQU 	0x3A
R1	        	EQU 	0x3B
R5		        EQU 	0x3C
R0	         	EQU 	0x20
R2              EQU     0X2B
SR1             EQU     0X6E
SR2             EQU     0X6F
AD0TEMP	    	EQU	    0x30
AD1TEMP	    	EQU	    0x31
AD0TEMPB	    EQU	    0x32
AD1TEMPB	    EQU	    0x33
AD0TEMPA        EQU     0x44
AD1TEMPA        EQU     0x45
JRS1            EQU     0X78
JRS2            EQU     0X79
TEMP            EQU     0X21
CCPD            EQU     0X22
CCPE            EQU     0X23
CCPD1           EQU     0X24
CCPE1           EQU     0X25
    
    	ORG	0x00
	clrf    PCLATH            ; ensure page bits are claared
 	GOTO    MAIN  

	   ORG	0X10
MAIN
    	BCF	STATUS,RP1
    	BSF	STATUS,RP0
    	MOVLW	0x02
    	MOVWF	PCON
    	MOVLW	0x87
        MOVWF	OPTION_REG
    	MOVLW	0x02
    	MOVWF	ADCON1
    	MOVLW	0xFF
    	MOVWF	TRISA
     	MOVLW	0xFF
    	MOVWF	TRISB
    	MOVLW	0x00
    	MOVWF	TRISC
   
        MOVLW   0X3D      ;T2CON,1,0=00,1:1,16KHZ 
        MOVWF   PR2
      ;  BSF     PIE1,CCP1IF
    	BCF	    STATUS,RP0
     ;   BSF     INTCON,GIE
        MOVLW   0X0F
        MOVWF   CCP1CON
   ;     CLRF    CCPR1L
        CLRF    CCPD
        CLRF    CCPE
        CLRF    TEMP
        CLRF    CCPD1
        CLRF    CCPE1
        CLRF    AD0TEMP	    	
        CLRF    AD1TEMP	    	
        CLRF    AD0TEMPB	    
        CLRF    AD1TEMPB	    
        CLRF    AD0TEMPA        
        CLRF    AD1TEMPA        
        CLRF    JRS1            
        CLRF    JRS2            
        MOVLW   0X04
        MOVWF   T2CON
        MOVLW   0xEF
        MOVWF   PORTA
        MOVLW   0XFF
        MOVWF	PORTB
        MOVLW   0X00
        MOVWF   PORTC
        MOVLW   0xFF
        MOVWF   TMR0
        MOVLW	0x31
    	MOVWF	T1CON
        CLRF    SR1
        CLRF    SR2 
        MOVLW   0XFF
        MOVWF   CCPR1L

PROG_BEG
        MOVLW   0X04
        MOVWF   T2CON
        BTFSC   PORTC,0
        GOTO    JX2
        MOVLW   0XFF
        MOVWF   CCPR1L
        BCF     PORTC,3
        BCF     PORTC,4
        BCF     PORTC,7
        BCF     PORTC,6
JX2
        BTFSC   PORTB,7
        GOTO    ZY5
        CALL    DELAY
        CALL    DELAY
        BTFSC   PORTB,7
        GOTO    ZY5
        GOTO    GO1
GO1  
        BTFSC   PORTB,7
        GOTO    GO2
        GOTO    GO1
GO2   
        BTFSC   R3,0                 ;PORTC,0
        GOTO    ZY3      
        BSF     R3,0                  ;PORTC,0
        GOTO    ZY2
ZY3
        BCF     R3,0                ; PORTC,0
        BCF     PORTC,0
        GOTO     ZY4
        NOP
ZY2          
        BSF     PORTC,4
        BSF     PORTC,5
        BSF     PORTC,6
        BSF     PORTC,7
        
        MOVLW   0xFF
        MOVWF   R5
WAIT1
        MOVLW   0XFF
        MOVWF   TMR0
WAIT: 
        BTFSS   INTCON,2        
        GOTO    WAIT
        CALL    DELAY2
        DECFSZ  R5
        GOTO    WAIT1
        CALL     DELAY2 
        BSF     PORTC,4
        BSF     PORTC,0
        BCF     PORTC,5
        BCF     PORTC,6
        BCF     PORTC,7
        BSF     INTCON,2
        MOVLW   0X3F          ;3D
        MOVWF   CCPR1L
        GOTO    ZY4
        NOP
        NOP
ZY4       
        NOP
        BTFSC   PORTC,0
        GOTO    ZY1
ZYRE
        BCF     PORTC,3
 ;       MOVLW   0XFF
 ;       MOVWF   CCPR1L
        GOTO    PROG_BEG
ZY5
        NOP
        BTFSS   PORTC,0
        GOTO    ZYRE
        GOTO    AD_CHG1
ZY1
        CALL    DELAY1
        CALL    DELAY1
        CALL    DELAY1
        BSF     PORTC,3
        CALL    DELAY1
        BSF     T2CON,TMR2ON
        NOP
        NOP
AD_CHG1
        CALL    DELAY
        MOVLW   0xC1
        MOVWF   ADCON0
        CALL    DELAY
        BSF     ADCON0,GO
AD_WAIT1
        CALL    DELAY
        BTFSC   ADCON0,GO
        GOTO    AD_WAIT1
U0_IN
        MOVFW   ADRESH
        ADDWF   AD0TEMPA,1
        BTFSS   STATUS,C
        GOTO    AD_SET0N
        RRF     AD0TEMPA,1
        BSF     AD0TEMPA,7
        GOTO    U0_END
        NOP
AD_SET0N
        RRF     AD0TEMPA,1
        BCF     AD0TEMPA,7
U0_END
        MOVFW   AD0TEMPA
        MOVWF   JRS1
        NOP
        CALL    DELAY
        CALL    DELAY
        MOVFW   JRS1

        MOVWF   AD0TEMP
AD_CHG2
        CALL    DELAY
        MOVLW   0xC9
        MOVWF   ADCON0
        CALL    DELAY
        BSF     ADCON0,GO
AD_WAIT2
        CALL    DELAY
        BTFSC   ADCON0,GO
        GOTO    AD_WAIT2
        MOVFW   ADRESH
U1_IN
        MOVFW   ADRESH
        ADDWF   AD1TEMPA,1
        BTFSS   STATUS,C
        GOTO    AD_SET1N
        RRF     AD1TEMPA,1
        BSF     AD1TEMPA,7
        GOTO    U1_END
        NOP
AD_SET1N
        RRF     AD1TEMPA,1
        BCF     AD1TEMPA,7
U1_END
        MOVFW   AD1TEMPA
        MOVWF   JRS2
        NOP
        CALL    DELAY
        CALL    DELAY
        MOVFW   JRS2
        MOVWF   AD1TEMP
       
        BTFSS   PORTC,0
        GOTO    PROG_BEG
        CALL    DELAY
        BTFSC   PORTB,5
        GOTO    DDK
        BSF     PORTC,5
        
NEXT1 
        BCF     PORTC,0  
        BCF     PORTC,4
        BCF     PORTC,6
        BCF     PORTC,7
        BCF     PORTC,3
        GOTO    PROG_BEG
DDK 
        MOVFW   AD1TEMP           ;3v
        SUBLW   0X99
        BTFSC   STATUS,C
        GOTO    IOD               
        GOTO    NEXT3
      
IOD
        MOVFW   AD1TEMP        
        SUBLW   0X7F          ;2.5v
        BTFSS   STATUS,C
        GOTO    IBD1              
        GOTO    VOD
IBD1
        BTFSS   PORTC,0
        GOTO    PROG_BEG
        BSF     PORTC,6           
        BCF     PORTC,7
        BSF     PORTC,4     
        GOTO    NEXTZ                       
               
        MOVFW   AD0TEMP        
        SUBLW   0X99
        BTFSC   STATUS,C
        GOTO    NEXTZ            
NEXT3
        BSF     PORTC,5
        BCF     PORTC,4
        BCF     PORTC,0       
        BCF     PORTC,7       
        BCF     PORTC,6       
        BCF     PORTC,3
        GOTO    NEXTZ       

VOD
        BTFSS   PORTC,0
        GOTO    PROG_BEG
        BSF     PORTC,4
        BSF     PORTC,3 
        MOVFW   AD0TEMP
        SUBLW   0X33
        BTFSS   STATUS,C 
        GOTO    NEXTZ      
        BTFSS   PORTC,0
        GOTO    PROG_BEG
        BCF     PORTC,6
        BSF     PORTC,7
        BSF     PORTC,4
                             
NEXTZ                  
  
        MOVLW   0X0F
        MOVWF   CCP1CON 
        BSF     T2CON,TMR2ON
        NOP  
        BTFSS   PIR1,TMR2IF
        GOTO    PROG_BEG  
        CALL    ZD

        GOTO    PROG_BEG
DELAY1
    	MOVLW	0xFF
        MOVLW   JS1
    	MOVWF	JS2        
DELAY_0
        MOVLW   0XFF
        MOVWF   JS3
DELAY_2
    	DECFSZ	JS3
    	GOTO 	DELAY_2
        DECFSZ  JS1
        GOTO    DELAY_0
DELAY_3
        DECFSZ  JS2
        GOTO    DELAY_3
    	return
        
DELAY2
        MOVLW   0X7F
        MOVWF   JS2
DELAY_6
        MOVLW   0X0F
        MOVWF   JS1
DELAY_5
        DECFSZ  JS1,1
        GOTO    DELAY_5
        DECFSZ  JS2,1
        GOTO    DELAY_6
        RETURN
DELAY3
        MOVLW   0X7F
        MOVWF   JS2
DELAY_8
        MOVLW   0XFF
        MOVWF   JS1
DELAY_7
        DECFSZ  JS1,1
        GOTO    DELAY_7
        DECFSZ  JS2,1
        GOTO    DELAY_8
        RETURN

DELAY
    	MOVLW	0xFF
    	MOVWF	R0
DELAY_1
    	DECFSZ	R0,1
    	GOTO 	DELAY_1
    	return
ZD
        BCF     PIR1,TMR2IF      ;VD>3V? 
        MOVFW   AD1TEMP
        SUBLW   0X99
        BTFSC   STATUS,C
        GOTO    ZD1              ;<3V
        GOTO    NEXT3              ;>3V 
ZD1
        MOVFW   AD0TEMP          ;ID>2.5V?
        SUBLW   0X99 
        BTFSC   STATUS,C
        GOTO    ZD2              ;<2.5V
        GOTO    NEXT3            ;>2.5V,OFF 
ZD2
        MOVFW   AD1TEMP       ;VD>2.5V?
        SUBLW   0X7F
        BTFSS   STATUS,C    
        GOTO    DDZ1           ;>2.5V
        GOTO    DZ3           ;<2.5V

DZ3    
   
        MOVFW   AD0TEMP
        SUBLW   0X33           ;1V
        BTFSC   STATUS,C
        GOTO    DE2
        GOTO    DDZ           
DDZ     
        MOVFW   AD0TEMP   
        SUBLW   0X32          
        BTFSC   STATUS,C       
        GOTO    RET1
        MOVFW   AD0TEMP
        SUBLW   0X34
        BTFSC   STATUS,C
        GOTO    RET1
DDZ1
        MOVFW   CCPR1L
        SUBLW   0X3D
        BTFSS   STATUS,C
        GOTO    RETD
        INCF    CCPR1L
        MOVFW   CCPR1L
        MOVWF   CCPD       
        CALL    DELAY3
        GOTO    RET1        ;>
DE2        
        MOVFW   AD0TEMP     
        SUBLW   0X34  
        BTFSS   STATUS,C
        GOTO    RET1 
        MOVFW   AD0TEMP   
        SUBLW   0X32
        BTFSS   STATUS,C
        GOTO    RET1
        MOVFW   CCPR1L
        SUBLW   0X01
        BTFSC   STATUS,C
        GOTO    RETE
        DECF    CCPR1L        ;-1
        MOVFW   CCPR1L
        MOVWF   CCPD      
        CALL    DELAY3
        GOTO    RET1
RETD
        MOVLW    0X3D
        MOVWF    CCPR1L
        GOTO     RET
RETE
        MOVLW   0X02
        MOVWF   CCPR1L
        GOTO    RET
RET1
        MOVFW   CCPD
        MOVWF   CCPR1L
                               ;<
RET     
        RETURN     
        NOP
        NOP
        END

⌨️ 快捷键说明

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