Hola a todo el foro,
Estoy haciendo un voltimetro y funciona pero con gotos, lo que quiero hacer es cuando pulse una tecla salga un mensaje en el lcd, yo lo consigo utilizando un goto, pero yo no quiero utilizar un goto quiero utilizar una funcion. Osea que una vez haya salido el mensaje vuelva a donde se habia quedado el programa.
yo la funcion que conozco es del tipo:
void funcion_1(void)
{
instrucciones
}
pero no se hacer que la funcion se cumpla despues de una condicion
creo que la linea a modificar seria: if (BIT_TEST(PORTA,2)==1) void funcion_1(void);
Gracias a toda la ayuda.
El programa seria el siguiente:
#include <16F876.h>
#device adc=10
#FUSES XT,NOWDT
#FUSES
#use delay(clock=4000000)
#define use_portb_lcd TRUE
#include <LCD.C>
#include <math.h>
#BYTE TRISA = 0x85 //estos dos valores son exclusivos del PORT A
#BYTE PORTA = 0x05 //estos dos valores son exclusivos del PORT A
void main() {
int16 q;
float p;
//setup_adc_ports(AN0); //Canal 0 analógico
bit_set (TRISA , 2); // A2 como entrada
setup_adc_ports(RA0_RA1_RA3_ANALOG); //RA0 y RA1 analógica, RA2 digital RA2 DIGI
setup_adc(ADC_CLOCK_INTERNAL); //Fuente de reloj RC
lcd_init();
/////////////////////////////////////////////////////////////////////
inicio:
// CONSULTAMOS EL VALOR DEL ADC
set_adc_channel(0); //Habilitación canal0
delay_us(20);
q = read_adc(); //Lectura canal0
// APLICAMOS CALCULOS
p=5.0*q/1024.0; // pasamos la intensidad a potencia. P=V*I
// 220.0 (poniendo .0 se visualiza tambien los decimales)
// utilizar en los numeros .0
// VISUALIZAMOS EN EL LCD
printf(lcd_putc, "\fV = %4ld voltios", p);
delay_ms(50); //valor original 100 ms
if (BIT_TEST(PORTA,2)==1) void funcion_1(void);
goto inicio;
void funcion_1(void)
{
printf(lcd_putc, "\f" );//BORRAMOS LA PANTALLA
printf(lcd_putc, "\ftecla pulsada");
delay_ms(1000);//retardo 1 segundo
}
goto inicio;
}