Un registro es un lugar dentro del PIC que puede ser escrito, leído o ambas cosas. Piensa en un registro como si fuese un trozo de papel donde tu puedes ver la información o escribirla.
[pic]
La primera cosa que notarás es que está dividido en dos – Banco 0 y Banco 1. El Banco 1 es utilizado para controlar las propias operaciones del PIC, por ejemplo para decirle al PIC cuales bits delPuerto A son entradas y cuales son salidas. El Banco 0 se utiliza para manipular los datos. Un ejemplo es el siguiente: Digamos que queremos poner un bit del puerto A a nivel alto. Lo primero que necesitamos hacer es ir al Banco 1 para poner ese bit o pin en particular en el puerto A como salida. Después volvemos al Banco 0 y enviamos un 1 lógico a ese pin.
Los registros que vamos a usar mas comunesen el Banco 1 son STATUS, TRISA y TRISB. El primero permite volver al Banco 0, TRISA nos permite establecer los pines que serán entradas y los que serán salidas del Puerto A, TRISB nos permite establecer los pines que serán entradas y los que serán salidas del puerto B.
Vamos a ver con más detenimiento estos tres registros.
• STATUS
Para cambiar del Banco 0 al Banco 1 utilizamos elregistro STATUS. Hacemos esto poniendo el bit 5 del registro STATUS a 1. Para cambiar de nuevo al Banco 0, ponemos el bit 5 del registro STATUS a 0. El registro STATUS se localiza en la dirección 03h (la ‘h’ significa que el número es hexadecimal).
• TRISA y TRISB
Están localizados en las direcciones 85h y 86h respectivamente. Para programar que un pin sea una salida o una entrada, simplementeenviamos un 0 o un 1 al bit en cuestión en el registro. Ahora, podemos hacer esto ya sea en binario o en hexadecimal. Personalmente uso ambos, ya que el binario ayuda mucho a visualizar el puerto. Si no estás familiarizado con el paso de binario a hexadecimal y viceversa, utiliza una calculadora científica.
Entonces en el puerto A tenemos 5 pines, por tanto 5 bits. Si deseamos poner uno de los pinescomo entrada, enviamos un 1 al bit en cuestión. Si deseamos poner uno de los pines como salida, ponemos un 0 en ese bit. Los bits están definidos de manera correspondiente con los pines, en otras palabras el bit 0 es el RA0, el bit 1 es el RA1, el bit 2 es el RA2, y así sucesivamente. Vamos a tomar un ejemplo. Si queremos poner RA0, RA3 y RA4 como salidas, y RA1 y RA2 como entradas, enviamosesto: 00110 (06h). Date cuenta de que el bit cero está a la derecha, como se muestra aquí:
|Pin del Puerto A |RA4 |RA3 |RA2 |RA1 |RA0 |
|Numero de bit |4 |3 |2 |1 |0 |
|Valor Binario |0 |0 |1 |1 |0 |
Lo mismo se aplica para TRISB.
• PORTA y PORTB
Para poner uno de nuestros pines de salida a nivel alto,simplemente ponemos un 1 el bit correspondiente en nuestro registro PORTA o PORTB. El formato es el mismo que para los registros TRISA y TRISB. Para leer si un pin está a nivel alto o nivel bajo en los pines de nuestro puerto, podemos ejecutar un chequeo para ver si el bit en particular correspondiente esta puesto a nivel alto (1) o está puesto a nivel bajo (0).
Antes de dar un ejemplo decódigo, tenemos que explicar dos registros mas – W y F.
• W
El registro W es un registro de propósito general al cual le puedes asignar cualquier valor que desees. Una vez que has asignado un valor a ese registro, puedes sumarle cualquier otro valor, o moverlo. Si le asignas otro valor a W, su contenido es sobrescrito.
Un ejemplo de código
Vamos a darte un ejemplo de código sobre lo queacabamos de aprender. No intentes compilar esto todavía, lo haremos cuando hagamos nuestro primer programa. Simplemente estamos intentado mostrar como se hace la programación de lo anterior y de paso presentando un par de instrucciones. Vamos a poner el Puerto A como en el ejemplo anterior.
Lo primero, necesitamos cambiar del banco 0 al banco 1. Hacemos esto modificando el registro STATUS, que está…