TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: tecnotron2012 en 23 de Octubre de 2013, 17:09:28

Título: Definir un bit de un registro
Publicado por: tecnotron2012 en 23 de Octubre de 2013, 17:09:28
Hola tengo la siguiente porción de código en Assembler Osea a cada bit del registro Modos le asigno un identificador. Y quiero hacer lo mismo en CCS pero no sé la sintaxis. Alguien me puede ayuda???

20   #DEFINE Ingreso    Modos,0 ;
21   #DEFINE Encendido    Modos,1 ;
22   #DEFINE Pausa     Modos,2 ;

quiero hacer por ejemplo lo siguiente

while(Ingreso==1){
---
}
Mientras el bit 0 del registro Modos vale uno, ejecuta tal orden etc. Se entiende? Gracias
Título: Re: Definir un bit de un registro
Publicado por: BrunoF en 23 de Octubre de 2013, 17:30:41
Hola,

struct{
         int Ingreso:1;
         int Encendido:1;
         int Pausa:1;
      }Modos;
...

while(Modos.Ingreso==1){
...
}

Saludos!
Título: Re: Definir un bit de un registro
Publicado por: tecnotron2012 en 23 de Octubre de 2013, 17:32:14
Muchas gracias!!!
Título: Re: Definir un bit de un registro
Publicado por: MerLiNz en 23 de Octubre de 2013, 17:33:01
creo que en CCS puedes poner .B0 o algo asi, sin embargo no te recomiendo para nada trabajar por bits, es mucho mas lento ya que hay que despejar ese bit en concreto y luego compararlo.
Título: Re: Definir un bit de un registro
Publicado por: Diego E. en 23 de Octubre de 2013, 17:33:43
Hola, el modo define funciona igual que en assembler, pero no lleva ;

Saludos.
Título: Re: Definir un bit de un registro
Publicado por: tecnotron2012 en 23 de Octubre de 2013, 18:23:09
Pero tendría que definir el registro Modos? no entiendo . Lo que quiero hacer es usar flags por ejemplo en el modo ingreso
el registro Modos debe valer 00000001 entonces para saber si me encuentro en este modo consulto el bit 0 que le asigné por identificador "Ingreso". Esto mismo no me sale en C
Título: Re: Definir un bit de un registro
Publicado por: tecnotron2012 en 23 de Octubre de 2013, 18:36:56
Bueno gracias a todos, encontré la solución en la ayuda de CCS
 

#BIT
Syntax:
 #bit  id = x.y
Elements: id is a valid C identifier, x is a constant or a C variable, y is a constant 0-7.

 
 
Purpose:
 A new C variable (one bit) is created and is placed in memory at byte x and bit y.  This is useful to gain access in C directly to a bit in the processors special function register map.  It may also be used to easily access a bit of a standard C variable.

 
 
Examples:
int result;

#bit result_odd = result.0

...

if (result_odd)