LIST P=16F877A
INCLUDE "P16F877a.inc"
__CONFIG _CP_OFF & _WDT_OFF & _XT_OSC & _PWRTE_ON
CHK1 EQU 0X21
CNT1 EQU 0CH
CNT2 EQU 0DH
count EQU 0x20
org 0x000
nop ;
banksel TRISA
movlw b'00000000';
movwf TRISB;
BCF STATUS,RP0
clrf PORTB
banksel ADCON1
movlw b'10000000
movwf ADCON1
banksel ADCON0
movlw b'10000001
movwf ADCON0
getAD movlw 007
movwf count
down decfsz count
goto down
bsf ADCON0,GO
wait btfsc ADCON0,GO
goto wait
return
delay MOVLW D'5'
MOVWF CNT2
CON1 MOVLW H'FF'
MOVWF CNT1
DECFSZ CNT1,1
GOTO $-1
DECFSZ CNT2,1
GOTO CON1
RETURN
start call getAD ; get adc result store at adresh
movlw 0xC8 ;
subwf ADRESH,1 ; adc result in adresh will minus wiv (0xc8=1v)
btfsc ADRESH,0 ;if after minus =0,turn on portb
goto start
btfsc ADRESH,1
goto start
btfsc ADRESH,2
goto start
btfsc ADRESH,3
goto start
btfsc ADRESH,4
goto start
btfsc ADRESH,5
goto start
btfsc ADRESH,6
goto start
btfsc ADRESH,7
goto start
bsf PORTB,1
call delay
END