Problema con ADC del PIC, no logro que muestre el resultado completo

Hola soy nuevo con los microcontroladores y estaba utilizando el ADC de 10 bit de resolucion que trae el PIC16F690, lei la hoja de datos y lo configure tal y como dice esta. Simplemente luego de obtener la conversion en los registros "ADRESH" y "ADRESL", queria que los mostrara en unos LED conectados en los puertos, nada muy complicado.

En fin estuve lidiando todo el dia con el problema de que no puedo leer los datos del registro ADRESL, intente cambiando el pic, revisando la programacion, hasta hice un programa similar con un PIC16F877 y nada. En la programacion justifique el resultado a la derecha para que 8 bits quedaran en ADRESL y los otros 2 en ADRESH. Sin embargo cuando movia el potenciometro de 5k que estaba leyendo unicamente cambiaban los led que representaban al registro ADRESH. Incluso podia cambiar la programacion para que aparecieran 8 bits en ADRESH y 2 en ADRESL, y aun así solo cambiaban los que representaban al ADRESH. :x

En fin ya no se que hacer, no se si estoy haciendo algo mal en la programacion, por eso la voy a colocar. Ojala me puedan ayudar porque este problema ya me tiene cansado . Lo que pensaba hacer luego era tratar de utilizar un teclado de 3x4 en un solo pin del ADC.

Código:
CBLOCK	0X20
RESBAJO		;VARIABLEs PARA GUARDAR DATOS DEL ADC
RESALTO		
	ENDC

	ORG	0
INICIALIZACION:
	CLRF	PORTA
	CLRF	PORTC
	BSF	STATUS,RP0		;BANCO1
	MOVLW	B'00010000'		;FRECUENCIA/8
	MOVWF	ADCON1
	MOVLW	B'11111100'		;RA0/1 SALIDAS EL RESTO ENTRADAS
	MOVWF	TRISA
	CLRF	TRISC			;PUERTO C COMO SALIDA
	BCF	STATUS,RP0		;BANCO0
	BSF	STATUS,RP1		;BANCO2
	MOVLW	B'00000100'		;AN2, EL RESTO DIGITAL
	MOVWF	ANSEL	
	BCF	STATUS,RP1		;BANCO0
	MOVLW	B'10001001'		;JUSTIFICADO A LA DERECHA, CANAL 2, ENCIENDE ADC
	MOVWF	ADCON0
CONVERSION:
	NOP		;ESPERA A QUE EL CAPACITOR DEL MUESTREO SE CARGUE
	NOP
	NOP
	NOP
	NOP
	BSF	ADCON0,GO		;INICIA CONVERSION
	BTFSC	ADCON0,GO		;ESPERA A QUE TERMINE
	GOTO	$-1
	BSF	STATUS,RP0		;BANCO1
	MOVF	ADRESL,W		;PASA RESULTADO BAJO A W
	MOVWF	RESBAJO			;Y LO GUARDA EN UN REGISTRO
	BCF	STATUS,RP0		;BANCO0
	MOVF	ADRESH,W		;PASA RESULTADO ALTO A W
	MOVWF	RESALTO			;Y LO GUARDA EN UN REGISTRO
	MOVF	RESBAJO,W
	MOVWF	PORTC
	MOVF	RESALTO,W
	MOVWF	PORTA
	GOTO	CONVERSION
	END[code]
[/code]
 
probaste publicar el resalto en otro puerto del micro, pues algunas combinaciones que vienen especifivadas por microhip no funcionan me refieron a las del puerto de entrada y salida, verifica con otro puerto haber como te va.
 
GOTO $-1

MOVF ADRESH,W ;PASA RESULTADO ALTO A W
MOVWF RESALTO ;Y LO GUARDA EN UN REGISTRO
BSF STATUS,RP0 ;BANCO1
MOVF ADRESL,W ;PASA RESULTADO BAJO A W
BCF STATUS,RP0 ;BANCO0
MOVWF RESBAJO ;Y LO GUARDA EN UN REGISTRO
MOVWF PORTC
MOVF RESALTO,W
MOVWF PORTA
GOTO CONVERSION
END
Código:
 

Adjuntos

  • nodigona_139.gif
    nodigona_139.gif
    2 KB · Visitas: 148
Lo ensaye asi y funciona, lo unico que tiene es que cambia el orden, es la parte final del programa
todo lo anterior sigue igual, Saludos

GOTO $-1

MOVF ADRESH,W ;PASA RESULTADO ALTO A W
MOVWF RESALTO ;Y LO GUARDA EN UN REGISTRO
BSF STATUS,RP0 ;BANCO1
MOVF ADRESL,W ;PASA RESULTADO BAJO A W
BCF STATUS,RP0 ;BANCO0
MOVWF RESBAJO ;Y LO GUARDA EN UN REGISTRO
MOVWF PORTC
MOVF RESALTO,W
MOVWF PORTA
GOTO CONVERSION
END
Código:
 
Atrás
Arriba