quiero prender y apagar una valvula segun la temperatura

quiero prender y apagar una valvula segun la temperatura tomada por un PIC al cual le doy un set point, cuando la entrada an6 del PIC 16F877a me de mayor a 2.5v me apague la salida portd,2 y cuando sea menor que prenda, pero el programa que hice solo prende cuando la entrada an6 es igual a 0v probando en el ISIS professional ¿quisiera saber donde esta la falla?

list p=16f877a
include <p16f877a.inc>

reg equ 0x21
datox equ 0x22
reg2 equ 0x23
reg3 equ 0x24
org 0

Inicio bsf status,5 ;Banco1
movlw 0xff
movwf trisA ;declarado entrada
movlw b'00000010' ;declarado entradas analogicas y digitales
movwf ADCON1
clrf trisD
bcf status,5 ;Banco0

Programa
movlw d'512' ;el valor de set point 2.5v
movwf datox


movlw b'00110001'
movwf ADCON0
Call Retardito
bsf ADCON0,2
btfsc ADCON0,2
goto $-1
movf ADRESH,W


subwf datox,w
btfss status,c
goto apagar
goto activar
activar bsf portd,2
call retardo
goto Programa
apagar bcf portd,2
call retardo
goto Programa
retardo movlw d'255'
movwf reg2
bucle2 movwf reg3
bucle1 decfsz reg3,f
goto bucle1
decfsz reg2,f
goto bucle2
return

retardito movlw d'255'
movwf reg
decfsz reg,f
goto $-1
return
end
 
Atrás
Arriba