Compiling C:\Users\zolution\Desktop\code4\code3 on 13-abr-24 at 20:12
*** Error 12 "C:\Users\zolution\Desktop\code4\funci.h" Line 6(26,29): Undefined identifier BC1
*** Error 12 "C:\Users\zolution\Desktop\code4\funci.h" Line 7(26,30): Undefined identifier BDIR
*** Error 12 "C:\Users\zolution\Desktop\code4\funci.h" Line 12(27,30): Undefined identifier BC1
*** Error 12 "C:\Users\zolution\Desktop\code4\funci.h" Line 13(27,31): Undefined identifier BDIR
*** Error 12 "C:\Users\zolution\Desktop\code4\funci.h" Line 18(26,29): Undefined identifier BC1
*** Error 12 "C:\Users\zolution\Desktop\code4\funci.h" Line 19(27,31): Undefined identifier BDIR
*** Error 12 "C:\Users\zolution\Desktop\code4\funci.h" Line 25(15,20): Undefined identifier PORTB
*** Error 12 "C:\Users\zolution\Desktop\code4\funci.h" Line 28(15,20): Undefined identifier PORTB
8 Errors, 0 Warnings.
Build Failed.
Line 12 in line 37Trabajo de una... Gracias.
Es porque ponés #include<funci.h> con las funciones antes de la definición de BC1,BDIR y PORTBRealice el cambio y ahora me sale otro error.
Compiling C:\Users\zolution\Desktop\code4\code3 on 14-abr-24 at 11:47
*** Error 12 "C:\Users\zolution\Desktop\code4\funci.h" Line 42(21,27): Undefined identifier tone_1
1 Errors, 0 Warnings.
Build Failed.
Lo mismo que antes. La definición de tone_1 está en arreglos.c , que está después de funci.hGracias Eduardo, perdoname aun no comprendo, nunca he realizado librerias (estoy tratando de implementar la primera), ustedes que tienen tanto conocimiento, sugieren hacerlas para optimizar el codigo.
Hay compiladores que hacen 2 o mas pasadas. Pero CCS hace una sola (como la mayoría), por lo que las variables y funciones deben estar declaradas previamente a la línea que las usa.
Imagina que compilaras "a mano", cuando llegas a la línea de value=tone_1(x) ; tenés que escribir en la dirección de memoria donde esta value (que ya fue asignada al comienzo de la funcion) el contenido de tone_1(x), y tone_1 no se sabe donde está pues no fue asignado todavía y tampoco se sabe donde va estar pues falta asignar variables.Muchas gracias por la explicacion....
Con las funciones es la misma historia, por eso se declaran los prototipos al principio, así el compilador puede generar el código correspondiente a los argumentos de llamada y retorno y solo le queda por actualizar la dirección hacia donde debe saltar, que se hace al final.
Imagina que compilaras "a mano", cuando llegas a la línea de value=tone_1(x) ; tenés que escribir en la dirección de memoria donde esta value (que ya fue asignada al comienzo de la funcion) el contenido de tone_1(x), y tone_1 no se sabe donde está pues no fue asignado todavía y tampoco se sabe donde va estar pues falta asignar variables.Muchas gracias por la explicacion....
Con las funciones es la misma historia, por eso se declaran los prototipos al principio, así el compilador puede generar el código correspondiente a los argumentos de llamada y retorno y solo le queda por actualizar la dirección hacia donde debe saltar, que se hace al final.
for (x = 0; x<544; ){
for(int8 conta=0 ; conta<16 ; conta++){
value=(tone_1[x++]);
write_register(conta,value);
....................
....................
}
....................
....................
}
Una forma:Gracias Eduardo2, Dios te bendiga.Código: [Seleccionar]for (x = 0; x<544; ){
for(int8 conta=0 ; conta<16 ; conta++){
value=(tone_1[x++]);
write_register(conta,value);
....................
....................
}
....................
....................
}