Autor Tema: XC8 - ¿asignación de puertos a variables como en CCS?  (Leído 9373 veces)

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

Desconectado LucasBols

  • PIC16
  • ***
  • Mensajes: 129
    • Desarrollos y Servicios Digitales
XC8 - ¿asignación de puertos a variables como en CCS?
« en: 21 de Marzo de 2014, 18:16:42 »
hola, buenas tardes,

¿existe alguna forma de implementar en XC8 la característica de asignación de puertos a variables como en CCS?

en CCS:
Código: [Seleccionar]
#byte puerto_D = 0x08

puerto_d = 0b01010011;

¿como se puede hacer en XC8?

muchas gracias
Un experto es alguien que te explica algo sencillo de forma confusa de tal manera que te hace pensar que la confusión sea culpa tuya.

DSD http://www.dysd.com.ar/

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #1 en: 21 de Marzo de 2014, 18:29:23 »
Hacelo en CCS, compilalo y luego lees el archivo .LST
Es muy probable que desde allí saques como hacerlo... ;-)
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado LucasBols

  • PIC16
  • ***
  • Mensajes: 129
    • Desarrollos y Servicios Digitales
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #2 en: 21 de Marzo de 2014, 18:36:41 »
gracias MGLSOFT, pero el tema es que me pasé a C para no tener que lidiar con ASM, soy muy vago no?  :lol: :D

con mi paso a la velocidad del rayo por CSS me quedó picando ese tema, porque ahorraría mucho código, en lugar de hacer un switch para seleccionar un puerto usaría un for

muchas gracias
Un experto es alguien que te explica algo sencillo de forma confusa de tal manera que te hace pensar que la confusión sea culpa tuya.

DSD http://www.dysd.com.ar/

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #3 en: 21 de Marzo de 2014, 18:59:44 »
No dije que lo hagas en assembler, sino que lo aprendas a hacer a través de la lectura del assembler generado...
Luego lo codificas para XC8.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #4 en: 21 de Marzo de 2014, 19:11:34 »
hola, buenas tardes,

¿existe alguna forma de implementar en XC8 la característica de asignación de puertos a variables como en CCS?

en CCS:
Código: [Seleccionar]
#byte puerto_D = 0x08

puerto_d = 0b01010011;

¿como se puede hacer en XC8?

muchas gracias

  No entiendo para que quieres hacer eso, en XC8 puedes modificar el valor de un puerto escribiendo algo así...

Código: C
  1. PORTC = 0b11110000;

  Si lo que quieres es asignarle a una variable una dirección específica (que puede ser o no la dirección de un puerto) creo que se hace como en HiTech

Código: C
  1. unsigned char variable @ 0x08;
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #5 en: 21 de Marzo de 2014, 21:55:08 »
En el XC8 tambien se puede acceder a cualquier registro del PIC sin necesidad de definir nada extra, tambien puede acceder a los bits de la siguiente forma:

Código: C
  1. PORTCbits.RC0 = 1;     // Pone 1 en el pin RC0

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado LucasBols

  • PIC16
  • ***
  • Mensajes: 129
    • Desarrollos y Servicios Digitales
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #6 en: 24 de Marzo de 2014, 19:28:32 »
hola, disculpen por la demora,

MGLSOFT, si, tendría que ver como lo implementa CCS, esun tema interesante, pero antes voy a probar la sugerencia de GeSHi, si no me funciona, tendré que escarbar en el .lst

GeSHi, tengo una lista de puertos sin órden que los tengo que modificar simultáneamente, y en lugar de hacer portxbits.rxx= x; portxbits.rxx= x; ... quería hacerlo con un for
en CCS se puede asignar puertos a un array y con for modificarlos, voy a probar tu sugerencia con un array

perdón, modifico la respuesta, GeSHi, lo que estaba buscando es asignar los bits de un puerto a una var, es decir, la dirección de un bit, supongo que con

Código: [Seleccionar]
unsigned char variable @ 0x08+1;
sander, lo de arriba  :D esto si que me cataloga como vago  :D

muchas gracias por las respuestas
« Última modificación: 24 de Marzo de 2014, 19:31:32 por LucasBols »
Un experto es alguien que te explica algo sencillo de forma confusa de tal manera que te hace pensar que la confusión sea culpa tuya.

DSD http://www.dysd.com.ar/

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #7 en: 24 de Marzo de 2014, 19:32:02 »
hola, disculpen por la demora,

MGLSOFT, si, tendría que ver como lo implementa CCS, esun tema interesante, pero antes voy a probar la sugerencia de GeSHi, si no me funciona, tendré que escarbar en el .lst

GeSHi, tengo una lista de puertos sin órden que los tengo que modificar simultáneamente, y en lugar de hacer portxbits.rxx= x; portxbits.rxx= x; ... quería hacerlo con un for
en CCS se puede asignar puertos a un array y con for modificarlos, voy a probar tu sugerencia con un array

sander, lo de arriba  :D esto si que me cataloga como vago  :D

muchas gracias por las respuestas

  GeSHi no es ningún usuario  :D :D :D es una opción en el editor de mensajes del foro, para colgar código.  :D :D :D
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #8 en: 24 de Marzo de 2014, 19:32:14 »
hola, disculpen por la demora,

MGLSOFT, si, tendría que ver como lo implementa CCS, esun tema interesante, pero antes voy a probar la sugerencia de GeSHi, si no me funciona, tendré que escarbar en el .lst

