Maunix mira asi es como lo estoy haciendo,
list p=16f873A
include "p16f873A.inc"
org 0x00
nop
nop
bcf STATUS,RP0 ;Ir banco 0
bcf STATUS,RP1
movlw b'01000001' ;A/D conversion Fosc/16 para el tiempo necesario de conversion ADC
movwf ADCON0
bsf STATUS,RP0 ;Ir banco 1
movlw b'00000001'
movwf TRISA ;PORTA salida y AN0 entrada
clrf TRISB ;PORTB salida
clrf TRISC ;PORTC salida
movlw b'11001110' ;A/D Port AN0/RA0, justificado a la derecha
movwf ADCON1
movlw D'12' ; 19200 baud rate Xtal=4Mhz, es decir 19.2 bits por mS
movwf SPBRG
bsf TXSTA,BRGH ;Selección de alta velocidad
bcf TXSTA,SYNC ;Modo asíncrono
clrf OPTION_REG ;TMR0 preescaler, 1:2
bcf TXSTA,TX9 ;8 bits de datos a transmitir
bsf TXSTA,TXEN ;Activa la transmisión serial, TXIF = 1
bcf STATUS,RP0 ;Ir banco 0
bsf RCSTA,SPEN ;habilita el puerto serie
_bucle
movlw D'40' ; Cuando llegue a 80uS, que es mas del tiempo necesario (20uS) para carga del sample and hold
subwf TMR0,W ; Resta TMR0-W y lo guarda en W
btfsc STATUS,C
goto _bucle ;Esperar que el timer0 llegue a 40
bsf ADCON0,GO ;Start A/D conversion
_espera
btfsc ADCON0,GO ;ADCON0 es 0? (la conversion esta completa?)
goto _espera ;No, ir _espera
clrf TXREG ; AQUI BORRO EL BUFFER
bsf STATUS,RP0 ; ir a banco 1
movf ADRESL,W ;Si, W=ADRESL
bcf STATUS,RP0 ; vuelve a banco 0
movwf TXREG
_esperatx
btfss PIR1,TXIF ;Espera hasta que transmisión registro bajo culminó
goto _esperatx
nop ;
_bucle33 ; RETARDO PARA ASEGURAR 1KHz DE MUESTREO
btfss INTCON,T0IF
goto _bucle33 ;
bcf INTCON,T0IF ;Limpiar el indicador de desborde
clrf TXREG ; AQUI BORRO EL BUFFER
movf ADRESH,W ;Si, W=ADRESH
movwf TXREG
_esperatx2
btfss PIR1,TXIF ;Espera hasta que transmisión registro alto culminó
goto _esperatx2
_bucle44 ; RETARDO PARA ASEGURAR 1KHz DE MUESTREO
btfss INTCON,T0IF
goto _bucle44 ;Esperar que timer0 desborde
bcf INTCON,T0IF ;Limpiar el indicador de desborde
clrf TXREG ; AQUI BORRO EL BUFFER
goto _bucle ;Ir a bucle
end
quedo muy atento de tus comentarios, gracias!
Saludos