Autor Tema: Directivas del CCS  (Leído 5936 veces)

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

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3216
Directivas del CCS
« en: 13 de Marzo de 2008, 16:59:22 »
Hola, yo tengo la costumbre de hacer cosas de este tipo.

Código: [Seleccionar]

# define PORTA 0x05

#bit lcd_en = PORTA.4


Pero si cambio por ejemplo de la familia 16f a la 18f, tengo que cambiar la direccion del puerto, pues son distintas. Me gustaria saber si existe alguna forma mejor de hacerlo.

Por otro lado me gustaria saber como hacer para poder compilar con un pic u otro, por ejemplo entre un pic12f509, y un pic12f629. Pues estos tienen diferentes fuses, y yo lo que hago es poner las dos configuraciones, y en funcion de usar uno u otro pongo una de ellas como comentario.

Saludos y gracias.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Directivas del CCS
« Respuesta #1 en: 13 de Marzo de 2008, 17:08:21 »
Una cosa que puedes hacer para saber que estas con 16F o con 18F es detectar el compilador que estas usando ya que son distintos para ambas familias.

Por ejemplo :

Código: C#
  1. #ifdef __pcb__
  2. #define PORTA 0x05
  3. #endif
  4.  
  5. #ifdef __pch__
  6. #define PORTA 0xF80
  7. #endif
« Última modificación: 13 de Marzo de 2008, 17:15:03 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Directivas del CCS
« Respuesta #2 en: 13 de Marzo de 2008, 17:10:32 »
Hola aunque no soy usuario de CCS, en C normalmente se hace asi
Código: [Seleccionar]
#define PIC16F
#undef PIC18F

#ifdef PIC16F
 #define PORTA 0x05
 #bit lcd_en = PORTA.4
#endif

#ifdef PIC18F
 # define PORTB 0x03
 #bit lcd_en = PORTB.7
#endif

Para seleccionar uno u otro solo undefinis uno y definis el otro, tambien lo podes extender a gusto.


Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Directivas del CCS
« Respuesta #3 en: 13 de Marzo de 2008, 17:13:53 »
Richi:
Esta bien lo que pones, pero esta mal la direccion del puerto en la serie 18F...
Puedes confundir a alguien. :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Directivas del CCS
« Respuesta #4 en: 13 de Marzo de 2008, 17:22:58 »
Citar
Esta bien lo que pones, pero esta mal la direccion del puerto en la serie 18F...
Puedes confundir a alguien.
Mucha razon tenes, sorry ...

Igual cuando estaba escribiendo no lei la respuesta de RedPIC, y esa es la manera mas elegante y recomendable de hacerlo.
Saludos !

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Directivas del CCS
« Respuesta #5 en: 13 de Marzo de 2008, 17:28:45 »
Independiente de esto te aconsejo Micro_Pepe que le des un vistazo a los ejemplos de CCS que tienes en directorio examples del PICC ya que la inmensa mayoría de ellos hacen uso de este tipo de directivas para que se puedan probar con distintos micros y/o familias de micros.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Directivas del CCS
« Respuesta #6 en: 13 de Marzo de 2008, 19:15:22 »
No es mejor usar #BYTE que #DEFINE para cojer registros del pic?? Solo pregunto  :mrgreen: Porque #DEFINE yo lo uso para cosas que no tienen nada que ver con el pic, ocea, como configuraciones para cosas que segun yo quiero o algo asi.

Un saludo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Directivas del CCS
« Respuesta #7 en: 14 de Marzo de 2008, 03:01:47 »
Richi, la diferencia entre usar #ifdef PIC16F o #ifdef __pcb__ es que el segundo caso ya está implementado en el compilador, y tienes un desplegable donde eliges el tipo de micro que utilizas. En el primer caso tendrás que definirlo dentro del propio programa.

No es mejor usar #BYTE que #DEFINE para cojer registros del pic?? Solo pregunto  :mrgreen: Porque #DEFINE yo lo uso para cosas que no tienen nada que ver con el pic, ocea, como configuraciones para cosas que segun yo quiero o algo asi.

Un saludo.
Es lo mismo, Jeremy.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Directivas del CCS
« Respuesta #8 en: 14 de Marzo de 2008, 11:33:04 »
Richi, la diferencia entre usar #ifdef PIC16F o #ifdef __pcb__ es que el segundo caso ya está implementado en el compilador, y tienes un desplegable donde eliges el tipo de micro que utilizas. En el primer caso tendrás que definirlo dentro del propio programa.
Nocturno conozco la diferencia, como comente en mi post como desconzco CCS y todas sus defines predefinidos propuse esa solucion ANSI C, y cuando estaba escribiendo el post no habia leido el tuyo, si lo hubiese hecho no escribia nada porque lo que propones es la mejor solucion.
Saludos !

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re:Directivas del CCS
« Respuesta #9 en: 25 de Septiembre de 2018, 21:40:18 »
 ssaludos
seria correcto lo siguiente?   
#ifdef tarjeta1 
      set_tris_a(0);
      set_tris_b(3);
      set_tris_e(8);
      set_tris_d(159);
      Set_tris_c(188);
   #endif
   #ifdef tarjeta2 
      set_tris_a(7);
      set_tris_b(3);
      set_tris_e(8);
      set_tris_d(200);
      Set_tris_c(128);
   #endif

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Directivas del CCS
« Respuesta #10 en: 25 de Septiembre de 2018, 22:05:20 »
Si es correcto.

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re:Directivas del CCS
« Respuesta #11 en: 26 de Septiembre de 2018, 10:31:16 »
que util resulta estas directivas de preprocesador  :-/ :-/, ahora tengo dos programas en uno solo y eso significa menos trabajo, debido a que ambos programas comparten muchas caracteristicas
« Última modificación: 26 de Septiembre de 2018, 19:28:10 por micronet3 »