TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: donvalles en 16 de Agosto de 2014, 16:53:15
-
Estoy programando en CCS y tengo unas preguntas Básicas que en mi libro no encuentro la respuesta para cada pregunta.
1)Cuando voy a declarar una función o una variable local o global, el nómbre que le ingresamos hasta cuantos caracteres como máximo acepta el compilador?
2)Hasta cuantas veces puedo hacer que una función llame a otra función?
ejemplo:
char fn_02()
{
fn_03();
}
void fn_01()
{
fun_02();
}
main()
}
fn_01();
}
3) Si coloco sin darme cuenta dos puntos y comas que sucede? el compilador compila pero esto generaria que el resto del soft en algún momento funcione mal?
eje:
delay_ms(200);;
4)Si aparece un punto y coma suelto que sucede?
eje:
main()
{
delay_ms(200);
;
A=A+B;
}
-
Estimado,
1- Segun mis estudios en C/C++ del libro Deitel&Deitel, puedo recordar que una variable puede tener como maximo 32 caracteres.
2- Esta pregunta segun la entiendo, te puedo decir que:
Si preguntas cuantas veces podes llamar a una funcion dentro de un programa, te diria que no tiene limites.
Si te referis a cuantas veces podes anidar llamados, creo que eso depende del nivel de stack que tenga el micro.
3 - Segun donde se encuentre el ; sera asi:
*Al comienzo del programa te dara error. ''A #DEVICE required before this line''
*Luego del encabezado de programa te dara un error ''Expecting a declaration''
*si haces un multiple cierre con ; NO PASA NADA
ejemplo: variable++ ;;;;;;;;;;;;;;
4- Si aparece un punto y coma suelto te lo toma como si fuese el duplicado del ultimo ; que este antes del mismo dicho ; en tu codigo.
Todo esto lo probe con el CCS V5.025, no se si alguno de los masters pueden confirmar esto, es mi humilde aporte, que puede estar equivocado.
-
Que tal amigo, pues bueno, ya te han dado una ayudadita.
1)Las veces que puedes llamar a una funcion pues depende de lo que contenga la funcion, el optimizador puede realizar magia y ser practicamente infinito. Lo que no se permite en CCS es la recursividad, es decir, que una funcion se autollame a si mismo debido a los pocos niveles de pila que posee el micro.
2)La verdad no se cuanto sea el maximo de caracteres soportado para un identificador en CCS, aun asi lo intente y ... no tuve mucho exito :D. En realidad nunca deberian haber un identificador (si mal no recuerdo) arriba de los 31 caracteres, simplemente es ilegible.
uint8_t abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz;
Para las preguntas 3 y 4, no pasa absolutamente nada, en ambos casos se desprecia. Recuerda que en C es lo mismo que pongas:
delay_ms(200);;
ó
delay_ms(200);
;
-
Entendi muy bien, muchas gracias. O brigado meus parceiros.