Autor Tema: ¿Bandera? ¿flag?  (Leído 6155 veces)

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

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
¿Bandera? ¿flag?
« en: 13 de Febrero de 2008, 20:31:28 »
Hola a todos.

Hace bastante tiempo que tengo una duda grande

1. ¿Qué es una bandera o flag?

2. ¿Cómo se utiliza?

He estado buscando información por toda la red y me confundieron más. Uno me habla de una cosa, otro de otra. Por mucho tiempo he tratado de entenderlo y no logro hacerlo, y hoy me a surgido de nuevo la duda porque tengo que migrar un programa de un pic a otro y aprovecho para hacerlo más eficiente, y de aquí es que quiero utilizar con más eficiencia los timer. Luego recordé este hilo de PalitroqueZ, pero está en C. Lo he pasado a ASM (como explico más adelante en el hilo de pali) pero no logro entender bien esta bandera, ya que el lo utiliza de una manera y en la web no he encontrado nada parecido.

Gracias por adelantado  :-) :-) :-/ :-/

Editado Título por RedPic: Cambiado falg por flag.
« Última modificación: 14 de Febrero de 2008, 03:17:28 por un Moderador »
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: ¿Bandera? ¿falg?
« Respuesta #1 en: 13 de Febrero de 2008, 21:41:05 »
Una bandera o flag es un bit de un registro que nos indica del estado de un evento o situación.

Bandera o flag (bandera en ingles) es el bit de cero "Z" del registro de control (escribo de memoria) o el bit de interrupción (que tenemos que borrar al salir de la interrupción).

Nosotros podemos definir nuestras propias banderas para controlar el flujo del programa.

Por ejemplo podemos definir una variable para ver si tenemos caracteres en el buffer de recepción de un programa rs232 (cuando tenemos caracteres lo ponemos a "1" y cuando no hay lo ponemos a cero).

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Meta

  • Visitante
Re: ¿Bandera? ¿falg?
« Respuesta #2 en: 13 de Febrero de 2008, 21:43:53 »
Los flags o banderas son registros de estado. Los Z, DC, RP0 y C. Por lo que se, cambia depende del estado de una acción y te vale para ejecutar otra acción. Por ejemplo: Algo parecido a un If else. Si Z es distinto a 0, salta a goto, si es = a 0, sigue con la instrucción. Cosas así. En un libro lo tengo detallado y la verdad es mucho para escribirlo aquí.

EDIT: Voy a poner literalmente lo que dice el libro, solo un cacho.

El registro de estado o Status indica el estado de la última operación aritmética o lógica realizada, la causa de reset y los bit de selección de banco para la memoria de datos. A los bit de registro de estado se les suele denominar flags o banderas. Al conectar la alimentación su contenido STATUS = b'00011xxx'

Z (Zero). Flag de cero. Se activa  a 1 cuando el resultado de una operación aritmética o lógica es 0.
- Z = 0. El resultado de la última operación ha sido distinto de cero.
- Z = 1. El resultado de la última operación ha sido cero.

Hay más como DC, C, /PD, TO, RP0, al menos en el 16F84A

Ojalá te ayude algo, menos mal que me compré el libro que me ayuda a empezar.
« Última modificación: 13 de Febrero de 2008, 21:51:46 por Meta »

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: ¿Bandera? ¿falg?
« Respuesta #3 en: 13 de Febrero de 2008, 22:10:16 »
Por ejemplo podemos definir una variable para ver si tenemos caracteres en el buffer de recepción de un programa rs232 (cuando tenemos caracteres lo ponemos a "1" y cuando no hay lo ponemos a cero).

¿A qué le llamás variable? ¿A una pocición de memoria RAM que nosotro querramos, por ejemplo 0x25? Esta es justamente la parte que no entiendo o que se me hace lio.

