principiante en PIC 16F .. diferencia en la sintaxis del programa cuando se usan compiladores diferentes

9

Como mencioné, acabo de comenzar a programar pic16f877a. Ahora puedo trabajar con pantallas de 7 segmentos. Actualmente estoy usando el compilador ccs. Nada de malo con eso. Pero prefiero ser un compilador programador independiente. Así que simultáneamente quiero trabajar en otros compiladores como IAR o Hitechc. ¿Quiero saber si la "declaración de programa en compiladores" que no sea ccs será diferente? Por favor guíame cómo abordar esto. Daría la bienvenida a todas las formas de sugerencias. Gracias de antemano.

    
pregunta V V Rao

5 respuestas

9

¡Qué bueno que quieras ser un compilador independiente! Desafortunadamente, los compiladores hitech y CCS para los PIC de gama baja utilizan muchas declaraciones de preprocesador específicas del compilador, rutinas de acceso de pin específicas del compilador y, en el caso de rutinas específicas del compilador de CCS, para funciones de núcleo de acceso como SPI, I2C, ADC, etc. / p>

No es posible escribir su código para que no sea específico del compilador sin un montón de preprocesador #define, #ifdef, #ifndef y así sucesivamente para obtener acceso a partes específicas de lo que ofrece cada compilador. Esto haría que tu código sea ilegible.

Lo mejor a lo que podría aspirar es ser independiente del IDE y usar algo como eclipse, por lo que al menos está usando el mismo IDE. Esto resultará en la pérdida de asistentes de CCS para configurar las funciones principales, pero le dará una mayor flexibilidad en el uso del mismo IDE.

Otra cosa a considerar es que tanto hitech como CCS no tienen (al menos en el pasado) un verdadero enlazador del compilador de c y requieren que uses "#include myfile.c" que personalmente desprecio ... pero eso es otra historia.

No he comentado sobre el compilador IAR ya que solo he usado CCS y hitech. Ambos funcionaron bien, pero nunca estuve realmente contento con ninguno de los dos, después de migrar desde la plataforma Motorola (ahora a escala limitada) y usar el compilador de metroworks, que era más avanzado en ese momento. El compilador IAR se ve bien, pero nunca lo he usado.

    
respondido por el smashtastic
7

Si estuviera usando piezas PIC18, recomendaría el compilador C18 de Microchip. Se ajusta mucho más estrechamente a ANSI C que al compilador CCS. No estoy seguro del compilador de alta tecnología ya que no lo he usado. Como se dijo anteriormente, si realmente necesita hacer un código independiente del compilador, necesitará usar muchas directivas de precompilación. Recomiendo echar un vistazo a algunos de los programas de ejemplo de Microchip que admiten varios compiladores para tener una idea de cómo se hace.

    
respondido por el mjh2007
3

Lamentablemente, encontrará que es muy difícil encontrar un programa independiente del compilador para un microcontrolador. Hay varios problemas, aquí hay solo dos:

  1. Diferencias en periféricos, nombres SFR, etc. (especialmente sobre otros procesadores, pero incluso con compiladores de la misma familia), y;

  2. Las características no estándar en algunos compiladores, como establecer bits individualmente o diferentes estructuras para invocar el código de ensamblaje.

La serie 16F es muy limitada en términos de arquitectura y no está realmente diseñada para admitir un compilador de C. Es por eso que no hay GCC para ello.

    
respondido por el Thomas O
3

Eche un vistazo a SDCC . Es compatible con muchos de los dispositivos PIC16 y PIC18. GCC es compatible con PIC24 y dsPIC.

    
respondido por el Toby Jaffey
2

Los aspectos más probables de ser dependientes del compilador son:

  • utilizando bits únicos (especialmente en puertos IO)
  • tamaños de enteros y caracteres con signo o sin signo
  • punteros divertidos: C18 diferencia los punteros rom y ram :(
  • fusibles de configuración
  • ocupado esperando

Mi forma preferida de manejar esto es escribir macros para estos aspectos, y hacer que el compilador seleccione la macro correcta basada en macros predefinidas específicas del compilador. Hice una biblioteca RFM70 y aplicaciones de ejemplo de esta manera que se ejecutan en PIC14 (HiTechC), PIC16 (C18) y ARM (GCC).

(actualizar) Mi biblioteca RFM70 ahora está completa. Es compatible con C en PIC 16F (compilador Hitech), C y C ++ en LPC11114 (Cortex) y LPC2148 (ARM7TDMI) (compilador GCC) y Arduino (ATMega128, compilador GCC). Esto se genera (incluida la documentación de doxygen) a partir de la misma fuente realizando un procesamiento previo en un script de Python. El soporte de Jal está en desarrollo, tal vez lo seguirá ProtonBasic. enlace

    
respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas