#include <16f877a.h>
#device adc=10
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=8000000)
#byte PORTB = 0x06 //Definimos PORTB con la dirección del registro PORTB.
void main()
{
int16 x=0;
int16 y=0;
int16 z=0;
////Configuración///
setup_adc_ports(AN0_AN1_AN3);
setup_adc(ADC_CLOCK_INTERNAL);
//setup_pp(PMP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
// unsigned int16 tension=0;
//Variable para almacenar el valor de tensión leido por el ADC
//unsigned int8 valor; //Variable temporal.
set_tris_b(0x00); //0b0000000// Configuramos el puerto B como salida.
while(1){
set_adc_channel(0); //elegimos el canal que vamos a leer.
delay_us(10); // esperamos 10uS necesarios para el ADC
x=read_adc(); //Leemos la tensión en el canal que elegimos.
delay_us(10);
set_adc_channel(1);
delay_us(10);
y=read_adc();
delay_us(10);
set_adc_channel(3);
delay_us(10);
z=read_adc();
delay_ms(1); //Esperamos un poco.
//valor=tension/127;
//Calculamos a cuantos LEDs encendidos corresponde la tensión leida.
if (((x<y) && (x<z)))
{
PORTB=0b10000000;
delay_ms(100);
}
else if (((y<x) && (y<z)))
{
PORTB=0b01000000;
delay_ms(100);
}
else if(((z<x) && (z<y)))
{
PORTB=0b00100000;
delay_ms(100);
}
}
}