Autor Tema: Error 51 Line 32(21,22): A numeric expression must appear here (CCS)  (Leído 13707 veces)

0 Usuarios y 3 Visitantes están viendo este tema.


Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Error 51 Line 32(21,22): A numeric expression must appear here (CCS)
« Respuesta #16 en: 07 de Agosto de 2010, 14:13:19 »
Aquí te faltan los paréntesis:

return (TeclaChar);

Los paréntesis del return siempre son opcionales.  ;-)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Error 51 Line 32(21,22): A numeric expression must appear here (CCS)
« Respuesta #17 en: 07 de Agosto de 2010, 14:18:04 »
Pues lo acabo de probar sin paréntesis y tienes razón Santiago.

Al leer la ayuda de CCS sobre return los he visto puesto y he pensado que eran obligatorios.

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Error 51 Line 32(21,22): A numeric expression must appear here (CCS)
« Respuesta #18 en: 07 de Agosto de 2010, 14:33:46 »
Hola kaki, acabo de hacer la misma prueba que hicieron Suki y Nocturno.  Igual que a ellos, a mi no me muestra ningún error en la línea que dices (CCS V4.106).  Creo que debe haber algo más en tu código que está causando el error y sin verlo completo va a ser muy difícil encontrarlo.

Saludos!

Desconectado ema

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1078
Re: Error 51 Line 32(21,22): A numeric expression must appear here (CCS)
« Respuesta #19 en: 07 de Agosto de 2010, 16:36:04 »
En CCS muchas veces sucede que los errores en alguna linea no son provocados por esa linea.... osea pueden ser causado por falta de memoria u otras cosas.

Te sugiero que pruebes en un proyecto nuevo solamente esta sección de tu codigo y va a funcionar correctamente, pero en el conjunto va a fallar.

Saludos

Desconectado kaki

  • PIC18
  • ****
  • Mensajes: 260
Re: Error 51 Line 32(21,22): A numeric expression must appear here (CCS)
« Respuesta #20 en: 07 de Agosto de 2010, 17:30:49 »
Código: [Seleccionar]
#include <18F2550.h>
#device adc=8
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(oscillator=20M)
//LCD
#define use_portb_lcd TRUE
#include <lcd.c>
//Libreria STRING
#include <string.h>

//Variables Globales
char Pass[4];

//Declaro Funciones
void configuracion ();
int medir ();
char LeerEEPROM ();
void EscribirEEPROM ();
    void TeclaLeida();
    void ComprobarPASS();
//Principal
void main() {
int i=0;
char tecla;
 
 configuracion ();
 
 while (TRUE){
lcd_gotoxy(1,1);
  printf(lcd_putc,"Ingrese Pass:"); 
tecla =  TeclaLeida ();
     if (tecla != 'A'){
         Pass[i] = Tecla;
         i++;
   }

  }
}
//Funciones/////////////////////////////////////////////////////////
char TeclaLeida (){
int valor;
char TeclaChar;
valor = medir();
     if (valor < 150){
        TeclaChar = '#';
     }else if (valor<154){
        TeclaChar = '9';
     }else if (valor<160){
        TeclaChar = '6';
     }else if (valor<165){
        TeclaChar = '3';
     }else if (valor<175){
        TeclaChar = '0';
     }else if (valor<180){
        TeclaChar = '8';
     }else if (valor<188){
        TeclaChar = '5';
     }else if (valor<195){
        TeclaChar = '2';
     }else if (valor<205){
        TeclaChar = '*';
     }else if (valor<211){
        TeclaChar = '7';
     }else if (valor<223){
        TeclaChar = '4';
     }else if (valor<233){
        TeclaChar = '1';
}else{
TeclaChar = 'A';
}
     return TeclaChar;
}

void ComprobarPASS(){
  if (strcmp(LeerEEPROM(),Pass)== 0 ){
    lcd_gotoxy(2,2);
lcd_putc("Bienvenido");
  }else{
    lcd_gotoxy(2,2);
    lcd_putc("EROR de Contraceña");
  }
}

