Sunteți pe pagina 1din 1

// PIC18F4550 Configuration Bit Settings

// #pragma config statements should precede project file includes.


// Use project enums instead of #define for ON and OFF.

/* Bibliotecas de funciones*/
#include <xc.h>
#define _XTAL_FREQ 20000000 // Usaremos rutinas de delay para el programa muestra.

/* Programa principal */
void main(void) // La función main en el uso con microcontroladores
{ // no acepta ni entrega argumentos.

TRISA = 1; // La terminal del puerto A que está asociada con AN0 es la terminal RA0, dentro
// del registro TRISA le asignamos el valor 1 para declararla como terminal de entrada.

TRISB = 0; // Puerto B configurado como salida.


TRISD = 0; // Puerto D configurado como salida.
LATB = 0; // Valor inicial del latch de salida del puerto B.
LATD = 0; // Valor inicial del latch de salida del puerto D.

ADCON1 = 0x0E; // Los bits 3 - 0 de éste registro se configuran para que sólo AN0 sea análoga y los
// otros 12 canales sean digitales, los bits 5 - 4 del mismo registro establecen el origen
// del voltaje de referencia y se selecciona interno, es decir, el mismo voltaje que
// alimenta al microcontrolador.

ADCON0 = 0;// Los bits 5 - 2 de éste registro nos permiten declarar cuál es el canal análogo que se
//activa y para nuestro caso, sólo se activa el canal 0.

ADCON2 = 0x9D; // En éste registro el bit 7 establece la justificación derecha, los bits 5 - 3
//determinan el tiempo de adquisición de 6TAD = 6(800ns) = 4.8µ que es superior a 2.45µs y
//los bits 2 - 0 establecen el reloj de conversión TAD = 16TOSC = 16 (1/FOSC)
// TAD=1/(FOSC?16)

ADCON0bits.ADON = 1; // Se enciende el módulo del convertidor analógico digital

__delay_us(5); // Se debe esperar al menos 4.8µs para la correcta adquisición.

while (1) // Siempre debemos saber qué está haciendo el microcontrolador.


{
ADCON0bits.GODONE = 1; // A partir de éste momento comienza la conversión

while(ADCON0bits.GODONE); // Spooling, pues espera hasta que el bit GODONE sea cero

LATB = ADRESH; // Parte alta de la conversión sale en puerto B.


LATD = ADRESL; // Parte baja de la conversión sale en puerto D.
}
return;
}