convertidor analogico digital con pic 12f675

hola amigos, he estado buscando sin exito lo siguiente: quiero hacer un termometro con el lm35 y el pic 12f675, no comprendo bien como utilizar el adc de este pic, y los pocos ejempleos que he visto en internet es c, pero yo quiero programarlo en assambler. si alguien tien algo por ahi en assambler que me pueda servir de ejemplo o pueda explicarme el proceso se lo agradecere mucho.
 
Tu problema es que no conoces los parametros que usa el ADC para funcionar, y es por eso que no comprendes los codigos en C.
Tu buscas algo ya hecho y eso no es bueno, sobretodo si vas a usar assembler.
Es sencillo. Debes de conocer el tiempo de muestreo (no voy a explicar el concepto) si vas a recibir el dato por interrupcion o poleo (tampoco voy a explicarlo), y cuantos bits y su alineacion (derecha o izquierda) del dato de salida del ADC.
Te recomiendo que leas un poco de teoria sobre el procedimiento del conversion analogo-digital, y si tienes problemas sobre la traduccion de los registros de configuracion, entonces ya podemos hablar en el mismo idioma. Es relativamente sencillo si es que ya has programado microcontroladores anteriormente en assembler.
 
que onda antiworldx gracias por contestar, no comprendo el codigo c, porque no conosco el lenguaje, y para hacerte sincero no me llama la atencion, tuve un curso de c++ en la escuela hace años mas no recuerdo ya y pues como decia no me gusta mucho, tampoco quiero copiar nada, pedi un ejemplo si alguien tiene sobre el uso de adc con ese pic en assambler para estudiarlo y darme una idea pero nunca con el objeto de copiar.
 
Busca aca en el foro hay un tutorial del 16f877 ahi esta lo del CAD, como esta en español sera facil entender, luego baja el datasheet del pic en cuestion y te sera mucho mas facil asi programarlo, en el datasheet se encuentra todo el proceso para usar el CAD , chauuuuuuuuuuuuuuuuu
 
Que tal; no le veo el problema que más da el lenguaje a usar si en la hoja de datos está todo incluyendo una fórmula:
ANSEL = Sirve para configurar la velocidad de conversión y seleccionar los pines que quieras que sean entradas análogas.
ADCON0 = Sirve para configurar el resultado, el voltaje de referencia, selección del canal a leer (de los configurados como entradas análogas), inicio de conversión (espera/en progreso) y el bit de estado on/off para el adc.
TRISIO = Registro de I/O.

Primero configura el ANSEL, luego el ADCON0, inicias la conversión con el bit Go/Done, esperas a que termine y luego de eso el dato estará en los registros ADRESL/ADRESH; para leer otro canal se modifica ADCON0.

- El ADC de los 12F y 16F se parecen, si aún no comprendes busca info relacionada al ADC de un PIC en general que los pasos son similares (el nombre y registros varían pero el proceso es similar)...

saludos.
 
A ver... al cliente lo que pida... un ejemplo configurando el ADC, aqui te va, esta es mi plantilla para el dsPIC.

Código:
;------------------------CONFIGURA ADC-----------
CLR ADPCFG ; Configure A/D port,
MOV #0xFFEF,W2
MOV W2,ADPCFG
MOV #0x0000,W2
MOV W2,ADCON1 ; Configure sample clock source
; and conversion trigger mode.
; Unsigned ENTERO format,
; Manual conversion trigger,
; Manual start of sampling,
; No operation in IDLE mode.
CLR ADCON2 ; Configure A/D voltage reference
MOV #0x0000,W2
MOV W2,ADCON2
CLR ADCON3 ; Configure A/D conversion clock
MOV #0x0100,W2
MOV W2,ADCON3
CLR ADCHS ; Configure input channels,
MOV #0x0004,W2
MOV W2,ADCHS
CLR ADCSSL ; No inputs are scanned.
BCLR IFS0,#ADIF ; Clear A/D conversion interrupt flag
; Configure A/D interrupt priority bits (ADIP<2:0>) here, if
; required. (default priority level is 4)
BCLR IPC2, #ADIP0 ; Setup ADC interrupt for
BSET IPC2, #ADIP1 ; desired priority level
BCLR IPC2, #ADIP2 ; (this example assigns level 2 priority)
BSET IEC0,#ADIE ; Enable A/D conversion interrupt
BSET ADCON1,#SSRC0
BSET ADCON1,#SSRC1
BSET ADCON1,#SSRC2
BSET ADCON3,#ADRC ; A/D internal RC clock
;BSET ADCON1,#ASAM
;BSET ADCON1,#ADON ; Turn on A/D
;BSET ADCON1,#SAMP ; Start sampling the input

Espero te sirva para lo que buscas.
 
disculpa me sale una falla en el registros:
ANSEL = 0X04; // Configure AN2 pin as analog
ANSELH = 0; // Configure other AN pins as digital I/O
C1ON_bit = 0; // Disable comparators
C2ON_bit = 0;
no se por que motivo es ???????
 
Atrás
Arriba