Autor Tema: Definir un bit de un registro  (Leído 1942 veces)

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

Desconectado tecnotron2012

  • PIC10
  • *
  • Mensajes: 10
Definir un bit de un registro
« 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

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Definir un bit de un registro
« Respuesta #1 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!
« Última modificación: 23 de Octubre de 2013, 17:36:52 por BrunoF »
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado tecnotron2012

  • PIC10
  • *
  • Mensajes: 10
Re: Definir un bit de un registro
« Respuesta #2 en: 23 de Octubre de 2013, 17:32:14 »
Muchas gracias!!!

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Definir un bit de un registro
« Respuesta #3 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.

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Definir un bit de un registro
« Respuesta #4 en: 23 de Octubre de 2013, 17:33:43 »
Hola, el modo define funciona igual que en assembler, pero no lleva ;

Saludos.

Desconectado tecnotron2012

  • PIC10
  • *
  • Mensajes: 10
Re: Definir un bit de un registro
« Respuesta #5 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

Desconectado tecnotron2012

  • PIC10
  • *
  • Mensajes: 10
Re: Definir un bit de un registro
« Respuesta #6 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)