Hola de nuevo, les comento que estoy usando lenguaje ensamblador, el mayor problema que tengo es con algunos registros que no entiendo su funcion, voy a poner mi idea y espero me corrijan y me digan en que estoy mal.
El ADCON1 sirve para configurar el puerto entre a/d si es 0 los bit"s 0 y 1 es analogico y si estan en 1 es digital, pero tengo una duda en las caracteristicas dice que tambien hay un valor que lo toma como vref+, creo que es una referencia de voltaje, si me pudieran explicar que es exactamente y como usarlo o que utilidad tiene. Luego esta el ADCON0 el bit 7 y 6 (ADCS1,ADCS0) creo que es el reloj que usara para la conversion tambien tengo muchas dudas de que hace esto si lo tengo que configurar o no es necesario, el bit 4 y 3 son los canales de conversion que puedo usar, el bit 2 segun yo con este bit activo el conversor cuando se pone a uno, y tengo entendido que este regresa a cero cuando termina la conversion, el bit 1 es el que me avisa cuando la conversion termino y este bit debo de reresarlo manualmente a 0 por software, el bit 0 entiendo que es para decir si operara el adc, si esta activo o desactivo aunque no entiendo muy bien, ojala que si estoy mal en alguna de estas especificaciones me corrijan.
Tengo la duda de donde se almacena el resultado del ADC, segun he visto en los programas, se alamacena en un registro llamado ADRESL que segun mi pic 16f877 esta en 0x9E, es correcto esto o estoy completamente perdido. Este resultado se puede manipular normalmente o se tiene que manejar de alguna forma en especial.
En parte de los ejemplos que he visto de microchip se acitva el INTCON, para esto es necesario, no entiendo ben esto.
Voy a poner mi idea de programa para capturar un dato, espero que ayuden en corregirlo, para poder obtener correctamente la conversion.
Tambien tengo una duda en el ADCON0,0 este bit lo tengo que desactivar cada vez que cambie entre canales del conversor, o siempre puede estar activo.
bsf status,rp0 ;entro al banco1
movlw 0x00
movwf adcon1 ;configuro las entradas analogicas
bcf status,rp0
bcf adcon0,4
bcf adcon0,3 ;selecciono el canal AN0
bsf adcon0,0 ;Activo el ADC
call espe ;Tengo entendido que debo de darle un tiempo
;de activacion, pero no se que tiempo debe ser.
;Si me explicaran esta parte.
bsf ADCON0,2 ;Inicio la conversion
conve btfss ADCON0,1 ;Si el bit 1 de ADCON0 esta en uno termino
goto conve ;la conversion si no lo sigue revisando.
bsf status,rp0 ;Entro al banco uno para sacar el resultado
movf adresl,0 ;de adresl y lo dejo en W
bcf status,rp0 ;Regreso al banco 0
;En teoria yo entiendo que asi funcionaria, pero no estoy muy seguro,
;si quisiera sacar otro dato tendria primero que borrar el ADCON0,1
bcf adcon0,1
Bueno basicamente es hasta donde se yo, si cometi algun error les agradeceria mucho que me explicaran donde fue, y como lo podria corregir, y si me explicaran donde debe de llevar tiempos y donde no se los agradeceria aun mas, ya que he leido que se le debe de dar tiempos a la conversion si no esta sera erronea. Muchas gracias adelantadas