TRADUCTOR

domingo, 26 de mayo de 2013

PIC16F84A

El microcontrolador PIC16F84A

El PIC16F84A es un microprocesador, ¿Que quiere decir esto? que es un microcontrolador más periféricos como memoria de programa, memoria de datos y los puertos.
El microprocesador esta orientado a resolver cuentas con rapidez.
Tiene un encapsulado DIP-18.

PIN-OUT del Microcontrolador:


Los puertos del microcontrolador son los pines por donde se comunica el mismo con el exterior, pueden ser salidas o entradas de datos.
El PORT A o PUERTO A tiene 5 bits
El PORT B o PUERTO B se denomina Puerto Completo porque posee los 8 bits
El Master Clear es el reset negado: si posee un estado bajo se resetea el microcontrolador. Un circuito comun para el Master Clear seria:

Clock

Es la que le da el impulso al microcontrolador para que realice las instrucciones que le programamos.
Una señal de Clock oscila entre estado alto o bajo, y gráficamente toma la forma de una onda cuadrada.
 Este microcontrolador admite 5 modos de clock diferentes.
  • LP: Desde 10KHZ hasta 1MHz
  • XT: Desde 1MHz hasta 4MHz
  • HS: Desde 4MHz hasta 20MHz
Estos 3 anteriores se arman con el mismo circuito, con diferentes valores 



  • RC: Desde 10KHz hasta 1MHz
Circuito: (los valores de R1 y C1 varían según la frecuencia de oscilador)



  • Externo: Se conectan varios microcontroladores con el mismo circuito oscilador.
Organizacion de memoria del microcontrolador

El PIC16F84A esta compuesto por:

  • Memoria Flash ROM (Programa): 
Esta posee las instrucciones del programa.
Es del tipo no volatil.
Posee 1024 posiciones de memoria, de 14 bits cada una.
Comienza en la posición 0x000 y termina en 0x3FF
La memoria está paginada (dividida) en 4 partes de 256 posiciones: 

Page 0 (0x000 - 0x0FF)
Page 1 (0x100 - 0x1FF)
Page 2 (0x200 - 0x2FF)
Page 3 (0x300 - 0x3FF)

Por defecto, en la posición 0x000 tenemos el vector de reset (Cada vez que se resetea la rutina, empieza desde esta posición) y en la posición 0x004 tenemos el vector de interrupción (Cada vez que la rutina se interrumpe, se retoma el proceso en esta posición).


  • Memoria SRAM (Static RAM):
En esta se guardan variables y datos. Es volatil.
Esta memoria está dividida en dos partes o bancos, que a la vez están divididas en otras dos partes:

- Banco 0. Este banco está formado por 80 bytes podemos decir que este banco está situado desde la posición 0x00 hasta la 0x4F, osea en decimal ocupa desde la 0 a la 79.

• La primera parte consta de 12 registros que serán utilizados por funciones especiales del microcontrolador. Se llama Registro de Funciones Especiales (SFR) y comienza en la dirección 0x00 y termina en la 0x0B, es decir, de la 0 a la 11. 


• La segunda parte consta de 68 registros de memoria RAM que serán utilizados para almacenar datos temporales requeridos por los programas. Comienza en la dirección 0x0C y termina en la posición 0x4F (de la 12 a la 79). Esta parte es la memoria de registros de propósito general.


- Banco 1. Este banco tiene las mismas dimensiones que el anterior, pero su uso es menor, ya que no tiene banco para registros de propósito general. Solamente tiene una sección de registros especiales que van de la posición 0x80 a la 0x8B (de la 128 a la 139).




  • Memoria EEPROM de datos: 
Es una pequeña area de memoria de datos de lectura y escritura
Es del tipo no volatil.
Tiene una longitud de 8 bits, del mismo modo que la memoria de datos. Su tamaño es de 64 bytes y está situada en un bloque distinto y aislado de la de programa.


REGISTROS MAS UTILIZADOS

PORTA - PORTB: Indican los valores que tiene en los pines RA0-RA4 en el caso de PORTA y RB0-RB7 en el caso de PORTB. Ambos estan en el banco 0. Se encuentran en las posiciones 0x06 y 0x07.

TRISA - TRISB: Configuran cada pin del puerto correspondiente (A o B) como entrada o salida. 1 significa entrada y 0 salida.
Por ejemplo si el valor de TRISB es 0x89 que significa 1000 1001, RB7, RB3 y RB0 van a ser entradas mientras que todo el resto van a ser salidas.
Ambos estan en el banco 1.
Por default esta funcion posee el estado 0xFF.
Se encuentran en las posiciones 0x86 y 0x87.


STATUS: Este registro esta repetido en los dos bancos. (0x03 y 0x83)
Un bit puede no tener nada que ver con el que tiene al lado.
Estos bits se configuran con un 1 o un 0, y activan o desactivan una función.

El registro STATUS está formado por 8 bits:


Los tres primeros bits son banderas.


Bit 0 : C o bit de Carry 
Bit 1 : DC o bit de Digit Carry 
Vamos a explicar ambos con una suma:

El resultado es de 9 bits, por lo cual se expresa con un byte y el primer digito es el carry.
 El decimal Carry es el carry entre el nibble bajo y el nibbel alto.

Bit 2 : Z o bit de Zero (Cero)
-         1: El resultado de la operación lógica es cero
-         0: El resultado de la operación lógica no es cero

Bit 3 : PD o bit de Power Down (Apagado)
-         1: Recién encendido o después de la instrucción CLRWDT, que resetea el contador WatchDog.
-         0: Después de ejecutar la instrucción SLEEP (Dormir)

Bit 4 : TO o bit de Time Out (Tiempo acabado)
-         1: Recién encendido o después de una instrucción CLRWDT o SLEEP
-         0: Se produjo un reset por el WatchDog Timer.

Estos dos últimos indican si hubo un reset manual o interno.

Bit 5 y 6: RP0 y RP1 o bits de selección de página. Sirven para escoger si se quiere trabajar en el banco 0 o en el 1. 
Con RP0 elejimos entre el banco 0 y 1 (si RP0 vale 0 apuntamos al banco 0 y si vale 1 al banco 1)
RP1 es el decimal de RP0 y es para microcontroladores de 4 bancos.



CONFIG: Con este registro configuramos el tipo de clock, la protección de código  el power on time y el watch dog timer.
Esta en la ubicación 0x2007 y posee 14 bits aunque desde el bit 13 hasta el bit 5, no tienen aplicación. 
Se controla con la directiva __CONFIG.

Bit 0 : F osc 0
Bit 1 : F osc 1
Con estos dos elegimos entre los 4 tipos de clock explicados anteriormente.

Bit 2 : WDT o Watch Dog Timer. Lo configuro con 1 o 0.

Bit 3 : PWRTE o Power On Time. Lo configuro con 1 o 0.

Bit 4 : CP o Code Protection. Lo configuro con 1 o 0.


No hay comentarios:

Publicar un comentario