Autor Tema: Libreria para puertos CCS  (Leído 10522 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Libreria para puertos CCS
« en: 14 de Mayo de 2010, 16:50:37 »
El siguiente código esta hecho para poder manipular los registros PORTX y TRISX en CCS sin necesidad de utilizar ninguna función extra como set_tris_x() o input().

Código: C
  1. /*****************************************************
  2.                                 Autor: Luis Alberto Vargas Tijerino.
  3.                                
  4.                                 Nickname: Bigluis.
  5.                                
  6.                                 Fecha: 17/06/10
  7.                                
  8. *****************************************************/
  9.  
  10. #nolist
  11.  
  12. //**********************Puertos***********************
  13. #byte PORTA =   getenv("SFR:PORTA")
  14. #byte PORTB =   getenv("SFR:PORTB")
  15. #byte PORTC =   getenv("SFR:PORTC")
  16. #byte PORTD =   getenv("SFR:PORTD")
  17. #byte PORTE =   getenv("SFR:PORTE")
  18. //**********************Pines*************************
  19. #bit RA0 = PORTA.0
  20. #bit RA1 = PORTA.1
  21. #bit RA2 = PORTA.2
  22. #bit RA3 = PORTA.3
  23. #bit RA4 = PORTA.4
  24. #bit RA5 = PORTA.5
  25. #bit RA6 = PORTA.6
  26. #bit RB0 = PORTB.0
  27. #bit RB1 = PORTB.1
  28. #bit RB2 = PORTB.2
  29. #bit RB3 = PORTB.3
  30. #bit RB4 = PORTB.4
  31. #bit RB5 = PORTB.5
  32. #bit RB6 = PORTB.6
  33. #bit RB7 = PORTB.7
  34. #bit RC0 = PORTC.0
  35. #bit RC1 = PORTC.1
  36. #bit RC2 = PORTC.2
  37. #bit RC3 = PORTC.3
  38. #bit RC4 = PORTC.4
  39. #bit RC5 = PORTC.5
  40. #bit RC6 = PORTC.6
  41. #bit RC7 = PORTC.7
  42. #bit RD0 = PORTD.0
  43. #bit RD1 = PORTD.1
  44. #bit RD2 = PORTD.2
  45. #bit RD3 = PORTD.3
  46. #bit RD4 = PORTD.4
  47. #bit RD5 = PORTD.5
  48. #bit RD6 = PORTD.6
  49. #bit RD7 = PORTD.7
  50. #bit RE0 = PORTE.0
  51. #bit RE1 = PORTE.1
  52. #bit RE2 = PORTE.2
  53. #bit RE3 = PORTE.3
  54. //*********************Triestados*******************
  55. #byte TRISA=   getenv("SFR:TRISA")
  56. #byte TRISB=   getenv("SFR:TRISB")
  57. #byte TRISC=   getenv("SFR:TRISC")
  58. #byte TRISD=   getenv("SFR:TRISD")
  59. #byte TRISE=   getenv("SFR:TRISE")
  60.  
  61. #list

He visto que ya muchos han hecho algo similar en el foro, pero quise realizar esta librería para que todos la podamos utilizar simplemente mandando a llamarla.
« Última modificación: 18 de Junio de 2010, 01:39:15 por bigluis »
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Libreria para puertos CCS
« Respuesta #1 en: 14 de Mayo de 2010, 17:29:09 »
Una librería para usar los registros como en otros compiladores normalmente se hace.

Gracias por compartir Luis.

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Libreria para puertos CCS
« Respuesta #2 en: 19 de Julio de 2010, 22:44:55 »
La libreria anterior tenía el error de que si el SFR no existía entonces no era útil para el pic que estemos utilizando. Es decir la libreria anterior solo funciona para PIC que contengan todos los puertos. Es decir, si quisiera usar un PIC12 que solo tiene 1 puerto no era posible ya que este tiene un puerto de nombre distinto y no tiene los demas puertos, algo similar ocurre si deseabamos usarla con un pic que solo tiene 2 puertos.

A continuación muestro la solución a este problema.
Código: C++
  1. /*****************************************************
  2.         Autor: Luis Alberto Vargas Tijerino.
  3.                                
  4.         Nickname: Bigluis.
  5.                                
  6.         Fecha: 1/06/10
  7.                                
  8.         Version: 2.0
  9.                                
  10. *****************************************************/
  11.  
  12. #nolist
  13.  
  14. //**********************Puertos***********************
  15. #ifdef getenv("SFR:GPIO")
  16.         #byte GPIO =   getenv("SFR:GPIO")
  17.                 #bit    GP0 = GPIO.0
  18.                 #bit    GP1 = GPIO.1
  19.                 #bit    GP2 = GPIO.2
  20.                 #bit    GP3 = GPIO.3
  21.                 #bit    GP4 = GPIO.4
  22.                 #bit    GP5 = GPIO.5
  23.         #byte TRISIO =   getenv("SFR:TRISIO")
  24. #endif
  25.  
  26. #ifdef getenv("SFR:PORTA")
  27.         #byte PORTA=   getenv("SFR:PORTA")
  28.                 #bit RA0 = PORTA.0
  29.                 #bit RA1 = PORTA.1
  30.                 #bit RA2 = PORTA.2
  31.                 #bit RA3 = PORTA.3
  32.                 #bit RA4 = PORTA.4
  33.                 #bit RA5 = PORTA.5
  34.                 #bit RA6 = PORTA.6
  35.                 #bit RA7 = PORTA.7
  36.         #byte TRISA=   getenv("SFR:TRISA")
  37. #endif
  38.  
  39. #ifdef getenv("SFR:PORTB")
  40.         #byte PORTB=   getenv("SFR:PORTB")
  41.                 #bit RB0 = PORTB.0
  42.                 #bit RB1 = PORTB.1
  43.                 #bit RB2 = PORTB.2
  44.                 #bit RB3 = PORTB.3
  45.                 #bit RB4 = PORTB.4
  46.                 #bit RB5 = PORTB.5
  47.                 #bit RB6 = PORTB.6
  48.                 #bit RB7 = PORTB.7
  49.         #byte TRISB=   getenv("SFR:TRISB")
  50. #endif
  51.  
  52. #ifdef getenv("SFR:PORTC")
  53.         #byte PORTC=   getenv("SFR:PORTC")
  54.                 #bit RC0 = PORTC.0
  55.                 #bit RC1 = PORTC.1
  56.                 #bit RC2 = PORTC.2
  57.                 #bit RC3 = PORTC.3
  58.                 #bit RC4 = PORTC.4
  59.                 #bit RC5 = PORTC.5
  60.                 #bit RC6 = PORTC.6
  61.                 #bit RC7 = PORTC.7
  62.         #byte TRISC=   getenv("SFR:TRISC")
  63. #endif
  64.  
  65. #ifdef getenv("SFR:PORTD")
  66.         #byte PORTD=   getenv("SFR:PORTD")
  67.                 #bit RD0 = PORTD.0
  68.                 #bit RD1 = PORTD.1
  69.                 #bit RD2 = PORTD.2
  70.                 #bit RD3 = PORTD.3
  71.                 #bit RD4 = PORTD.4
  72.                 #bit RD5 = PORTD.5
  73.                 #bit RD6 = PORTD.6
  74.                 #bit RD7 = PORTD.7
  75.         #byte TRISD=   getenv("SFR:TRISD")
  76. #endif
  77.  
  78. #ifdef getenv("SFR:PORTB")
  79.         #byte PORTE=   getenv("SFR:PORTE")
  80.                 #bit RE0 = PORTE.0
  81.                 #bit RE1 = PORTE.1
  82.                 #bit RE2 = PORTE.2
  83.                 #bit RE3 = PORTE.3
  84.                 #bit RE4 = PORTE.4
  85.                 #bit RE5 = PORTE.5
  86.                 #bit RE6 = PORTE.6
  87.                 #bit RE7 = PORTE.7
  88.         #byte TRISE=   getenv("SFR:TRISE")
  89. #endif
  90.  
  91. #list
« Última modificación: 19 de Julio de 2010, 23:12:03 por bigluis »
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Libreria para puertos CCS
« Respuesta #3 en: 19 de Julio de 2010, 22:53:20 »
a continuacion adjunto el archivo de la libreria
« Última modificación: 19 de Julio de 2010, 23:12:54 por bigluis »
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Libreria para puertos CCS
« Respuesta #4 en: 15 de Octubre de 2010, 17:55:51 »
A continuacion muestro un ejemplo de como utilizar la libreria Puertos.c

Código: C
  1. #include <16F628A.h>
  2. #fuses NOWDT,INTRC,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
  3. #use delay(clock=4M)
  4.  
  5. #include <Puertos.c>
  6.  
  7. void main(){  
  8.         setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  9.         setup_timer_1(T1_DISABLED);
  10.         setup_timer_2(T2_DISABLED,0,1);
  11.         setup_comparator(NC_NC_NC_NC);
  12.         setup_vref(FALSE);
  13.         TRISA=0xFF;
  14.         TRISB=0xF0;
  15.         while(true){
  16.                 if(RA0){                        //Si presionas el boton conectado a RA0
  17.                         delay_ms(10);   //ESPERO SUELTA
  18.                         RB0=1;                  //RB0 sera igual a 1
  19.                 }
  20.                 else{                           //De lo contrario
  21.                         delay_ms(10);   //ESPERO SUELTA
  22.                         RB0=0;                  //RB0 sera igual a 0
  23.                 }
  24.         }
  25. }
« Última modificación: 15 de Octubre de 2010, 22:07:43 por bigluis »
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Libreria para puertos CCS
« Respuesta #5 en: 15 de Octubre de 2010, 19:31:38 »
Muy buena  :-/

Gracias por compartirla
El papel lo aguanta todo

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: Libreria para puertos CCS
« Respuesta #6 en: 16 de Octubre de 2010, 11:03:54 »
perdon por mi ignorancia pero donde tengo que colocar el archivo para poder incluirlo en los proyectos?

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Libreria para puertos CCS
« Respuesta #7 en: 16 de Octubre de 2010, 13:14:55 »
muy buen aporte! muchas gracias bigluis :-/
.

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Libreria para puertos CCS
« Respuesta #8 en: 16 de Octubre de 2010, 14:25:03 »
perdon por mi ignorancia pero donde tengo que colocar el archivo para poder incluirlo en los proyectos?

Todas las librerias se almacenan en la carpeta de Drivers de CCS, esta esta en la direccion C:\Program Files (x86)\PICC\Drivers.

La otra opcion es que la almacenes en la misma carpeta de tu proyecto, pero tendrias que copiarla para cada proyecto, lo cual no es recomendable.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado Corleone

  • PIC10
  • *
  • Mensajes: 4
Re: Libreria para puertos CCS
« Respuesta #9 en: 22 de Octubre de 2010, 11:23:06 »
Estimado BigLuis,
Por sobre todo, muchas gracias por compartir esta libreria ya que resulta muy util. Hechos los agradecimientos, la consulta. Al intentar usarla, el compilador muestra> Error 43 "C:\Program Files\PICC\drivers\Puertos.c" Line 15(14,15): Expecting a declaration"

La llamada en el programa principal

#include <16F628A.h>         //pic a utilizar         
#fuses INTRC_IO,WDT,NOPROTECT,NOMCLR,BROWNOUT      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#use fast_IO(B)
#include <Puertos.c>   

El archivo esta copiado en la carpeta Drivers de PICC. Alguna idea del porque de este error?
Desde ya muchas Gracias!

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Libreria para puertos CCS
« Respuesta #10 en: 22 de Octubre de 2010, 14:05:14 »
Estimado BigLuis,
Por sobre todo, muchas gracias por compartir esta libreria ya que resulta muy util. Hechos los agradecimientos, la consulta. Al intentar usarla, el compilador muestra> Error 43 "C:\Program Files\PICC\drivers\Puertos.c" Line 15(14,15): Expecting a declaration"

La llamada en el programa principal

#include <16F628A.h>         //pic a utilizar         
#fuses INTRC_IO,WDT,NOPROTECT,NOMCLR,BROWNOUT      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#use fast_IO(B)
#include <Puertos.c>   

El archivo esta copiado en la carpeta Drivers de PICC. Alguna idea del porque de este error?
Desde ya muchas Gracias!

  Hola, proba escribiendo. Ademas, si no estoy equivocado, tenés que respetar mayúsculas y minúsculas al llamar a algún archivo.

Código: C
  1. #include "Puertos.c"
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Libreria para puertos CCS
« Respuesta #11 en: 22 de Octubre de 2010, 16:35:43 »
Estimado BigLuis,
Por sobre todo, muchas gracias por compartir esta libreria ya que resulta muy util. Hechos los agradecimientos, la consulta. Al intentar usarla, el compilador muestra> Error 43 "C:\Program Files\PICC\drivers\Puertos.c" Line 15(14,15): Expecting a declaration"

La llamada en el programa principal

#include <16F628A.h>         //pic a utilizar         
#fuses INTRC_IO,WDT,NOPROTECT,NOMCLR,BROWNOUT      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#use fast_IO(B)
#include <Puertos.c>   

El archivo esta copiado en la carpeta Drivers de PICC. Alguna idea del porque de este error?
Desde ya muchas Gracias!

:oops: Hace poco encontré un pequeño error en la Librería.

En la línea 78 aparece lo siguiente:
Código: [Seleccionar]
#ifdef getenv("SFR:PORTB")
Y debes cambiarlo por
Código: [Seleccionar]
#ifdef getenv("SFR:PORTE")
Es decir, cometí el error de escribir 2 veces la misma pregunta, la primera vez es para el PORTB esa está correcta, la segunda vez se supone que debería preguntar por el PORTE y cometí el error de preguntarpor el PORTB.

 :-/ Suerte.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado mauro_z18

  • PIC10
  • *
  • Mensajes: 10
Re: Libreria para puertos CCS
« Respuesta #12 en: 04 de Noviembre de 2010, 13:06:40 »
Estimado BigLuis,
Por sobre todo, muchas gracias por compartir esta libreria ya que resulta muy util. Hechos los agradecimientos, la consulta. Al intentar usarla, el compilador muestra> Error 43 "C:\Program Files\PICC\drivers\Puertos.c" Line 15(14,15): Expecting a declaration"

La llamada en el programa principal

#include <16F628A.h>         //pic a utilizar         
#fuses INTRC_IO,WDT,NOPROTECT,NOMCLR,BROWNOUT      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#use fast_IO(B)
#include <Puertos.c>   

El archivo esta copiado en la carpeta Drivers de PICC. Alguna idea del porque de este error?
Desde ya muchas Gracias!

:oops: Hace poco encontré un pequeño error en la Librería.

En la línea 78 aparece lo siguiente:
Código: [Seleccionar]
#ifdef getenv("SFR:PORTB")
Y debes cambiarlo por
Código: [Seleccionar]
#ifdef getenv("SFR:PORTE")
Es decir, cometí el error de escribir 2 veces la misma pregunta, la primera vez es para el PORTB esa está correcta, la segunda vez se supone que debería preguntar por el PORTE y cometí el error de preguntarpor el PORTB.

 :-/ Suerte.

Hola...muchas gracias por compartir esta libreria...sin embargo la acabo de descargar y no logro que compile. Te comento que presente el error que Corleone escribio antes.
Intente cambiando los corchetes por comillas y no funciono; tb  corregi lo del potb y el porte; pero ese no es el problema el error esta antes.
Te agradecia mucho si pudieras ayudarme.


Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Libreria para puertos CCS
« Respuesta #13 en: 04 de Noviembre de 2010, 14:27:05 »
Prueba con la siguiente libreria, y asegurate de no estar usando la primera libreria, ya que el error que me comentan se debe producir en la primera libreria que postee, pero no en la segunda.

Tambien prueba a quitar la instruccion
Código: [Seleccionar]
#use fast_IO(B)
Posiblemente este generando algun conflicto, aunque no lo creo.

 :? ¿Cuando le das doble clic a la línea de error en la consola de errores a donde te envia el compilador?

¿Te envia a la linea 15 de la libreria?
« Última modificación: 04 de Noviembre de 2010, 14:31:30 por bigluis »
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado mauro_z18

  • PIC10
  • *
  • Mensajes: 10
Re: Libreria para puertos CCS
« Respuesta #14 en: 04 de Noviembre de 2010, 17:48:01 »
Prueba con la siguiente libreria, y asegurate de no estar usando la primera libreria, ya que el error que me comentan se debe producir en la primera libreria que postee, pero no en la segunda.

Tambien prueba a quitar la instruccion
Código: [Seleccionar]
#use fast_IO(B)
Posiblemente este generando algun conflicto, aunque no lo creo.

 :? ¿Cuando le das doble clic a la línea de error en la consola de errores a donde te envia el compilador?

¿Te envia a la linea 15 de la libreria?

Si, es en la linea 15:15 el error,  y al compilar me tira "Expecting a declaration"...No entiendo por q sera.  :shock:

la linea es:
#ifdef getenv("SFR:GPIO").  Si puedes aydarme desde ya muchas gracias...sino seguire trabajando a ver si descubro q es.


 

anything