ok amigo........el codigo es el siguiente..................la novedad del codigo.bueno al menos para mi fue que escribi una rutina de 16 BIT
; ----------------------------------------------------------
; COMPARADOR TIPO VENTANA DE VALORES ANALOGICOS
; ----------------------------------------------------------
list p=12f675
#include "p12f675.inc"
errorlevel -302
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
; -----------------------------------------------------------------
; defines
; -----------------------------------------------------------------
#define LEDR 5
#define LEDA 4
#define LEDV 2
; -----------------------------------------------------------------
; variables
; -----------------------------------------------------------------
cblock 0x20
ADC_al
ADC_ba
Vs_al
Vs_ba
Vi_al
Vi_ba
Sup
Inf
Bit
Tem
endc
; ------------------------------------------------------------------
; initialisacion
; ------------------------------------------------------------------
org 0
banksel ANSEL
movlw 11h ;AN0 as analog input,conversion clock Fosc/8
movwf ANSEL
bankseL CMCON
movlw 07h ;comparators off
movwf CMCON
movlw 0x80 ;ADC on, right justified
movwf ADCON0
banksel TRISIO
movlw B'00000001' ;LED output GPIO5 (pin 2), AN0 input GPIO0 (pin 7) 00001111
movwf TRISIO
movlw 0x01
movwf Vs_al
movlw 0x00
movwf Vs_ba
movlw 0x00
movwf Vi_al
movlw 0xFF
movwf Vi_ba
goto Ciclo
; ------------------------------------------------------------------
; macro definitions
; ------------------------------------------------------------------
Comp:
movf Sup, W
subwf ADC_al, W
btfss STATUS, C
goto a_menor_b
movf Inf, W
subwf ADC_ba, W
btfss STATUS, C
goto a_menor_b
a_may_igu_b:
bsf Bit, 1
goto Salir
a_menor_b:
bcf Bit, 1
Salir:
return
; -----------------------------------------------------------------------
; main program loop
; -----------------------------------------------------------------------
Ciclo:
call Leer_ADC ;read ADC
;banksel GPIO
movf Vs_al, W
movwf Sup
movf Vs_ba, W
movwf Inf
call Comp
btfsc Bit, 1
goto Led_a
movf Vi_al, W
movwf Sup
movf Vi_ba, W
movwf Inf
call Comp
btfss Bit, 1
goto Led_a
bcf GPIO, LEDR
goto Ciclo
Led_a:
bsf GPIO, LEDR
goto Ciclo
; ---------------------------------------------------------------------
; Captura de valores analogicos con el ADC de 10 BIT
; ---------------------------------------------------------------------
Leer_ADC:
banksel ADCON0
movlw 0x81 ;ADC on, right justified
movwf ADCON0
bsf ADCON0, 1 ;start conversion
call Temp
btfss PIR1, ADIF
goto $-1 ;wait for ADC to finish
movf ADRESH, W ;get high byte
movwf ADC_al
banksel ADRESL
movf ADRESL, W ;get low byte
movwf ADC_ba
banksel PIR1
bcf PIR1, ADIF ;clear conversion flag
return
; ----------------------------------------------------------------------
Temp:
movlw .30
movwf Tem
decfsz Tem, F
goto $-1
Return
end