Char char char char char void
configura_ADC(void configura_ADC(void); ); //configuraci //configuración ón de funciones LEER_ADC(char LEER_ADC(char ENTRADA); CALCULAR_VOLTAJE(char CALCULAR_VOLTAJE(char DATO); MUESTRA_EN_PUERTO_C(char MUESTRA_EN_PUERTO_C( char ENTERO); MUESTRA_EN_PUERTO_D(char MUESTRA_EN_PUERTO_D( char DECIMAL); configura_puertos(void configura_puertos(void); ); //configuración de puertos
#include
#include #define F_CPU 8000000 int main( main(void void) ) { int ENTRADA=3; float RESULTADO=1; int VOLTAJE_LEIDO; int ENTERO; int DECIMAL; int DATO; configura_ADC(); while(1) while (1) { DATO=LEER_ADC( ENTRADA); DDRB=0XFF; PORTB=DATO; RESULTADO=(float RESULTADO=(float)(( )((float float)DATO*5.0)/256.0; )DATO*5.0)/256.0; // CALCULO DEL VOLTAJE DE ENTRADA por regla de tres RESULTADO =RESULTADO*10.0; VOLTAJE_LEIDO=(int VOLTAJE_LEIDO=(int)RESULTADO; )RESULTADO; //cast es la multipliación del resultado con el (int) para encasillar los datos ENTERO=(char ENTERO=(char)(VOLTAJE_LEIDO/10); )(VOLTAJE_LEIDO/10); DECIMAL=(char DECIMAL=(char)(VOLTAJE_LEIDO )(VOLTAJE_LEIDO %10); MUESTRA_EN_PUERTO_C( ENTERO); MUESTRA_EN_PUERTO_D( DECIMAL); } } void configura_puertos(void configura_puertos(void) ) { DDRC=0XFF; // como salida DDRD=0XFF; //como salida DDRA=0X00; // cono entrada PORTA=0x00; // alta impedancia } char configura_ADC(void configura_ADC(void) ) { ADMUX=0X63; // voltaje de referencia,corrimieto izq y entrada 3 ADCSRA=0XA4; // auto tigger,sin interrupción y divisor de frec de reloj de 16 SFIOR=SFIOR&(0X1F); // modo libre
}
char LEER_ADC(char ENTRADA) // fUNCIÓN LEE_ADC { ADMUX=ADMUX&0XE0; //ACTIVAMOS EL ADMUX DEL PIN 0 AL 4 ADMUX=ADMUX|ENTRADA; // ACTIVAMOS ENTRADA DEL ADMUX _delay_us(10); // ESPERAMOS UN TIEMPO PARA EVITAR RUIDO ADCSRA=ADCSRA|0X40; // PRENDEMOS BIT DE INICIO DE LA CONVERSIÓN while((ADCSRA&0X10==0)); // PRENDEMOS EL ADIF return ADCH; { ; } }
char MUESTRA_EN_PUERTO_C(char ENTERO) { char siete[16]={0X7E,0X30,0X6D,0X79,0X33,0X5B,0X5F,0X70,0X7F,0X73,0X77,0X1F,0X4E,0X3D,0X4 F,0X47}; PORTC=siete[(int)ENTERO]; return (1); } char MUESTRA_EN_PUERTO_D(char DECIMAL) { char siete[16]={0X7E,0X30,0X6D,0X79,0X33,0X5B,0X5F,0X70,0X7F,0X73,0X77,0X1F,0X4E,0X3D,0X4 F,0X47}; PORTD=siete[(int)DECIMAL]; return (1); }