Autor Tema: Para que sirve #if defined(__PCM__) & #elif defined(__PCH__)  (Leído 232 veces)

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

Desconectado Manchester91

  • PIC10
  • *
  • Mensajes: 2
Para que sirve #if defined(__PCM__) & #elif defined(__PCH__)
« en: 05 de Junio de 2021, 23:40:46 »
Hola usuarios!!!!

Les mando saludos desde Chih, Mex, Ing. en Electronica y por diferentes circunstancias debi tomar otros enfoques diferentes a la programacion pero ahora estoy intentando refrescar conocimientos e inicie desde 0....


Le traigo una pequeña duda basica.....

Veia en este foro este tema

http://www.todopic.com.ar/foros/index.php?topic=34116.0



Pero no se si vayan a responder porque es muy viejo asi que les dejo mi duda....


Tengo este programa basico para encender y apagar un LED, estoy usando CCS sin embargo no recuerdo que hace esta primera parte del codigo

#if defined(__PCM__)
#include <16F876.h>
#fuses XT, NOWDT, NOPUT, NOPROTECT, NOLVP, NOBROWNOUT, NODEBUG

#elif defined(__PCH__)
#include <18F4455.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#endif


#use delay(clock=4000000)

void main()
{
   set_tris_b(0x00);
   output_b(0x00);
 
  do
   {delay_ms(1000);
   output_b(0x01);
   delay_ms(1000);
   output_b(0x00);
   }
   while(true);
}

   
 Entiendo que esa parte hará que el compilador seleccione los fuses segun el microcontrolador (16F876 o 18F4550) mi pregunta es como es que define cual estoy usando, osea como sabra el compilador cual micro programare uno o el otro...


Osea como defino un pic o el otro para que el compilador lo identifique...



Gracias por sus respuestas!!
   

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8121
Re:Para que sirve #if defined(__PCM__) & #elif defined(__PCH__)
« Respuesta #1 en: 06 de Junio de 2021, 09:49:13 »
A pesar que le decimos el "compilador" CCS, en realidad son varios por dentro.

http://www.ccsinfo.com/content.php?page=compilers

Cada familia de PIC se realiza con algun compilador en especifico, por ejemplo ahi en el link podes ver que PCM es para los PIC10/12/14/16 con 14-bit de instrucciones y PCH para los PIC18. Es como en Microchip se separan en XC8 para los PICs de 8 bits, y el XC16 para los PICs de 16 bits.

Entonces un mismo codigo es valido para esos dos PICs, si compilas para el PIC16F876, el if del PCH no aparece para el compilador. Y el compilador veria unicamente los Fuses y el include del 16F876

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 513
Re:Para que sirve #if defined(__PCM__) & #elif defined(__PCH__)
« Respuesta #2 en: 06 de Junio de 2021, 12:37:39 »
....
 Entiendo que esa parte hará que el compilador seleccione los fuses segun el microcontrolador (16F876 o 18F4550) mi pregunta es como es que define cual estoy usando, osea como sabra el compilador cual micro programare uno o el otro...

Osea como defino un pic o el otro para que el compilador lo identifique...

El compilador propiamente dicho de CCS es el CCSC.exe . 
El IDE lo llama vía línea de comando de este tipo:
Para PIC16:  Ccsc.exe +FM ... nombrearchivo.c
Para PIC18:  Ccsc.exe +FH ...  nombrearchivo.c
Para PIC12:  Ccsc.exe +FB ...  nombrearchivo.c

Con los switch FM,FH,FB   se elige la familia a compilar e internamente se declara el símbolo __PCM__ , __PCH__ y __PCB__ para que los uses en condicionales.


Desconectado Manchester91

  • PIC10
  • *
  • Mensajes: 2
Re:Para que sirve #if defined(__PCM__) & #elif defined(__PCH__)
« Respuesta #3 en: 12 de Junio de 2021, 05:52:38 »

Muchas gracias por la respuesta, ya quedo mas claro..




Entonces un mismo codigo es valido para esos dos PICs, si compilas para el PIC16F876, el if del PCH no aparece para el compilador. Y el compilador veria unicamente los Fuses y el include del 16F876


Solo me quedaria preguntar... y Corrijeme porfa si estoy mal, la manera de seleccionar cual complilador usar es en este menu?? (Si es correcto es la unica forma de hacerlo?)




Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 408
    • Mcu Tronics
Re:Para que sirve #if defined(__PCM__) & #elif defined(__PCH__)
« Respuesta #4 en: 23 de Julio de 2021, 02:06:21 »
Yo en lo particular, jamas he tocado eso, ya que al incluir el .h del PIC a trabajar, y al compilar, el IDE cambia en automatico eso y coloca la "version" a usar.

Saludos
Nunca se deja de aprender


 

anything