Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
Con una sentencia if cuando el valor de la variable "lectura" corresponda al voltaje.¿Cómo prendo el punto decimal solo en los voltios?
switch (lectura)
{
case 1:
dato = (int16) voltaje;
output_high(pin_c7); aqui..enciende display 1
output_low(led_ancho_p);
output_low(led_pulsos);
output_high(led_voltaje);
break;
case 2:
dato =(int16) porcentaje;
output_low(led_voltaje);
output_low(led_pulsos);
output_high(led_ancho_p);
break;
case 3:
dato =(int16) frecuencia;
output_low(voltaje);
output_low(led_ancho_p);
output_high(led_pulsos);
}
separar_digitos(dato);
// Multiplexar los dosplays de 7 segmentos.
unidades = tabla_7segs[digitos[2]];
decenas = tabla_7segs[digitos[1]];
centenas = tabla_7segs[digitos[0]];
output_low(pin_cen);
output_low(pin_dec);
output_high(pin_uni);
output_c(unidades);
delay_ms(2);
output_low(pin_uni);
output_high(pin_dec);
output_low(pin_cen);
output_c(decenas);
//output_high(pin_c7); aqui enciende el 2 pero siempre queda encendido
delay_ms(2);
output_low(pin_uni);
output_low(pin_dec);
output_high(pin_cen);
output_c(centenas);
//output_high(pin_pd); // Punto decimal.
delay_ms(2);
Configura alguno de los timers para que desborde cada x mS.cómo hacer que muestre los valores de frecuencia y porcentaje más lento y preciso.
Como lo harías el programa, que estructura usarías? GraciasYo anterior mente el cambio de display solia acerlo con tmr0 pero tmr2 tambien vale y como esta funcionando para el pwm....
Si estan la conversion a/d y tmr2 o tmr0 por interrutcion. Deverian sobrarte pila de procesos para el resto de operaciones.. pulsadorrs, calculos y diversos procesos con menos prioridad..
Aconsejo poner interrupt y no int por ser int en una interruption propia de cambio de estado de un bit o byte... (Confunde un poco)
Un saludo
Mensaje automáticamente combinado:
Pero que bueno.... El mismo programa con mala estructura y peor echo...
(Ahora aver si no soy mal critico, o peor persona por una critica obvia)
#int_timer2
...
void timer2_isr(void)
{
if (input(PIN_A1)==0)
{
while(!input(pin_a1)){
if(++ lectura > 3) lectura = 1;
delay_us(50);
}
}
}
...
Gracias por comentar, como harías para que funcione mejor?No creo que sea ni el esquemático ni el PCB. Me apuesto un café a que es el código.
Código:#int_timer2 ... void timer2_isr(void) { if (input(PIN_A1)==0) { while(!input(pin_a1)){ if(++ lectura > 3) lectura = 1; delay_us(50); } } } ...
El pack completo; delays y whiles dentro de la rutina que atiende a la interrupción.
No se me ocurre que mas poner ahí para que funcione peor.
Lo raro es que funcione aunque sea mal.