Translate

sábado, 20 de diciembre de 2008

Accediendo a los Bits Individuales de los Registros

Hasta ahora hemos trabajado con los registros del PIC de manera directa, asignando un valor que determina el estado de todos los bits que están dentro del él, pero también podemos asignar valores individuales a todos los registros del PIC, por ejemplo, si en vez de hacer blink en todo el PORTB solo queremos hacerlo en uno de sus bits como por ejemplo en RB3, podríamos asignar el siguiente valor:
 
 PORTB=8;
 Delay10KTCYx(250);
 PORTB=0;
 Delay10KTCYx(250);
 
Seria valido, ya que solo asignamos un 1 a RB3 y posteriormente  asignamos 0 a todo el PORTB, pero sería mas sencillo si accediéramos al bit del registro directamente, lo cual es posible. Para acceder a los bits individuales de los registros tenemos que usar la siguiente sentencia:
 
 nombre_del_registrobits.nombre_del_bit 


De tal forma que para encender el bit RB3 de PORTB tendremos que asignar la siguiente sentencia: PORTBbits.RB3, 
recordemos que C18 es sensible a las mayúsculas, así que escribir portbbits.rb3 nos generará un error en la sintaxis. Esta forma de acceder a los bits es valida para todos los registros del PIC. pero siempre hay que especificar el nombre correcto del bit del registro, para ello podemos acceder a la librería del PIC por ejemplo a la librería p18f4520.h


Ahora hagamos un blink en el bit RB3 del PORTB con el siguiente programa

:


Y aqui la simulación del programa anterior:




El acceder a los bits individuales es práctico, ya que nos perrmite leer el estado de un solo bit, o cambiar el estado de un solo bit sin modificar el estado del registro.

4 comentarios:

  1. Solo queda agradecer la dedicación y el tiempo que te tomas para tener documentado el blog de manera clara y practica sobre todo los gráficos y las simulaciones llevan de la mano para una mejor comprensión de cada ejerció.
    Es muy bueno encontrar este tipo de información técnica en castellano ya que para los que nos liamos con el ingles nos abre el camino para adentrarnos en este apasionante mundo de los microcontroladores
    No me queda más que animarte a que sigas adelante con este excelente trabajo

    ResponderEliminar
  2. Hola, creo que hay un error...
    cuando indicas
    PORTB=4; // 0x4 = 0b00000100
    Significaría que estás poniendo en 1 el bit RB2 en vez de RB3...
    Muchas gracias por mantener este blog, es muy útil!

    ResponderEliminar
  3. Muy buena errata. Ya lo he editado

    ResponderEliminar
  4. excelente blog...
    nada que decir...

    ResponderEliminar