You are on page 1of 9

Code

void initialise(){
TRISC=0xfe;
TRISA=0x01;
ADCON0=0b10000001;
ADCON1=0;
PORTC=0;
}
void convert(){
while(GO_DONE);}
void light(){

int lightlv =((ADRESH<<8)+ADRESL);


if(lightlv>365)
PORTC=1;

void main() {
initialise();
while(1){
convert() ;
light();
delay_ms(4000);}

}
LIST P=16F877A
INCLUDE "P16F877A.INC"
__CONFIG(_CP_OFF & _WDT_OFF &
_PWRTE_OFF & _HS_OSC)

CBLOCK 0X0C
TIME1
TIME2
ENDC

ORG 0X00
GOTO MAIN
ORG 0X04
GOTO MAIN
;------------------------------------------------------------------
--------------------

DELAY MOVLW 0XFF


MOVWF TIME1
LOOP1 MOVLW 0XFF
MOVWF TIME2

LOOP2 NOP
DECFSZ TIME2,F
GOTO LOOP2
DECFSZ TIME1,F
GOTO LOOP1
RETURN
;------------------------------------------------------------------

MAIN BSF STATUS,RP0


MOVLW 0X00
MOVWF TRISB
MOVLW 0XFF
MOVWF TRISA
BCF STATUS,RP0
AGAIN BCF PORTB,0
BTFSC PORTA,0
GOTO FREQ1
BTFSC PORTA,3
GOTO FREQ2
GOTO AGAIN
;-----------------------------------------------------------

FREQ1
BSF PORTB,0
CALL DELAY
CALL DELAY
BCF PORTB,0
CALL DELAY
CALL DELAY
GOTO AGAIN
;---------------------------------------------
FREQ2
BSF PORTB,0
CALL DELAY
BCF PORTB,0
CALL DELAY
GOTO AGAIN
END

INTERFACING RELAY

LIST P=16F84A
INCLUDE "P16F84A.INC"
__CONFIG(_CP_OFF & _WDT_OFF &
_PWRTE_ON & _XT_OSC)

CBLOCK 0X0C
TIME1
TIME2
ENDC

ORG 0X00
GOTO MAIN
ORG 0X04
GOTO MAIN
;------------------------------------------------------------------
--------------------

DELAY MOVLW 0XFF


MOVWF TIME1
LOOP1 MOVLW 0XFF
MOVWF TIME2

LOOP2 NOP
DECFSZ TIME2,F
GOTO LOOP2
DECFSZ TIME1,F
GOTO LOOP1
RETURN
;------------------------------------------------------------------

MAIN BSF STATUS,RP0


MOVLW 0X00
MOVWF TRISB
MOVLW 0XFF
MOVWF TRISA
BCF STATUS,RP0
AGAIN BTFSC PORTA,0
GOTO BACK
GOTO AGAIN
BACK BSF PORTB,0
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
BCF PORTB,0
GOTO AGAIN
END

You might also like