Professional Documents
Culture Documents
Microcontroladores
PIC
uC PIC
CCS Compiler
Proteus
INTRODUCCIÓN.
La situación actual en el campo de los
microcontroladores se ha producido gracias al desarrollo
de la tecnología de fabricación de los circuitos
integrados. Este desarrollo ha permitido construir las
centenas de miles de transistores en un chip. Esto fue
una condición previa para la fabricación de un
microprocesador. Las primeras microcomputadoras se
fabricaron al añadirles periféricos externos, tales como
memoria, líneas de entrada/salida, temporizadores u
otros. El incremento posterior de la densidad de
integración permitió crear un circuito integrado que
contenía tanto al procesador como periféricos. Así es
cómo fue desarrollada la primera microcomputadora en un
solo chip, denominada más tarde microcontrolador.
Para entender con más facilidad las razones del éxito
tan grande de los microcontroladores, vamos a prestar
atención al siguiente ejemplo. Hace unos 10 años, diseñar
un dispositivo electrónico de control de un ascensor de
un edificio de varios pisos era muy difícil, incluso para
un equipo de expertos. ¿Ha pensado alguna vez en qué
requisitos debe cumplir un simple ascensor? ¿Cómo lidiar
con la situación cuando dos o más personas llaman al
ascensor al mismo tiempo? ¿Cuál llamada tiene la
prioridad? ¿Cómo solucionar las cuestiones de seguridad,
de pérdida de electricidad, de fallos, de uso indebido?
Lo que sucede después de resolver estos problemas básicos
es un proceso meticuloso de diseñar los dispositivos
adecuados utilizando un gran número de chips
MICROCONTROLADORES
MICROCONTROLADORES PIC
Empaquetados
Aunque cada empaquetado tiene variantes, especialmente
en lo relativo a las dimensiones del espesor del paquete,
en general se pueden encontrar paquetes tipo PDIP
(Plastic Dual In Line Package), PLCC (Plastic Leaded Chip
Carrier) y QFP (Quad Flat Package), los cuales se
muestran en las figuras siguientes:
Oscilador
Los PIC permiten diferentes modos para el oscilador.
El usuario puede seleccionar alguno de estos modos
Tabla 3. Osciladores
LP Baja frecuencia (y bajo consumo de potencia)
Cristal / Resonador cerámico externos, (Media
XT
frecuencia)
HS Alta velocidad (y alta potencia) Cristal/resonador
Resistencia / capacitor externos (mismo que EXTRC
RC
con CLKOUT)
EXTRC Resistencia / capacitor externos
EXTRC Resistencia / Capacitor externos con CLCKOUT
INTRC Resistencia / Capacitor internos para 4 MHz
Resistencia / Capacitor internos para 4 MHz con
INTRC
CLKOUT
Descripción de la CPU
Unidad Central De Procesamiento (Central Processor
Unit). Como indica su nombre, esto es una unidad que
controla todos los procesos dentro del microcontrolador.
La CPU es la responsable de la interpretación y ejecución
de la información (instrucciones) guardada en la memoria
de programa. Muchas de estas instrucciones operan sobre
BUS
El bus está formado por 8, 16 o más cables. Hay dos
tipos de buses: el bus de direcciones y el bus de datos.
El bus de direcciones consiste en tantas líneas como sean
necesarias para direccionar la memoria. Se utiliza para
transmitir la dirección de la CPU a la memoria. El bus de
datos es tan ancho como los datos, en este caso es de 8
bits o líneas de ancho. Se utiliza para conectar todos
los circuitos dentro del microcontrolador.
Ciclo de instrucción
El registro Program Counter (PC) es gobernado por el
ciclo de instrucción como se muestra en la siguiente
figura. Cada ciclo de instrucción la CPU lee (ciclo
Fetch) la instrucción guardada en la memoria de programa
apuntada por PC y al mismo tiempo ejecuta la instrucción
anterior, esto debido a una cola de instrucciones que le
permite ejecutar una instrucción mientras lee la próxima.
Registros de la CPU.
Registro PC. Registro de 13 bits que siempre apunta a
la siguiente instrucción a ejecutarse. En la siguiente
sección se dan mayores detalles en el manejo de este
registro.
Registro de Instrucción. Registro de 14 bits. Todas
las instrucciones se colocan en el para ser
decodificadas por la CPU antes de ejecutarlas.
Registro W. Registro de 8 bits que guarda resultados
temporales de las operaciones realizadas por la ALU
Registro de Estado (03h y 83h, STATUS) contienen
varios bits de estado de la unidad central, el estado
aritmético de la ALU, el estado del reset y un par de
bits de selección de página denominados RP1 y RP0. Ocupa
la posición 03h del banco 0 y la 83h del banco 1. Algunos
de estos bits se pueden cambiar manualmente a través del
programa. Otros los activa automáticamente el PIC cuando
se dan ciertos procesos. Estos bits se llaman flags
(banderas). Para dar una idea práctica, una bandera se
Bancos de memoria
Toda la memoria de datos está organizada en 4 bancos
numerados 0, 1, 2 y 3. Para seleccionar un banco se debe
hacer uso de los bits del registro STATUS<7:5>
denominados IRP, RP1 y RP0. Hay dos maneras de acceder a
la memoria de datos: Direccionamiento directo e
Direccionamiento
RP1:RP0 Banco
Indirecto (IRP)
0 0 0
0
0 1 1
1 0 2
1
1 1 3
Memoria ROM
La memoria ROM se utiliza para guardar permanente el
programa que se está ejecutando. Es la razón por la que
es frecuentemente llamada “memoria de programa”. El
PIC16F887 tiene 8Kb de memoria ROM (en total 8192
localidades). Como la memoria ROM está fabricada con
tecnología FLASH, su contenido se puede cambiar al
proporcionarle un voltaje de programación especial (13V).
No obstante, no es necesario explicarlo en detalles
puesto que se realiza automáticamente por un programa
especial en la PC y un simple dispositivo electrónico
denominado programador.
La Memoria de Programa en los PIC16Fxxx es de tipo
flash, aquí es donde se aloja el programa que el CPU
ejecutará. En los PIC16 la memoria de programa se
cuantifica en palabras, de 14 bits cada una. Son de 14
bits porque cada instrucción es de 14 bits. Esto suele
impresionar un poco al novel, quien está habituado a
medir la capacidad de las memorias en bytes (8 bits).
El PIC16F84A tiene 1 k (1024) palabras de memoria. En
tiempo de ejecución son de solo lectura. Con 1 k puede
almacenar hasta 1024 instrucciones de código ensamblador.
Los PIC16F877A/876A tienen 8 k (8192) palabras de memoria
de programa mientras que los PIC16F874A/873A tienen 4 k
(4192). Los cuatro PICmicros ofrecen la posibilidad de
escribir en su memoria de programa incluso en tiempo de
ejecución. Esta función puede ser aprovechada para
almacenar datos procesados por el usuario o para permitir
la autoprogramación del PIC.
El Contador de Programa, PC
El PC es un registro que indica la siguiente
instrucción que debe ejecutar el CPU. Al arrancar
microcontrolador, el PC vale 0x0000 y se va incrementando
automáticamente, con lo que el PIC debería ejecutar una a
La Pila o STACK
Es una memoria que almacena temporalmente el valor del
PC (Program Counter) cuando el programa llama a una
subrutina o cuando salta al Vector de Interrupción, en
una interrupción. En los PICs de la familia Mid-Range la
Pila tiene únicamente 8 niveles y se administra a nivel
hardware, esto es, no hay instrucciones para acceder a
ella directamente. Su operación es enteramente en
background. Solo debemos cuidar de que no se llegue a
desbordar.
Cuando se ejecuta una instrucción CALL o es reconocida
una interrupción el PC es guardado en el stack y el
apuntador de stack es incrementado en 1 para apuntar a la
siguiente posición vacía. A la inversa, cuando se ejecuta
una instrucción RETURN, RETLW o RETFIE el contenido de la
posición actual del stack es colocado en el PC. El PCLATH
no se modifica en ninguna de estas operaciones, cuando el
apuntador de stack ya está en la posición 8 y se ejecuta
otro CALL se reinicia a la posición 1 sobrescribiendo en
dicha posición. No existe ningún indicador que avise de
esta situación. Así que el usuario deberá llevar el
control para que esto no ocurra.
Vector de Reset. Cuando ocurre un reset el contenido
del PC es forzado a cero, ésta es la dirección donde la