1.1−. Breves antecedentes relacionados.

Anuncio
1.1−. Breves antecedentes relacionados.
Inicialmente cuando no existían los microprocesadores las personas se ingeniaban en diseñar sus circuitos
electrónicos y los resultados estaban expresados en diseños que implicaban muchos componentes electrónicos
y cálculos matemáticos. Un circuito lógico básico requería de muchos elementos electrónicos basados en
transistores, resistencias, etc; pero en el año 1971 apareció el primer microprocesador el cual originó un
cambio decisivo en las técnicas de diseño de la mayoría de los equipos. Al principio se creía que el manejo de
un microprocesador era para aquellas personas con un coeficiente intelectual muy alto; por lo contrario con la
aparición de este circuito integrado todo sería mucho mas fácil de entender y los diseños electrónicos serian
mucho mas pequeños y simplificados. Entre los microprocesadores mas conocidos tenemos el popular Z−80 y
el 8085. Los diseñadores de equipos electrónicos ahora tenían equipos que podían realizar mayor cantidad de
tareas en menos tiempo y su tamaño se redujo considerablemente; sin embargo, después de cierto tiempo
aparece una nueva tecnología llamada microcontrolador que simplifica aun mas el diseño electrónico.
1.2−. Diferencias entre un Microprocesador y un Microcontrolador.
Si usted tuvo la oportunidad de realizar un diseño con un microprocesador pudo observar que dependiendo del
circuito se requerían algunos circuitos integrados adicionales ademas del microprocesador como por ejemplo:
memorias RAM para almacenar los datos temporalmente y memorias ROM para almacenar el programa que
se encargaría del proceso del equipo, un circuito integrado para los puertos de entrada y salida y finalmente un
decodificador de direcciones.
Un microcontrolador es un solo circuito integrado que contiene todos los elementos electrónicos que se
utilizaban para hacer funcionar un sistema basado con un microprocesador; es decir contiene en un solo
integrado la Unidad de Proceso, la memoria RAM, memoria ROM, puertos de entrada, salidas y otros
periféricos.
1.3−. Ventajas de un Microcontrolador Vs. un Microprocesador.
Estas ventajas son reconocidas inmediatamente para aquellas personas que han trabajado con los
microprocesadores y después pasaron a trabajar con los microcontroladores. Estas son las diferencias mas
importantes:
Por ejemplo la configuración mínima básica de un microprocesador estaba constituida por un Micro de 40
Pines, Una memoria RAM de 28 Pines, una memoria ROM de 28 Pines y un decodificador de direcciones de
18 pines; pero un microcontrolador incluye todo estos elementos en un solo Circuito Integrado por lo que
implica una gran ventaja en varios factores: En el ciruito impreso por su amplia simplificación de circuiteria,
el costo para un sistema basado en microcontrolador es mucho menor y, lo mejor de todo, el tiempo de
desarrollo de su proyecto electrónico se disminuye considerablemente.
Existen unos microcontroladores mas avanzados que otros por los componentes especiales que estos incluyen.
Algunos solamente contienen puertos de entrada y de salida, otros incluyen pines hasta de 12 Bits para
conversiones analógicas digitales entre otros. Podemos mencionar algunas características especiales que
poseen los microcontroladores actuales: Modulación por ancho de pulso, Comunicación Serial Sincrona,
Comunicacion Serial Asincrona, Temporizadores, Contadores, etc.
1.4−. Los Microcontroladores, aspecto básico general.
En la actualidad existen muchos microcontroladores de diferentes empresas reconocidas mundialmente, pero
nuestra meta especifica es tratar el microcontrolador de la empresa Microchip Tecnologies modelo
1
PIC16F84. El archivo tiene una longitud de 1.6 Mega Byte y contiene 100 hojas en formato PDF que podrás
observar con el Acrobat Reader. En ese archivo encontraras cualquier mínimos detalle que necesites conocer
del microcontrolador PIC16F84
1.5−. Que es un Microcontrolador ?.
Un microcontrolador es un circuito integrado programable que contiene internamente todos los componentes
de un computador. Este se utiliza para controlar el funcionamiento de una tarea determinada. Sus pines de
entradas y salidas se utilizan para conectar motores, relays, actuadores, etc. Una vez que el microcontrolador
esta programado, se encargara de ejecutar al pie de la letra la tarea encomendada.
1.6−. Conociendo al Microcontrolador PIC16F84.
El microcontrolador PIC16F84 es un circuito integrado fabricado por la empresa Microchip Tecnologies y es
actualmente uno de los mas utilizados a nivel mundial, la razón de esto es por que son sencillos, rápidos,
modernos y principalmente baratos, se podrán escribir los programas y borrarlos muchísimas veces, poseen
gran documentación a nivel mundial en la Red de Internet y esta accesible para la mayoría de los bolsillos.
Existen microcontroladores que una vez programados con el programa de control estos tienen que ser
borrados con luz ultra violeta en el caso de requerir borrar el programa. Para el caso del PIC16F84, este podrá
ser programado Eléctricamente con una circuiteria que proporciona la empresa Microchip Tecnologies. Este
programador es sumamente sencillo y debe ser conectado al puerto paralelo de su computador.
1.7−. Características Básicas del PIC16F84.
El Microcontrolador PIC16F84 es un circuito integrado de 18 pines fabricado con tecnología CMOS, existen
en diferentes versiones de encapsulado como por ejemplo el DIP (Version convensional ) y el SOIC ( Montaje
superficial ). La frecuencia de trabajo esta entre 4 Mhz y 20 Mhz. Las versiones que se estipulan en una
frecuencia de trabajo de 4 Mhz podrán trabajar sin ningún problema hasta los 10 Mhz, prueba que hemos
realizado muchas veces en nuestros diseños. Observemos la siguiente imagen que muestra como están
organizados los pines del microcontrolador PIC16F84:
1.8−. Identificación de los Pines utilizados para los puertos de entrada y salidas.
En la imagen anterior se podrá observar claramente que el microcontrolador tiene dos puertos denominados
"A" y "B". El puerto "A" tiene 5 lineas disponibles (RA0, RA1, RA2, RA3, RA4 ) y el puerto "B" tiene 8
lineas disponibles (RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7 ). Ambos Puertos suman un total de 13
lineas que podrá ser programadas independientemente como entradas o como salidas. Estas son las lineas que
estarán destinadas para comunicar el microcontrolador con el mundo exterior, como por ejemplo: Un motor
Paso a Paso, Diodos Luminosos "Leds", Módulos LCD, Teclados Matriciales, etc. También observe que el
Pin No. 3 perteneciente al puerto "A" = RA4 también tiene otra nomenclatura denominada "TOCKI" lo cual
quiere decir que esta linea podrá ser programada como entrada, salida y temporizador/contador.
1.9−. Identificación de los pines de alimentación del Microcontrolador.
2
El microcontrolador trabaja con una tensión de 5 Vlts. DC y los pines para ello son el Pin No. 14 (+) y el Pin
No. 5 (−).
1.10−. Oscilador para el PIC16F84.
Todo microprocesador o microcontrolador requiere de un circuito que le indique a que velocidad debe
trabajar. Este circuito es conocido por todos como un oscilador de frecuencia. Este oscilador es como el
corazón del microcontrolador por lo tanto, este pequeño circuito no debe faltar. En el caso del
microcontrolador PIC16F84 el Pin No. 15 y el Pin No. 16 son utilizados para introducir la frecuencia de reloj.
Existen microcontroladores que tienen su oscilador internamente y no requieren de pequeños circuitos
electrónicos externos. El microcontrolador PIC16F84 requiere de un circuito externo de oscilación o
generador de pulsos de reloj. La frecuencia de reloj máxima es de 20 Mhz; sin embargo, nosotros le
recomendamos que comience a trabajar con una frecuencia de reloj de 4 Mhz. debido a que todos nuestros
experimentos estarán basados en esta frecuencia.
El microcontrolador PIC16F84 utiliza cuatro periodos completos de reloj por cada instrucción por lo tanto si
usted tuviera un cristal que estuviera 4 Mhz, internamente en el microcontrolador se esta corriendo a 1 Mhz
debido a que se toman 4 pulsos de reloj completos para cada instrucción.
El PIC16F84 puede utilizar cuatro tipo diferentes de reloj oscilador externos. El tipo de oscilador dependerá
de la precisión (ej: para las rutinas de tiempo), velocidad y potencia que usted necesite; por otro lado los
costos que serian un aspecto significativo en una producción en serie de algún tipo de proyecto electrónico y
la velocidad de proceso mínima requerida para su proyecto electrónico. Podemos resumir entonces los
diferentes tipos de osciladores:
• 1−. Oscilador tipo "HS" para frecuencias mayores de 4 Mhz. en el caso del PIC16F84 podrá instalarse
un oscilador hasta 20 Mhz.
• 2−. Oscilador tipo "XT" para frecuencias no mayores de 4 Mhz.
• 3−. Oscilador tipo "LP" para frecuencias entre 32 y 200 Khz.
• 4−. Oscilador tipo "RC" para frecuencias no mayores de 5.5 Mhz.
En el momento de programar el microcontrolador se deberá especificar en los parámetros el tipo de oscilador
que usted utilizara en su proyecto electrónico basado específicamente en la frecuencia de trabajo. Por ejemplo
si su frecuencia de trabajo es de 10 MHz entonces la configuración del microcontrolador deberá estar en
"HS"; pero si su frecuencia de trabajo es de 4 Mhz entonces la configuración del microcontrolador deberá
estar en "XT".
• En primer lugar tenemos un Oscilador tipo "HS" basado en un Cristal para frecuencias mayores a 4
Mhz. Esta versión es la mas costosa; pero representa la forma mas practica por la cantidad de
conexiones y por la precisión en la señal de reloj emitida. En la siguiente imagen se muestra como
debe conectarse al microcontrolador y las características del cristal. Estos tipos de cristales están
diseñados especialmente para tecnologías TTL. La frecuencia (Mhz) disponibles para esta versión de
cristal son muy amplias y las mas usuales son 1 − 1.8432 − 2 − 4 − 8 − 10 − 11.059 − 12 − 14.31818
− 16 − 20 − 25 − 32 − 33 − 40 −50 − 80 y 100 Mhz.
3
• En segundo lugar tenemos el oscilador tipo RC es el mas económico por que tan solo se utiliza un
condensador no polarizado y una resistencia. Este tipo de oscilador proporciona una estabilidad
mediocre en la frecuencia y podrá ser utilizado para aquellos proyectos que no se requiera precisión.
Observe la siguiente imagen donde se muestra como debe ser conectado al microcontrolador al
circuito RC.
• Es importante saber que para valores de resistencia menor a 4 K, el sistema se hace inestable o se
podría detener la frecuencia de oscilación totalmente. Para valores de resistencias mayores a 100
Megas, el oscilador se hace susceptible al ruido, humedad y a la temperatura por lo tanto se
recomienda que este tipo de oscilador se encuentre en el siguiente rango ( 5K < R < 100 K ). Por otro
lado se recomienda utilizar un condensador no polarizado de 20 pico por el ruido del medio y la
estabilidad del sistema. A continuación le proporcionamos una pequeña tabla de valores de frecuencia
de oscilación según el condensador y la resistencia. También es importante saber que la tensión de
alimentación que tendrá el microcontrolador influye directamente en la frecuencia final.
1.11−. Inicialización "RESET" del Microcontrolador.
El microcontrolador cuando se le suministra el voltaje de alimentación ejecuta automáticamente un RESET y
todos los registros son colocados es sus estados lógicos originales; sin embargo los microcontroladores
dispones de un Pin destinado específicamente para ejecutar un RESET en el caso de una falla o cuando sea
necesario aplicarle un RESET. Cuando se ejecuta un RESET, se aplican dos acciones importantes:
1−. El contador de programa se vuelve a colocar en el principio del programa desde la dirección 0 ( Principio
del Programa ).
2−. Los registros modificados vuelven a su estado normal.
4
En la siguiente imagen se puede observar como está conectado el pequeño circuito requerido para el RESET.
Cuando el pulsador "S" es accionado, se aplica un nivel lógico bajo en el Pin No. 4 del microcontrolador y
automáticamente se ejecutan los dos eventos mencionados anteriormente.
El microcontrolador PIC16F84 también dispone de otras formas de "RESET", entre ellas tenemos el Reset
denominado "POWER ON RESET", el cual debe ser activado mediante un bit de configuración en el
momento en el que se programe el PIC.
Para el circuito anterior existen algunas reglas básicas importantes:
• Se recomienda una resistencia menos de 40 K ( R < 40 K ).
• Se recomienda a R1 entre 100 ohmios y 1 K que serán los elementos electrónicos que limitaran las
corrientes que intenten entrar por el Pin del microcontrolador.
• El diodo D1 es utilizado para descargar el condensador rápidamente cuando el voltaje baja de su nivel
normal.
5
1.12−. Puertos del Microcontrolador PIC16F84.
Los puertos del microcontrolador PIC16F84 son el medio de comunicación con el mundo exterior, en ellos
podremos conectar los periféricos o circuitos necesarios como por ejemplo los Módulos LCD, motores
eléctricos, etc; pero estas conexiones no se podrán realizar arbitrariamente; es decir, existen unas reglas
básicas que deberán cumplirse para que el microcontrolador no sufra daños o se destruya. Todo el truco esta
en conocer los limites de corriente que puede manejar el microcontrolador..
1.12.1−. Limite de corriente para el Puerto "A" y el "B".
El puerto "A" del microcontrolador y el puerto "B" podrán ser programados como entradas y salidas
indiferentemente. Para el caso de que sean programadas como salida es denominado "Modo Fuente" por que
suministran corriente y cuando las lineas sean programadas como entradas son llamadas "Sumidero" por que
reciben corriente. Ahora, la máxima corriente que puede suministrar una linea programada como salida es de
20 mili−amperios; pero si usted utiliza toda las lineas del puerto "A" programadas como salida; la máxima
corriente no deberá exceder de 50mA para todo el puerto "A" . Para el caso del puerto "B" en que todas las
lineas sean programadas como salida la máxima corriente no deberá exceder de 100 mA.
Ahora cuando las lineas de los puertos son programadas como entradas ( Sumidero ), la corriente máxima que
puede manejar una sola linea es de 25 mA. Para el caso del puerto "A" que sea programado con todas sus
lineas como entrada, la máxima corriente que puede manejar es de 80 mA. Por otro lado, para el puerto "B" si
todas las lineas son programadas como entrada, la máxima corriente que puede manejar es de 150 mA.
Podemos entonces resumir:
6
Si usted esta interesado en manejar periféricos que manejan mayor cantidad de corriente de la especificada,
tan solo deberá aplicar un circuito acoplador como por ejemplo los buffers, transistores que se encarguen de
controlar la corriente, etc. Tenemos algunos ejemplos básicos para ello en la siguiente imagen:
1.13−. ARQUITECTURA DEL PIC16F84
El microcontrolador PIC16F84 dispone de una estructura organizada interiormente conformado por bloques
interconectados en donde se incluye la memoria RAM, los puertos de entrada y salida, la memoria EEPROM,
etc. En la siguiente imagen se muestra la arquitectura interna del PIC16F84.
Nuestra intención no abarca el detalle de como funciona internamente el microcontrolador; pero si usted esta
interesado en ello, disponemos de un software educativo llamado PINPOKE en el cual usted podrá observar
visualmente como trabaja el microcontrolador PIC16F84.
1.14−. REGISTROS IMPORTANTES DEL MICROCONTROLADOR PIC16F84
Antes de programar el microcontrolador, será absolutamente necesario conocer algunos aspectos básicos de la
arquitectura del microcontrolador; específicamente en los detalles relacionados a la ubicación del comienzo de
la memoria RAM, Memoria EEPROM, Registros reservados, etc. En la siguiente imagen ( Lado derecho )
representamos el mapa de memoria del microcontrolador PIC16F84; básicamente se puede observar que la
estructura esta dividida en dos columnas denominadas banco 0 y banco 1. Los bancos difieren solamente en
7
algunos aspectos que serán explicados posteriormente; por los momentos, observe cuidadosamente y trate de
identificar los bancos.
1.15−. MEMORIA RAM:
El microcontrolador PIC16F84 puede direccionar 128 posiciones diferentes de memoria RAM; pero
Microchip Tecnologies solamente ha implementado 80 posiciones para este PIC, esta memoria esta dividida
en dos partes:
• La primera parte consta de 16 registros que serán utilizados por funciones especiales del
microcontrolador. En la figura anterior se puede observar los doce registros especiales: TMRO, PCL,
STATUS, FSR, PORTA, PORTB, EEDATA, etc.
• La Segunda parte consta de 68 registros de memoria RAM que serán utilizados para almacenar datos
temporales requeridos por el programa creado por el programador.
Este tipo de memoria comienza en la posición 0Ch y termina en la posición 4Fh. La memoria RAM tiene la
característica básica de perder los datos si se llegase a desconectar el microcontrolador o la tensión baja por
debajo de los limites mínimos.
La memoria RAM así como algunos registros especiales son los mismos en los dos bancos del mapa de
memoria del PIC.
1.16−. MEMORIA DE PROGRAMA TIPO EEPROM:
Esta memoria tiene 1 K x 14 Bits de memoria tipo Flash. Esta memoria es la que utilizaremos para almacenar
nuestro programa dentro del microcontrolador PIC16F84. El tipo de memoria utilizada en este
microcontrolador, podrá se escrita o borrada eléctricamente; por otro lado, la memoria tipo Flash tiene la
característica de poderse borrar en bloques completos y no podrá borrarse posiciones concretas o especificas.
Este tipo de memoria no es volátil, es decir, no pierde los datos si la energía es interrumpida. En la siguiente
imagen se muestra como esta organizada la memoria dentro del microcontrolador.
8
La memoria del programa comienza desde la posición 000h y termina en la posición 03FFh.
NOTA IMPORTANTE: El contador de programa del microcontrolador PIC16F84 tiene una longitud de 13
Bits por lo que implica que este podrá direccionar cualquier posición comprendida en un rango de los 8 K x
14; pero la empresa Microchip Tecnologies solamente ha implementado internamente 1 K que representa
desde 000h hasta 03FFh. En el caso de que usted direcciones fuera del rango estipulado, automáticamente
causara un solapamiento.
1.17−. CONJUNTO DE INSTRUCCIONES DEL PIC16F84:
El microcontrolador PIC16F84 dispone de un total de 37 instrucciones de una sola palabra que usted podrá
aprenderse muy fácilmente. Nuestro curso va orientado a entender y programar el PIC16F84 de una manera
sencilla y rápida por lo que explicaremos a continuación el conjunto de instrucciones, su significado, modo de
operación y traducción.
Las instrucciones tienen algunas letras que van relacionadas y que tienen cierta interpretación. Por ejemplo la
letra "W" es el registro mas importante que tiene el microcontrolador y es denominado ACUMULADOR. En
este registro todas las operaciones pasan a través de el.
No. Instrucción
1
ADDWF f,d
No. Instrucción
2
ANDWF f,d
No. Instrucción
3
ANDLW k
3
Descripción
Observación
Esta instrucción suma el contenido de un registro específico
Sumar W + f al contenido del registro de "W" donde "f" puede ser un
registro cualquiera con un determinado valor.
Descripción
Operación
lógica AND
Observación
Esta instrucción realiza una operación lógica "AND" entre el
registro"W" y el registro "f".
Descripción
CLRF f
Observación
Operación lógica AND entre un literal y W
Esta instrucción borra un registro especifico.
9
Borra
registro
No. Instrucción
4
CLRW
No. Instrucción
5
COMP f,d
No. Instrucción
6
DECF f,d
No. Instrucción
7
DECFSZ f,d
No. Instrucción
8
INCF f,d
No. Instrucción
9
INCFSZ f,d
No. Instrucción
10
IORWF f,d
Descripción
Borra el
registro W
Descripción
Complementa el
registro f
Observación
Esta instrucción borra el registro "W" solamente
Observación
Esta instrucción complementa el registro "f"
Descripción
Observación
Decrementa un Esta instrucción decrementa en una sola unidad el registro
registro f
"f".
Descripción
Decrementa y si
es igual a cero
salta.
Observación
Esta instrucción decrementa en una sola unidad el registro
"f" en la cual si el registro "f" es igual a cero entonces
salta a una instrucción
Descripción
Incrementa el
registro "f" en
una unidad
Observación
Descripción
incrementa y si
es igual a cero
salta.
Observación
Esta instrucción incrementa en una sola unidad el registro
"f" en la cual si el registro "f" es igual a cero entonces
salta a una instrucción
Esta instrucción incrementa en una sola unidad el registro
"f".
Descripción
Observación
Se aplica un OR Esta instrucción aplica una operación lógica llamada OR
Inclusivo
INCLUSIVO entre dos registros.
1.18−. LAS BANDERAS
Estas banderas se utilizan para dar información adicional cuando se realizan operaciones lógicas y aritméticas
dentro del microcontrolador. Usted podrá tomar decisiones según el valor de cada una de las banderas. Existen
diferentes tipos de banderas en un microcontrolador; entre ellas tenemos:
1.19−. LAS BANDERAS EN LA SUMA:
Los registros básicos del microcontrolador PIC16F84 tienen una longitud de 8 bits expresados en forma
binaria, lo cual quiere decir que el número máximo expresado en forma decimal será el 255. En la suma
existen tres tipos de banderas que pueden proporcionarnos mayor información del resultado. Estas banderas
son denominadas CARRY (C), Acarreo de Dígito (DC) y el Estado Cero (Z). Todas estas banderas son
activadas según sea el caso:
10
Por ejemplo, en la suma, la bandera CARRY se coloca en "1" cuando el resultado supera el número 255 y
permanecerá en "0" indicando que no se presentó ningún sobreflujo; es decir que el resultado de la suma fue
menor.
Por otro lado, existe otra bandera denominada Acarreo de Dígito "DC" que expresa lo que sucede con los 4
Bits menos significativos; es decir, si los cuatro Bits menos significativos sobrepasa al numero 15 expresado
en forma decimal, entonces la bandera DC = 1, en el caso contrario será "0".
Finalmente la bandera de estado "Z" se activa cuando la operación aritmética da como resultado un "1"; de lo
contrario se coloca en "0".
1.20−. LAS BANDERAS EN LA RESTA:
En la resta de dos números la bandera CARRY "C" se coloca en "1" cuando el resultado de la operación sea
un número positivo, o se pone en cero para el caso contrario. Esto tan sencillamente quiere decir por ejemplo
que si tenemos A=20 y B=10 donde X=A−B; el resultado será X=10 ( Número Positivo ); para el caso
contrario si tenemos A=10 y B=20 donde X=A−B entonces X=−10. obteniéndose un resultado negativo.
La bandera de acarreo de dígito "DC" se colocará en "1" cuando los cuatro Bits menos significativos del
registro "W" sea menor que los cuatros bits menos significativos del registro que se desea restar, en caso
contrario se colocará un cero.
La bandera de estado "Z" solamente se activará cuando ambas cantidades sean iguales.
1.21.− LAS BANDERAS EN LA ROTACION:
El microcontrolador PIC16F84 tiene disponibles dos instrucciones de rotación las cuales rotan los dígitos de
un registro a la derecha o a la izquierda, segun se use.
Por ejemplo, para la rotación a la izquierda supongamos que nuestro registro " f = 00001111 " y que la
bandera CARRY tiene un 0; cuando se aplica el comando RLF f,0 todos los números del registro "f" se
desplazan hacia la izquierda. El valor lógico que se encuentra en la bandera CARRY es colocado en el Bit No.
0 y el Bit No. 7 es colocado en la bandera CARRY. El resultado de nuestro ejemplo seria: f = 00011110. y
CARRY seria 0. El orden lógico de los Bits lo tenemos definidos así:
11
Descargar