Pic
Pic
Pic
1. Objetivo ...................................................................................................................................... 2
2. Introducción ................................................................................................................................ 2
3. Compuertas Lógicas .................................................................................................................... 3
Compuerta AND ...................................................................................................................... 4
Compuerta OR ......................................................................................................................... 4
Compuerta NOT ...................................................................................................................... 5
Compuerta NAND .................................................................................................................... 5
Compuerta NOR ...................................................................................................................... 6
Compuerta XOR ....................................................................................................................... 6
Compuerta XNOR .................................................................................................................... 7
Compuerta IF ........................................................................................................................... 7
4. Microcontrolador 16f84 ............................................................................................................. 8
4.1 LOS PINES DEL 16F84 .......................................................................................................... 8
5. MPLAB ....................................................................................................................................... 10
5.1 LOS REGISTROS .............................................................................................................. 11
5.1.1 SIMULACION.............................................................................................................. 13
1. Objetivo
El objetivo de esta práctica es aprender los diferentes lenguajes de programación,
para ello se realizará un programa en los diferentes softwares de desarrollo
MPLAB, PIC C, MikroCode Basic y VHDL.
2. Introducción
En esta práctica se utilizarán algunos softwares para programar el
comportamiento de las compuertas lógicas (AND, OR, XNOR, NOT, NAND, NOR
y XNOR) en el PICF1684a y con la ayuda del simulador proteus poder visualizar
el programa.
En concreto, en esta programación se utilizarán los puertos de entrada/salida
digitales. Los programa realizados en MPLAB y VHDL se realizará en físico,
tomará las entradas por el puerto A mientras que las del puerto B mostrarán la
salida por la barra de leds. Se realizarán algunas pruebas simuladas antes de
quemar el PIC y las programaciones de los demás softwares serán solamente
simuladas.
3. Compuertas Lógicas
Las Compuertas Lógicas son circuitos electrónicos conformados internamente por
transistores que se encuentran con arreglos especiales con los que otorgan
señales de voltaje como resultado o una salida de forma booleana, están
obtenidos por operaciones lógicas binarias (suma, multiplicación). También
niegan, afirman, incluyen o excluyen según sus propiedades lógicas. Estas
compuertas se pueden aplicar en otras áreas de la ciencia como mecánica,
hidráulica o neumática.
Existen diferentes tipos de compuertas y algunas de estas son más complejas,
con la posibilidad de ser simuladas por compuertas más sencillas. Todas estas
tienen tablas de verdad que explican los comportamientos en los resultados que
otorga, dependiendo del valor booleano que tenga en cada una de sus entradas.
Trabajan en dos estados, "1" o "0", los cuales pueden asignarse a la lógica
positiva o lógica negativa. El estado 1 tiene un valor de 5v como máximo y el
estado 0 tiene un valor de 0v como mínimo y existiendo un umbral entre estos dos
estados donde el resultado puede variar sin saber con exactitud la salida que nos
entregara. Las lógicas se explican a continuación:
La lógica positiva es aquella que con una señal en alto se acciona, representando
un 1 binario y con una señal en bajo se desactiva, representado un 0 binario.
La lógica negativa proporciona los resultados inversamente, una señal en alto se
representa con un 0 binario y una señal en bajo se representa con un 1 binario.A
continuación vamos a analizar las diferentes operaciones lógicas una por una
comenzando por la más simple:
Compuerta AND
Esta compuerta es representada por una multiplicación en el Algebra de Boole.
Indica que es necesario que en todas sus entradas se tenga un estado binario 1
para que la salida otorgue un 1 binario.
En caso contrario de que falte alguna de sus entradas con este estado o no tenga
si quiera una accionada, la salida no podrá cambiar de estado y permanecerá en
0. Esta puede ser simbolizada por dos o más interruptores en serie de los cuales
todos deben estar activos para que esta permita el flujo de la corriente.
Compuerta OR
En el Algebra de Boole esta es una suma. Esta compuerta permite que con
cualquiera de sus entradas que este en estado binario 1, su salida pasara a un
estado 1 también.
No es necesario que todas sus entradas estén accionadas para conseguir un
estado 1 a la salida pero tampoco causa algún inconveniente. Para lograr un
estado 0 a la salida, todas sus entradas deben estar en el mismo valor de 0. Se
puede interpretar como dos interruptores en paralelo, que sin importar cual se
accione, será posible el paso de la corriente.
Tabla 2. Representación y Formula Compuerta OR
Compuerta NOT
En este caso esta compuerta solo tiene una entrada y una salida y esta actúa
como un inversor. Para esta situación en la entrada se colocara un 1 y en la salida
otorgara un 0 y en el caso contrario esta recibirá un 0 y mostrara un 1. Por lo cual
todo lo que llegue a su entrada, será inverso en su salida.
Compuerta NAND
También denominada como AND negada, esta compuerta trabaja al contrario de
una AND ya que al no tener entradas en 1 o solamente alguna de ellas, esta
concede un 1 en su salida, pero si esta tiene todas sus entradas en 1 la salida se
presenta con un 0.
Tabla 4.Representación y Fórmula Compuerta NAND
Compuerta NOR
Así como vimos anteriormente, la compuerta OR también tiene su versión inversa.
Esta compuerta cuando tiene sus entradas en estado 0 su salida estará en 1, pero
si alguna de sus entradas pasa a un estado 1 sin importar en qué posición, su
salida será un estado 0.
Compuerta XOR
También llamada OR exclusiva, esta actúa como una suma binaria de un digito
cada uno y el resultado de la suma seria la salida. Otra manera de verlo es que
con valores de entrada igual el estado de salida es 0 y con valores de entrada
diferente, la salida será 1.
Tabla 6. Representación y Fórmula Compuerta XOR
Compuerta XNOR
Esta es todo lo contrario a la compuerta XOR, ya que cuando las entradas sean iguales se
presentara una salida en estado 1 y si son diferentes la salida será un estado 0.
Compuerta IF
Esta compuerta no es una muy utilizada o reconocida ya que su funcionamiento
en estados lógicos es parecido a si solo hubiera un cable conectado porque
exactamente lo que se le coloque en la entrada, se encontrara en la salida. Pero
también es conocido como un buffer, en la práctica se utiliza como amplificador de
corriente o como seguidor de tensión para adaptar impedancias.
RA0 a RA4
RA es un puerto bidireccional. Eso quiere decir que puede ser configurado como
entrada o como salida. El número que hay después de RA indica el número de bit
(0 a 4). Por tanto, tenemos un puerto bidireccional de 5 bits donde cada bit puede
ser configurado como entrada o como salida.
RB0 a RB7
RB es un segundo puerto bidireccional. Se comporta exactamente de la misma
manera que RA, excepto que este tiene 8 bits.
VSS y VDD
Estos son los pins de alimentación. VDD es la alimentación positiva, y VSS es el
negativo de la alimentación, o 0 Voltios. La tensión máxima de alimentación que
puedes utilizar son 6 Voltios, y el mínimo son 2 Voltios.
OSC1/CLK IN y OSC2/CLKOUT
Estos pines son donde conectaremos el reloj externo, para que el microcontrolador
disponga de algún tipo de temporización.
MCLR
Este pin se utiliza para borrar las posiciones de memoria dentro del PIC (p.ej.
cuando quiero reprogramarlo). Durante el funcionamiento normal está conectado a
la alimentación positiva.
INT
Este es un pin de entrada que puede ser monitorizado. Si el pin se pone a nivel
alto, podemos hacer que el programa se reinicie, se pare o cualquier otra función
de deseemos.
TOCK1
Esta es otra entrada de reloj, que opera con un temporizador interno. Opera
aisladamente del reloj principal.
5. MPLAB
MPLAB es un editor IDE gratuito, destinado a productos de la marca Microchip.
Este editor es modular, permite seleccionar los distintos microcontroladores
soportados, además de permitir la grabación de estos circuitos integrados
directamente al programador. Es un programa que corre bajo Windows, Mac OS y
Linux.
Una vez en la Interfaz del software hay que realizar un proyecto en donde se
colocará el PIC a utilizar, se pondrá la ubicación en donde se quiera guardar el
archivo (es recomendable hacer una carpeta en el disco local).
Una vez hecho eso se procederá con el Encabezado.
__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON
En este software al programar es importante colocar el encabezado; la
configuración permite que en software entienda que cosas estarán activadas y
desactivadas.
&_XT_OSC
De igual forma se puede colocar la frecuencia dependiendo del oscilador que
utilizará el PIC.
LIST p=16F84a
INCLUDE <p16F84a.INC>
Además se llamará la librería del PIC que se utilizará; cuando se esté realizando
el programa, el código escrito anteriormente le va a permitir al software que
entienda los códigos.
Una vez puesto lo anterior se podrá comenzar a programar.
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 del Puerto A son entradas y cuales son salidas. El
Banco 0 se utiliza para manipular los datos.
Los registros que vamos a usar más comunes en 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.
STATUS
Para cambiar del Banco 0 al Banco 1 utilizamos el registro 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, simplemente enviamos un 0 o un 1 al bit
en cuestión en el registro. Ahora, podemos hacer esto ya sea en binario o en
hexadecimal.
Entonces en el puerto A tenemos 5 pines, por tanto 5 bits. Si deseamos poner uno
de los pines como 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.
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.
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.
Para continuar aún faltan demasiados códigos como son los Operadores de
Carga, Aritméticos, de Bit, Lógicos, Saltos etc.
5.1.1 SIMULACION