char LeerEEPROM (){
char LAST_VOLUME=0;
return read_EEPROM (LAST_VOLUME);
}


int medir () {
int Medicion=0;
    Medicion = read_adc();
    delay_ms( 100 );
return Medicion; 
}     

void configuracion () {
 //ADC
 setup_adc_ports(AN0|VSS_VDD);
 setup_adc(ADC_CLOCK_DIV_32);
 set_adc_channel(0);
 //LCD
 lcd_init();
}


ahi esta el codigo completo

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Error 51 Line 32(21,22): A numeric expression must appear here (CCS)
« Respuesta #21 en: 07 de Agosto de 2010, 17:45:09 »
Hola kaki.  Cambia esta declaración de la función en Declaro Funciones:  void TeclaLeida(); por esta otra:  char TeclaLeida();  Como esta última es que creaste la función y asi mismo la debes declarar.

Saludos!

Desconectado kaki

  • PIC18
  • ****
  • Mensajes: 260
Re: Error 51 Line 32(21,22): A numeric expression must appear here (CCS)
« Respuesta #22 en: 07 de Agosto de 2010, 17:48:48 »
no loco que pelotudo que soy...... no sabes las veces que lei el codigo... es al pedo "Solo ves lo que uno quiere ver"..

   Gracias por todo che!!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Error 51 Line 32(21,22): A numeric expression must appear here (CCS)
« Respuesta #23 en: 07 de Agosto de 2010, 17:54:56 »
 :D Por eso era que no veíamos nada mal  :D
No contesto mensajes privados, las consultas en el foro

Desconectado kaki

  • PIC18
  • ****
  • Mensajes: 260
Re: Error 51 Line 32(21,22): A numeric expression must appear here (CCS)
« Respuesta #24 en: 07 de Agosto de 2010, 21:02:56 »
eso me paso por que modifique la funcion... y despues me se me paso de cambiar ese detalle q me volvio loco 2 dias!! no puedo creer que sea tan pavo!!

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Error 51 Line 32(21,22): A numeric expression must appear here (CCS)
« Respuesta #25 en: 08 de Agosto de 2010, 06:55:56 »
Pues yo estaba convencido de que si la declaración de función no coincide con la función desarrollada posteriormente el CSS mandaba un aviso de "Previous declaration not equal ..." o algo así.  :shock:

Edito: Acabo de hacer la prueba con mi CSS 4.093 ... ¡CSS nunca dejará de sorprenderme!

Declaro: int8 init_buffer(int16 maxlen, char *buffer);
Desarrollo: void init_buffer(int16 maxlen, char *buffer){ .... }
Utilizo en linea 999: init_buffer(LEN_BUFFER,rec_buffer);
Y CSS me dice que "Error 112 ... Line 999(1,1); Function used but not defined: ... init_buffer SCR=1230"

Pero si ...

Declaro: void init_buffer(int16 maxlen, char *buffer);
Desarrollo: char init_buffer(int16 maxlen, char *buffer){ .... return 'A'}
Utilizo en linea 999: x = init_buffer(LEN_BUFFER,rec_buffer);
Y CSS me dice que "Error 51 ... Line 999(41,42); A numeric expression must appear here"

O sea que cualquier error es posible menos el de que la declaración de la función y la función misma son distintas. Cualquier parecido con la realidad es mera coincidencia.

Para cortarse las venas y no sangrar.  :?
 
« Última modificación: 08 de Agosto de 2010, 07:36:02 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Error 51 Line 32(21,22): A numeric expression must appear here (CCS)
« Respuesta #26 en: 08 de Agosto de 2010, 12:35:10 »
Citar
O sea que cualquier error es posible menos el de que la declaración de la función y la función misma son distintas. Cualquier parecido con la realidad es mera coincidencia.

Para cortarse las venas y no sangrar.  :?
  :D :D :D

Pues si... Como quién dice, sería lo mismo y confundiría menos si el manejador de errores de CCS sacara la línea:

 "Error XX ... Line xxx(XX,XX); Usted se ha equivocado..."  :5]