muchas gracias arrivaellobo, realmente genial tu comentario y me da otra mirada a mi problema, mira te explico estoy haciendo un debug en proteus y tengo un gran problema, la mitad del código se ejecuta super bien, pero cuando llega a la parte del printf me hace la pregunta en virtual terminal y coloco los valores (1/0) pero el programa simplemente no hace nada! podrá ser porque esta parte requiere de una interrupción como me mencionas?, porque cuando separo lo del printf y lo ejecuto aparte, como puse arriba funciona bien, en un comienzo pensé que era problema de sintaxis pero ahora con tu comentario creo que es la razón.
#include "C:\Users\hp\Desktop\Medidor de velocidad de viento\Programacion\viento.h"
int address= 0x00;
int q;
int y;
char viento;
int respuesta;
int valor=0;
//char fin;
void main()
{
setup_adc(ADC_CLOCK_DIV_8);
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);
setup_vref(FALSE);
set_tris_a(0xff); // se configura el puerto A como entrada
set_tris_b(0x00); // se configura el puerto B como salida
do {
q=0;
address = 0x00;
for(q=0;q<47;q++)// 48 muestras cada un minuto
{
setup_adc(ADC_CLOCK_DIV_8);
setup_adc_ports(sAN0|VSS_VDD); // Lectura del canal 0
delay_ms(1);
valor=read_adc(); //Le asigno una variable al valor de la lectura del ADC
delay_ms(1); //para que se estabilice
write_eeprom(address,valor);
address++; //se incrementa el valor de la direccion de memoria
delay_ms(500);
}
//hasta aca funciona muy bien, luego muestra la pregunta sin problemas, pero al momento de responder y ejecutar el if no hace nada
printf("Desea ver los datos 1/0:\r");// 1 es un si, 0 en un no
respuesta=getch();
if(respuesta=='1')
{
y=0;
address = 0x00;
for(y=0;y<47;y++)//repetir 48 veces esta instruccion
{
read_eeprom(address); //lee los valores guardados en address
viento=read_eeprom(address); //aqui viento lo declare como char, estara bien?
printf("valor = %d\r", viento);// muestra en pantalla el valor de esa direccion
address++; //pasa al siguiente valor de la memoria eeprom
output_high(PIN_B3);// esta parte es solo para hacer mas didactico el proceso
delay_ms(750); //cuando se presione la opcion no
output_low(PIN_B3);
}
}
else if (respuesta=='0')
{
output_high(PIN_B4);// esta parte es solo para hacer mas didactico el proceso
delay_ms(750); //cuando se presione la opcion no
output_low(PIN_B4);
}
//printf("Desea salir del programa (s/n): \r")
//fin=getch();
}while(true);
}
aqui dejo los archivos, si por casualidad alguien quiere darme una mano, saludos!