LIST P=16F877A
INCLUDE "P16F877a.inc"
status EQU 0x03
TRISA EQU 0X85
PORTA EQU 0X05
TRISB EQU 0X86
PORTB EQU 0X06
CHK1 EQU 0X21
CNT1 EQU 0CH
CNT2 EQU 0DH
count EQU 0x20h
NumH equ 0x22h
org 0x000
nop
BSF STATUS,RP0
MOVLW H'FF'
MOVWF TRISA
movlw H'00';
movwf TRISB;
banksel PORTA
BCF STATUS,RP0
clrf PORTB
banksel ADCON1
movlw b'10000000'
movwf ADCON1
banksel ADCON0
movlw b'10000001'
movwf ADCON0
goto start
getAD bsf ADCON0,GO
btfsc ADCON0,GO
goto $-1
banksel ADRESH
movf ADRESH,w
movwf NumH
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 NumH
sublw 0x29 ;adc result in NumH will minus with 0x29....
btfss status,2 ;jump to bsf if after subwf is = zero
goto start ;if not = zero,start again
bsf PORTB,0
call delay
end