Yo por ejemplo a este programa que tengo que migrar utilizé una pocición de la RAM para hacerme mi propio registro al que llamé "estado" (no confundir con el registro STATUS") como tiene un ancho de 8 bit, utilizo por ejemplo el bit 0 que me indique si no realizé dicha tarea, bit0 = 1 hacer la tarea pendiente bit0 = 0 la tarea está echa. ¿esto es una bandera?
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: ¿Bandera? ¿falg?
« Respuesta #4 en: 13 de Febrero de 2008, 22:11:40 »
Efectivamente eso es una bandera.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: ¿Bandera? ¿flag?
« Respuesta #5 en: 14 de Febrero de 2008, 20:11:50 »
añadiendo, se puede decir que una bandera es la unidad de información que ocupa menos espacio y sirve en diversos procesos (programas, uControladores, en la vida cotidiana, etc)



La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: ¿Bandera? ¿flag?
« Respuesta #6 en: 14 de Febrero de 2008, 22:08:28 »
Que tonto. Mucho tiempo tratar de entender eso cuando ya lo estaba utilizando  :oops: :oops: :oops:

Muchas gracias a jfh900; Meta; PalitroqueZ y A redpic por corregir mi falta de ortografía en el título.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: ¿Bandera? ¿flag?
« Respuesta #7 en: 15 de Febrero de 2008, 03:25:13 »
Eso nos pasa a muchos en muchos temas, ideamos un algoritmo para ordenar una matriz (arreglo) y después descubrimos que hace treinta años que se publicó y que se llama QuickSort y que está en Wikipedia con todo lujo de detalles.  :D :D :D

Lo de las faltas en el título solo las corrijo cuando puede ser normal que se use la palabra a corregir en el buscador, así facilito a los demás amigos el que puedan encontrar lo que buscan.  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: ¿Bandera? ¿flag?
« Respuesta #8 en: 15 de Febrero de 2008, 15:58:39 »
cuando empecé a estudiar la programación de los uC pic, me conseguí con la frase Flag, el traductor dice que es bandera, para el que está empezando y no tiene nociones de programación, esto no significa nada, ¿una bandera? ¿para que?, solo tiene significado dentro del CONTEXTO donde se utiliza, ese es uno de los problemas cuando se está leyendo un documento en un idioma no nativo.


La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: ¿Bandera? ¿flag?
« Respuesta #9 en: 15 de Febrero de 2008, 17:24:43 »
A mi sin embargo, incluso al principio (allá por el paleolítico), me fue muy fácil el concepto de bandera (flag), tal y como se usa en programación como indicador de que algo ha ocurrido o algo tiene que ocurrir, ya que provengo del mundo náutico y en éste es muy habitual el usar banderas para indicar exactamente eso, eventos que ocurren o deben ocurrir, mensajes, etc. Al contrario o al margen del concepto diario de bandera que se usa para representar visualmente un conjunto, como una nación o grupo o club.  :mrgreen:

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Meta

  • Visitante
Re: ¿Bandera? ¿flag?
« Respuesta #10 en: 15 de Febrero de 2008, 20:22:37 »
Bueno, pues es un buen ejemplo para entender esta parte de la programación. No entiendo de aviones pero...

Código: ASM
  1. ¿Bandera alta? Sí.
  2. EL avión no sale.  <So bruto>
  3.  
  4. ¿Bandera Alta? No.
  5. El avión ya puede empezar a despegar.
« Última modificación: 15 de Febrero de 2008, 23:54:18 por MGLSOFT »

Meta

  • Visitante
Re: ¿Bandera? ¿flag?
« Respuesta #11 en: 16 de Febrero de 2008, 07:08:10 »

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: ¿Bandera? ¿flag?
« Respuesta #12 en: 16 de Febrero de 2008, 14:37:18 »
Muy buen artículo META.

Justamente, la función de la bandera (flag en ingles), es la de mostrarnos sobre un cambio, por ejemplo la grabación de la EEPROM terminada o si creamos nosotros una bandera, nos indica un trabajo pendiente.

Cuando yo decía en mi primer post:

He estado buscando información por toda la red y me confundieron más. Uno me habla de una cosa, otro de otra.

Es porque justamente, uno me hablaba de las banderas que ya tiene el PIC implementado en los registro y otros me hablaban de variables. Y me confundían más. Y son las dos cosas.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.


 

anything