GeSHi, tengo una lista de puertos sin órden que los tengo que modificar simultáneamente, y en lugar de hacer portxbits.rxx= x; portxbits.rxx= x; ... quería hacerlo con un for
en CCS se puede asignar puertos a un array y con for modificarlos, voy a probar tu sugerencia con un array

sander, lo de arriba  :D esto si que me cataloga como vago  :D

muchas gracias por las respuestas

creo que GeSHi es realmente AngelGris  :D :D
"Nada es imposible, no si puedes imaginarlo"

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #9 en: 24 de Marzo de 2014, 19:33:38 »
hola, disculpen por la demora,

MGLSOFT, si, tendría que ver como lo implementa CCS, esun tema interesante, pero antes voy a probar la sugerencia de GeSHi, si no me funciona, tendré que escarbar en el .lst

GeSHi, tengo una lista de puertos sin órden que los tengo que modificar simultáneamente, y en lugar de hacer portxbits.rxx= x; portxbits.rxx= x; ... quería hacerlo con un for
en CCS se puede asignar puertos a un array y con for modificarlos, voy a probar tu sugerencia con un array

sander, lo de arriba  :D esto si que me cataloga como vago  :D

muchas gracias por las respuestas

  GeSHi no es ningún usuario  :D :D :D es una opción en el editor de mensajes del foro, para colgar código.  :D :D :D


jeje, me ganaste en publicar AngelGris. 

"Nada es imposible, no si puedes imaginarlo"

Desconectado LucasBols

  • PIC16
  • ***
  • Mensajes: 129
    • Desarrollos y Servicios Digitales
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #10 en: 24 de Marzo de 2014, 19:36:42 »
hola, disculpen por la demora,

MGLSOFT, si, tendría que ver como lo implementa CCS, esun tema interesante, pero antes voy a probar la sugerencia de GeSHi, si no me funciona, tendré que escarbar en el .lst

GeSHi, tengo una lista de puertos sin órden que los tengo que modificar simultáneamente, y en lugar de hacer portxbits.rxx= x; portxbits.rxx= x; ... quería hacerlo con un for
en CCS se puede asignar puertos a un array y con for modificarlos, voy a probar tu sugerencia con un array

sander, lo de arriba  :D esto si que me cataloga como vago  :D

muchas gracias por las respuestas

  GeSHi no es ningún usuario  :D :D :D es una opción en el editor de mensajes del foro, para colgar código.  :D :D :D

ahhh bueno!! hoy me tendría que haber tomado el feriado jajajajaja

disculpame AngelGris (¿es por Dolina?  :shock:)

muchas gracias
Un experto es alguien que te explica algo sencillo de forma confusa de tal manera que te hace pensar que la confusión sea culpa tuya.

DSD http://www.dysd.com.ar/

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #11 en: 24 de Marzo de 2014, 19:39:37 »
es muy simple:

unsigned char *puertos[3];

puertos[0]=0x08;
puertos[1]=0x10;
puertos[2]=0x11;

*puertos[ x ]=numero a asignar;

y yasta

Desconectado LucasBols

  • PIC16
  • ***
  • Mensajes: 129
    • Desarrollos y Servicios Digitales
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #12 en: 24 de Marzo de 2014, 19:44:55 »
hola MerLiNz, si, lo de la asignación del puerto completo a una var va bien, pero lo que necesito es a un bit de ese puerto
sería algo como
Código: [Seleccionar]
bit variable[x] @ 0x08+1; pero al XC8 no le gustan los arrays de bits
Un experto es alguien que te explica algo sencillo de forma confusa de tal manera que te hace pensar que la confusión sea culpa tuya.

DSD http://www.dysd.com.ar/

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #13 en: 24 de Marzo de 2014, 19:53:48 »


ahhh bueno!! hoy me tendría que haber tomado el feriado jajajajaja

disculpame AngelGris (¿es por Dolina?  :shock:)

muchas gracias

  Sep, hace mucho tiempo que he leído ese libro. Y hace mucho tiempo que no lo escucho.... Recuerdo que cuando lo escuchaba, el programa comenzaba bastante puntual pero en un tiempo el primer bloque comenzaba alrededor de 00:30Hs y me cansó esa situación.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: XC8 - ¿asignación de puertos a variables como en CCS?
« Respuesta #14 en: 24 de Marzo de 2014, 20:39:46 »
los bits no se pueden asignar en variables en ningun compilador, se que el CCS hace algo parecido pero luego lo que hace es lo siguiente:

si vas a poner el bit en 1 de PORTD:
PORTD|=1<<x;

en caso de quererlo ponerlo a 0:
PORTD&=~(1<<x);

Por asi decirtelo los bits no se pueden separar, el pic gestiona la RAM de byte en byte (8bits), en caso de querer manejar un simple bit es necesario de hacer una operacion de lectura de la variable actual, modificar el contenido (ponerlo en 1 o 0) y escribirlo en el puerto.

Por ejemplo si has trabajado o algun dia vas a trabajar con un pic de 16bits veras que las variables de 8bits hace lo mismo y lo ideal es utilizar minimo 16bits porque sino se complica la operacion ya que tiene que trabajar con variables de un valor inferior a lo minimo.

Con el codigo que te he puesto arriba tienes de sobra para hacer lo que quieres en for o donde sea y probablemente sea mas optimizado que el CCS.



 

anything