www.pudn.com > CDJ-1-73.rar > CDJ-1-73.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