Hola, he puesto el nuevo codigo y me sale el siguiente error:
*** Error 12 "voltimentro.c" Line 66(43,44): Undefined identifier -- funcion_1
*** Error 51 "voltimentro.c" Line 73(4,8): A numeric expression must appear here
2 Errors, 1 Warnings.
creo que se refiere a la linea: """"void funcion_1(void)"""" que le falta un valor numerico pero no entiendo lo que quiere decir.
¿cómo se resuelve? Gracias
El codigo que he puesto es 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 funcion_1(void);
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();
/////////////////////////////////////////////////////////////////////
while (1)
{
// 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) funcion_1();
tecla:// visualizamos la presentacion 5 segundos
void funcion_1(void)
{
printf(lcd_putc, "\f" );//BORRAMOS LA PANTALLA
printf(lcd_putc, "\ftecla pulsada");
delay_ms(1000);//retardo 1 segundo
}
}
}
gracias por las respuestas. Ahora me sale error en el while (1). He puesto la funcion antes del void main.
Este el el codigo:
#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 funcion_1(void)
{
printf(lcd_putc, "\f" );//BORRAMOS LA PANTALLA
printf(lcd_putc, "\ftecla pulsada");
delay_ms(1000);//retardo 1 segundo
}
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();
/////////////////////////////////////////////////////////////////////
while (1)
{
// 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) funcion_1();
tecla:// visualizamos la presentacion 5 segundos
}
}
>>> Warning 203 "voltimentro.c" Line 51(1,1): Condition always TRUE
*** Error 51 "voltimentro.c" Line 86(1,2): A numeric expression must appear here
1 Errors, 1 Warnings.