Conversor A/D PIC 16f887 LM35

Buenas amigos, disculpen que mi primer post acá en el foro sea para preguntar algo que supongo que esta mas que rayado pero la verdad no logro entender! Bueno este semestre en la universidad acaban de cambiar el pensum y en la materia que veo ahora estan dando PIC's. Estoy trabajando con el 887 como indico en el titulo. Sin embargo la teoría va desfasada con la practica, es decir, teoricamente no hemos visto nada usando el conversor A/D pero ya en el laboratorio tenemos un diseño propuesto que abarca esta area.

El proyecto es un sensro de temperatura usando LM35 para controlar unos motores DC.

Por ahora lo que he estado haciendo es leer, leer y leer sobre el conversor y siempre leo lo mismo en todos lado... He revisado de este foro varios temas que tratan sobre el PIC, conversor y lm35 sin embargo no logro conseguir una conversion T-T.

El ejercicio que estoy haciendo en estos instantes es configurar la pata RA0 como entrada analogica, aca conecto el LM35 y vario la temperatura. En el codigo, configuro el conversor y lo que hago es guadar lo que esta en ADRESL y ADRESH a unas variables que cree para tal fin, bueno eso es lo que me dice la logica de todo lo que he leido jaja. sin embargo en el proteus corro la simiulacion pero mis variables nunca llegan a obtener un valor =( siempre estan en 0 a pesar de que varie "la temperatura"
Código:
	LIST p=16F887
	INCLUDE <P16F887.inc>

	CBLOCK 20H
	RESULTHI
	RESULTLO
	adc_cont
	ENDC

	banco0:	macro 
	bcf STATUS,RP0
	bcf STATUS,RP1
	endm
	
	banco1:	macro 
	bsf STATUS,RP0
	bcf STATUS,RP1
	endm

	banco2:	macro 
	bcf STATUS,RP0
	bsf STATUS,RP1
	endm

	banco3:	macro 
	bsf STATUS,RP0
	bsf STATUS,RP1
	endm

INICIO
banco0
	movlw b'01000001'
	movwf ADCON0
banco1
	movlw b'10000000'
	movwf ADCON1
	movlw b'11111111'
	movwf TRISA
banco3
	movlw b'00000001'
	movwf ANSEL
banco0
	movlw	.35	 ; Espera de aprox. 20uSeg
	movwf	adc_cont
	decfsz	adc_cont,1
	goto	$-1
	bsf ADCON0,GO ;Comienza la conversion
	btfsc ADCON0,GO ;pregunta si la conversion esta hecha
	GOTO $-1 ;No, pregunta de nuevo
banco0
	movlw ADRESH ;Lee los 2 bits superiores
	movwf RESULTHI ;guarda en la variable
banco1
	movlw ADRESL ;lee los 8 bits mas altos
	movwf RESULTLO ;guarda en variables
	goto INICIO
	end

Ese es el codigo que estoy trabajando en el assembler y aca el circuito en proteus.

alli en la imagen se aprecia el valor que tiene mi direccion 20h y 21h que son lase, como les comente, variables que estoy usando para guardar el valor de adresl y adresh (ese 1e salio cuando conecte una fuente variable a esa entrada, como no borro el puerto quedo alli permanente, supongo jaja)
Bueno el lm35 bota una relacion de 10m/grados asi que el voltaje maximo que obtengo es de 1.5 v


En fin por ahora lo que quiero es aprender a usar este conversor, una vez que lo domine ya todo me sera mas facil pues tengo ya una idea de lo que hacer.
Me gustaria me dijeran si estoy enfocando mal el conversor y bueno si es posible me den algunas ideas de como poder configurar un conversor a/d satisfactoriamente, si es posible! Muchas gracias
 
Gracias amigo! aunque realmente nunca he hecho eso por que tengo entendido que se trata de un reset, sin embargo lo acabo de colocar y sigo en la misma situacion
 
en el 16f887 en los fuses se puede poner NOMCLR y el pin funciona como una I/O digital. sino tienes que fijarte en la datasheet y colocar el capacitor y resistencias como lo indica
 
Atrás
Arriba