// Ejemplo que muestra el funcionamiento de las entradas analogicas del puerto A // Fernando Pardo 2005 // Cada vez que RA4 pasa de 0 a 1 cambia el canal // MPLAB C18 #include #include #include #define CLKFREQ 6L #pragma romdata CONFIG const rom unsigned char _configuration[14] = //{0x00,0x0C,0x1F,0x1E,0x00,0x81,0x81,0x00,0x0F,0xC0,0x0F,0xE0,0x0F,0x40}; {0x10,0x0F,0x1F,0x1E,0x00,0x81,0x81,0x00,0x0F,0xC0,0x0F,0xE0,0x0F,0x40}; #pragma romdata char displ[]={ 0b00111111, 0b00000110, 0b01011011, 0b01001111, 0b01100110, 0b01101101, 0b01111101, 0b00000111, 0b01111111, 0b01101111, 0b01110111, 0b01111100, 0b00111001, 0b01011110, 0b01111001, 0b01110001 }; int Valor; char voy,i; char Canal,Muestra,EraUno; void main(void) { PORTB=0; TRISB=0; // Puerto B de Salida PORTA=0; TRISA=0xFF; voy=0; Canal=0; EraUno=0; OpenADC( ADC_FOSC_8 & ADC_RIGHT_JUST & ADC_0_TAD, ADC_CH0 & ADC_INT_OFF & ADC_VREFPLUS_VDD & ADC_VREFMINUS_VSS, 0b1011); while (1) { SetChanADC(Canal<<3); Delay10TCYx(60L*CLKFREQ/40+1); // 60.00 us. Espera un tiempo para la adquisicion (hold) ConvertADC(); while (BusyADC()); Valor=ReadADC(); //Valor=((int)ADRESH<<8)+ADRESL; //Valor=ADRESL; for (i=0;i