Buenas a todos, he tratado de usar el modulo ADC del PIC16F887 en MPLAB XC8 5.40 en ASM. Mi duda ha sido que al verificar con la simulación he obtenido que me arroja los mismos resultados en los 2 Ports de salida pero en Watch Windows de Proteus mi ADRESL es distinto al mostrado en el PORTD pero ADRESH si es correcto mostrado en PORTB. Soy totalmente nuevo y no entiendo mucho del ASM, si pudiesen indicarme mi error, gracias.
PROCESSOR 16F887
#include <xc.inc>
///////////////////////////////////////////////////////////////////////////////
CONFIG FOSC = EXTRC_NOCLKOUT
CONFIG WDTE = OFF
CONFIG PWRTE = OFF
CONFIG MCLRE = ON
CONFIG BOREN = ON
CONFIG LVP = OFF
CONFIG CPD = OFF
CONFIG CP = OFF
CONFIG IESO = OFF
CONFIG FCMEN = OFF
CONFIG BOR4V = BOR40V
CONFIG WRT = OFF
///////////////////////////////////////////////////////////////////////////////
X EQU 20H
Y EQU 21H
Z EQU 22H
///////////////////////////////////////////////////////////////////////////////
resetVector: org 0
goto CONF
///////////////////////////////////////////////////////////////////////////////
CONF:
;Configurar Pines de E/S como analogica RA0 y salidas digitales RC
BANKSEL TRISA
BSF TRISA,0
BANKSEL ANSEL
CLRF ANSEL
MOVLW 11111111B
MOVWF ANSEL
BANKSEL TRISC
CLRF TRISC
BANKSEL TRISD
CLRF TRISD
/////////////////////
BANKSEL PSTRCON
CLRF PSTRCON
;Justificar a la Izquierda
BANKSEL ADCON1
MOVLW 10000000B
MOVWF ADCON1
;Seleccionar reloj, Ch de entrada AN/0 y activar modulo ADC
BANKSEL ADCON0
MOVLW 01000001B
MOVWF ADCON0
///////////////////////////////////////////////////////////////////////////////
MAIN:
CALL DELAY
BSF ADCON0,1
BTFSC ADCON0,1
GOTO $-1
MOVF ADRESH,w
MOVWF PORTC
MOVF ADRESL,w
MOVWF PORTD
GOTO CONF
///////////////////////////////////////////////////////////////////////////////
DELAY:
MOVLW 5
MOVWF Z
TRES:
MOVLW 80
MOVWF X
DOS:
MOVLW 250
MOVWF Y
UNO:
NOP
NOP
DECFSZ Y,1
GOTO UNO
DECFSZ X,1
GOTO DOS
DECFSZ Z,1
GOTO TRES
CLRF X
CLRF Y
CLRF Z
RETURN
///////////////////////////////////////////////////////////////////////////////
end resetVector