Autor Tema: Error de compilacion con c18(duda)  (Leído 2352 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Maria33

  • PIC12
  • **
  • Mensajes: 54
Error de compilacion con c18(duda)
« en: 04 de Noviembre de 2008, 17:23:28 »
Hola, estoy trabajando con el stack TCPIP de microchip , con el compilador C18 y me sale el siguiente error:

MPLINK 4.1, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - Recursion not supported for functions with locals of "overlay" storage class: AnnounceIP
Errors    : 1

¿Alguien sabe de que podría ser?

Gracias

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Error de compilacion con C18 (ahora CCS tambien)
« Respuesta #1 en: 02 de Enero de 2010, 14:38:22 »
Hola, tengo un error de codigo compilado con C18 y no se si el problema sea mio o si es verdaderamente C18.

El error esta el intentar compilar:

Código: [Seleccionar]
temporal=2^0;
temporal queda con 2 de respuesta... :?

Estoy usando C18 y el microcontrolador PIC18F4550. (Este es mi primer proyecto con (C18)

Declaro temporal como char y nada, como int y tampoco.



Se me da por pasar el código a CCS y sorpresa que me sigue diciendo que 2^0=2... :?

Sera que este PIC no da con ^..Creo es imposible, seguro algo estoy haciendo mal pero no veo donde. Me pueden por favor decir ¿que esta mal en esto?

Gracias!



Este es el código de CCS, no hay mayor misterio, solo quiero calcular eso y no le da.

Código: [Seleccionar]
void main(){
char temporal=0;
set_tris_a(0b00000000);
set_tris_b(0b00000000);
set_tris_c(0b00000000);
set_tris_d(0b00000000);
set_tris_e(0b00000000);

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_16,249,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_ccp1(CCP_OFF);
setup_ccp2(CCP_OFF);
set_pwm1_duty(0);
set_pwm2_duty(0);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//enable_interrupts(INT_TIMER0);
//enable_interrupts(GLOBAL);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
// TODO: USER CODE!!


temporal=2^0;

while(1){
output_high(pin_c7);
delay_ms(1000);
output_low(pin_c7);
delay_ms(1000);
}
}



« Última modificación: 02 de Enero de 2010, 15:04:44 por PICmouse »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Error de compilacion con c18(duda)
« Respuesta #2 en: 02 de Enero de 2010, 15:08:58 »
Hola Picmouse

La instrucción x^y en lenguaje C es una or exclusiva por lo que

Código: [Seleccionar]
    0010
XOR 0000
________
    0010

No creo que esté mal.  :?:

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Error de compilacion con c18(duda)
« Respuesta #3 en: 02 de Enero de 2010, 15:19:47 »
migsantiago, muchas gracias por responderme...

Sabia que era una tontada y era pleno error mio.  Es que yo intentaba elevar a una potencia el 2 y me voy a colocar "^"  para hacerlo... No recordaba para nada que era XOR.

Muchas gracias nuevamente.


Dejo la solución al problema mio con el "^"

Yo intentaba eevar un numero X a la potencia  Y. En otros lenguajes se puede usar:

respuesta=X^Y

Para C se hace necesaria una libreria llamada math.h. Todos los compiladores la traen.

Entonces, en la cabecera del archivo agregar

 
Código: [Seleccionar]
#include <math.h>

Y cada vez que se quiera usar se escribe

Código: [Seleccionar]
respuesta=pow(X,Y);
X es el numero que se quiere elevar a la potencia Y


Saludos!

« Última modificación: 02 de Enero de 2010, 16:57:26 por PICmouse »