Vous êtes sur la page 1sur 144

Guatemala, diciembre de 2006

NOMBRE DE LA UNIDAD (palatino, bold, 8 pts, JI)

COPYRIGHT
Instituto Tcnico de Capacitacin y Productividad
-INTECAP- 2006
Esta publicacin goza de la proteccin de los derechos de propiedad intelectual
en virtud de la Convencin Universal sobre Derechos de Autor. Las solicitudes
de autorizacin para la reproduccin, traduccin o adaptacin parcial o total de
su contenido, deben dirigirse al Instituto Tcnico de Capacitacin y Productividad
INTECAP de Guatemala. El Instituto dictamina favorablemente dichas solicitudes
en beneficio de la Formacin Profesional de los interesados. Extractos breves de
esta publicacin pueden reproducirse sin autorizacin, a condicin de que se
mencione la fuente.

MICROPROCESADORES Y MICROCONTROLADORES
Cdigo: MT.3.4.2-245/06
Edicin 01

Las denominaciones empleadas en las publicaciones del Instituto Tcnico de


Capacitacin y Productividad, y la forma en que aparecen presentados los datos,
contenidos y grficas, no implican juicio alguno por parte del INTECAP ni de sus
autoridades. La responsabilidad de las opiniones en los artculos, estudios y otras
colaboraciones, incumbe exclusivamente a sus autores.
Este manual es resultado del trabajo en equipo del Departamento de Industria
de la Divisin Tcnica, con el asesoramiento metodolgico del Departamento
de Metodologa de la Formacin bajo la direccin de la jefatura de Divisin Tcnica.
Este manual ha sido impreso en el Centro de Reproduccin Digital por Demanda
Variable del INTECAP -CRDDVILas publicaciones del Instituto Tcnico de Capacitacin y Productividad, as como
el catlogo lista y precios de los mismos, pueden obtenerse solicitando a la siguiente
direccin:
Instituto Tcnico de Capacitacin y Productividad
Divisin Tcnica - Departamento de Industria
Calle del Estadio Mateo Flores, 7-51 zona 5. Guatemala, Ciudad.
Tel. PBX. 2410-5555 Ext. 647, 644
www.intecap.org.gt
divisiontecnica@intecap.org.gt

MICROPROCESADORES Y MICROCONTROLADORES

NOMBRE DE LA UNIDAD (palatino, bold, 8 pts, JD)

NDICE
Objetivo del manual _____________________________________________________________________
Presentacin ___________________________________________________________________________

5
7

UNIDAD 1
MICROPROCESADORES
Objetivos de la unidad

1.1
1.2
1.2
1.3
1.4
1.5
1.6
1.7
1.8

Microprocesadores__________________________________________________________________
Conexiones del microprocesador
Conexiones
microprocesador
_________________________________________________
programable, del
interrupciones
programable,
de comunicacin serial ____________________________
Proceso de instalacin de microprocesadores_____________________________________________
Especificaciones tcnicas del fabricante__________________________________________________
Programacin del microprocesador_____________________________________________________
Lenguaje ensamblador del microprocesador _____________________________________________
Configuracin del microprocesador ____________________________________________________
Proceso de diseo de un programa ____________________________________________________

10
33
42
45
46
58
59
60

Actividades____________________________________________________________________________ 67
Resumen ______________________________________________________________________________ 68
Evaluacin _____________________________________________________________________________ 69

UNIDAD 2
MICROCONTROLADORES
Objetivos de la unidad
2.1
2.2
2.3
2.4
2.5

Microcontroladores____________________ _____________________________________________
Proceso de instalacin del microcontrolador______________________________________________
Programacin del microcontrolador ___________________________________________________
Configuracin de microcontroladores___________________________________________________
Proceso de carga de programa ________________________________________________________

71
72
86
88
116
118

Actividades_____________________________________________________________________________ 124
Resumen ______________________________________________________________________________ 125
Evaluacin _____________________________________________________________________________ 126
Glosario_______________________________________________________________________________ 127
Anexo ________________________________________________________________________________ 129
Bibliografa_____________________________________________________________________________ 143

MICROPROCESADORES Y MICROCONTROLADORES

NOMBRE DE LA UNIDAD (palatino, bold, 8 pts, JI)

MICROPROCESADORES Y MICROCONTROLADORES

NOMBRE DE LA UNIDAD (palatino, bold, 8 pts, JD)

OBJETIVO
DEL MANUAL
El estudio del contenido de este manual contribuir a
que usted adquiera las competencias para instalar,
parametrizar, configurar y programar sistemas digitales
con microprocesadores y microcontroladores, de
acuerdo a especificaciones tcnicas.

MICROPROCESADORES Y MICROCONTROLADORES

NOMBRE DE LA UNIDAD (palatino, bold, 8 pts, JI)

MICROPROCESADORES Y MICROCONTROLADORES

NOMBRE DE LA UNIDAD (palatino, bold, 8 pts, JD)

PRESENTACIN

l presente manual de microprocesadores y


microcontroladores, constituye material de apoyo para el
paquete didctico del mismo nombre, cuyo contenido se
defini de acuerdo a las bases normativas del plan establecidas
por grupos de trabajo conformado por personal tcnico de
INTECAP.

El contenido de este manual est dividido en dos unidades, la primera unidad se le


dedica a los CI microprocesadores, incluyendo como temas principales: la
instalacin de circuitos con microprocesadores, de acuerdo a especificaciones
tcnicas, caractersticas tcnicas proporcionadas por el fabricante, lenguaje
ensamblador del microprocesador, configuraciones del microprocesador, proceso
de grabacin en un microprocesador.
La segunda unidad, tiene como objetivo estudiar los microcontroladores, desde
la diferencia que existe entre un microprocesador y un microcontrolador, hasta la
versatilidad que cada uno tienen en el momento de ser aplicado, segn sea el caso,
ya que por lo general se utilizan microcontroladores en sistemas industriales que se
dediquen a realizar eventos repetitivos sin necesidad de modificaciones continuas
tanto en el hardware como en el software. Adems, es importante notar que un
microcontrolador es un elemento ms compacto, ya que un microprocesador
requiere de ms elementos perifricos para su funcionamiento, mientras que un
C la mayor parte del trabajo lo realiza el mismo IC.
Por ello se consideran importantes temas como el proceso de instalacin de los
C, configuracin de los C, lenguaje de programacin de los C, proceso de
cargar y descargar un programa en el C.
Por lo que al final, se pretende que el participante tenga la capacidad de aplicar los
conocimientos de P y C en actividades que contribuyan al mejoramiento o
conversin de sistemas manuales a sistemas automticos de una industria o en el
medio cotidiano.
Tambin se advierte que no todos los trminos en ingls sern traducidos, ya que
los mismos son nombres tcnicos que obedecen a estndares preestablecidos por
las normas ANSI o DIN, Sin embargo, se explicar la interpretacin de dichos
trminos en espaol.

MICROPROCESADORES Y MICROCONTROLADORES

NOMBRE DE LA UNIDAD (palatino, bold, 8 pts, JI)

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

UNIDAD 1

MICROPROCESADORES

El estudio del contenido de esta unidad,


contribuir a que usted adquiera las
competencias para:
Instalar circuitos con microprocesadores,
de acuerdo a especificaciones tcnicas.
Programar microprocesadores, de
acuerdo a especificaciones tcnicas

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

1.1 MICROPROCESADORES

Figura 1 Microprocesador Intel 80X386


Figura 2 Estructura interna de un microprocesador

1.1.1 DEFINICIN
Un microprocesador es un dispositivo electrnico
digital de alta integracin capaz de realizar operaciones
aritmticas y lgicas en un orden de pasos establecido
por un programa. El microprocesador es el cerebro
de las computadoras industriales y personales que
permite la realizacin de millones de operaciones en
un segundo. Esto se logra gracias a la alta escala de
integracin que se ha logrado hasta el momento, que
hace posible integrar millones de transistores en un
solo encapsulado. El microprocesador es la parte ms
importante de computador aunque este necesita de
otros dispositivos perifricos para realizar sus
funciones, tales dispositivos son memorias, puertos de
entrada y salida de datos, coprocesadores, entre otros,
que se deben conectar al microprocesador para que
este cumpla su funcin.
Un ejemplo de aplicacin es la calculadora porttil,
note que en la calculadoras realizan un cantidad de
operaciones matemticas en distintos niveles, hoy en
da la calculadoras son capaces de graficar funciones
muy complejas y asimismo almacenarlas en su
memoria. Por lo que todo esto es realizado por un
microprocesador conjuntamente con sus elementos
perifricos.

10

Existen una serie de fabricantes de microprocesadores,


como IBM, Intel, Zilog, Motorola, Cyrix, AMD.
A lo largo de la historia y desde su desarrollo inicial,
los microprocesadores han mejorado enormemente
su capacidad, desde los viejos Intel 8080 que poseen
6000 transistores en su interior y velocidad de
procesamiento de 2 MHz, hasta los recientes Intel
Pentium 4 con 125 millones de transistores y
velocidades de procesamiento de 3.6 GHz o
superiores.
En la tabla 1 se puede encontrar una comparativa del
desarrollo de los microprocesadores Intel a lo largo
de los aos, donde se puede observar que las
dimensiones se hacen cada vez ms pequeas a
medida que la escala de integracin se hace ms
grande. Un ejemplo de esto se puede observar en la
figura 2 donde se muestra una fotografa de las capas
de conexin superiores de un microprocesador Intel
80486 DX2 con una magnificacin de 200x. Finalmente
lo ms importante es utilizar el uP mas adecuado para
la aplicacin requerida, ya que puede ser de tipo
industria, comercial o en equipos de medicin o
control.

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

La longitud de palabra de los


microprocesadores ha ido
creciendo a travs de los aos,
desde los 4 bits del primer
microprocesador hasta los 32
bits de los microprocesadores
ms recientes.
En la figura 3 se muestra la
arquitectura interna de un
microprocesador bsico donde
se puede observar que existe
un bus de datos (Data Bus), que
puede ser de 4 bits hasta 32 bits
en los microprocesadores mas
recientes.

Tabla 1 Comparacin de microprocesadores


fabricados por la empresa Intel.

1.1.2 CRITERIOS
DE CLASIFICACIN
DE MICROPROCESADORES
Existen dos criterios principales para la clasificacin
de microprocesadores:
a. Longitud de palabra
b. Tecnologa de fabricacin.

Longitud de palabra

Se refiere al numero de bits que puede procesar


simultneamente un microprocesador y esta
determinada por su arquitectura, es decir, por el
tamao de los registros, de la ALU y de los buses
internos.

Figura 3 Arquitectura interna del microprocesador en bloques

Hoy en da los microprocesadores de 4 bits se


consideran obsoletos y los de 32 bits se consideran
para aplicaciones muy complejas. En la generalidad de
los casos se utilizan microprocesadores de 8 bits y de

MICROPROCESADORES Y MICROCONTROLADORES

11

MICROPROCESADORES

16 bits, los primeros son los ms usuales por haber


sido de ms temprana su aparicin y porque tienen
disponible un amplio soporte de programacin y
circuitera.
A continuacin se observan algunos de estos
microprocesadores:

Figura 7 - Microprocesador Intel Pentium 4 de 32 bits

b
Figura 4 - Microprocesador Intel C4004 de 4 bits

Tecnologa de fabricacin

Los primeros microprocesadores se implantaron con


tecnologa PMOS; sin embargo, actualmente la
tecnologa de fabricacin de microprocesadores ms
difundida es la NMOS. ltimamente se ha desarrollado
bastante la tecnologa CMOS para dispositivos de bajo
consumo de energa.

Figura 5 - Microprocesador AMD 8086 de 8 bits

PMOS Y NMOS (P-channel MOSFET, N-Channel


MOSFET) (MOSFET a canal P y MOSFET a canal N)
son tecnologas basadas en transistores de efecto de
campo que permiten escalas de integracin bastante
grandes, lo que los hace atractivos en la industria de
fabricacin de microprocesadores.
Los transistores NMOS son ms pequeos que los
PMOS, ms baratos y tcnicamente ms simples de
producir, por lo que son la eleccin de construccin
de muchos microprocesadores.

Figura 6 - Microprocesador Intel 80286 de 16 bits

12

La tecnologa MOS tiene la desventaja de consumir


mayor potencia que CMOS, por lo que ha sido
desplazada por esta que posee avances tcnicos cada
vez ms crecientes. En la siguiente figura se muestra
la construccin interna de un arreglo de 2 transistores
MOSFET.

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

a. Tecnologa RISC
(reduced instruction set computer)
Computadoras con un conjunto de instrucciones
reducido.
b. Tecnologa CISC
(complex instruction set computer)
Computadoras con un conjunto de instrucciones
complejo.
Figura 8 Construccin de los dispositivos MOS

CMOS (ingls: Complementary Metal Oxide


Semiconductor (Semiconductor complementario del
xido de metal), MOS Complementario es una
tecnologa utilizada para crear circuitos integrados,
como pueden ser compuertas lgicas, contadores,
microprocesadores, microcontroladores, etc. Consiste
bsicamente en dos transistores, uno PFET y otro
NFET como se puede observar en la figura siguiente.
De esta configuracin resulta el nombre.
Los chips CMOS consumen menos potencia que
aquellos que usan otro tipo de transistor.

Tecnologa RISC

Plantea un conjunto reducido de instrucciones, esto


significa que este tipo de microprocesadores cuenta
con unas pocas instrucciones para su programacin,
buscando reducir el nmero de ciclos de reloj de
ejecucin por cada una de ellas, hacindolas simples y
evitando instrucciones complejas. Se descarga la
responsabilidad de construir programas eficientes al
software y al compilador.
Ejemplos de estros microprocesadores son:
Procesadores Alpha
Power PC (Motorola/IBM)

Tecnologa CISC

Figura 9 Lgica bsica CMOS

1.1.3 TIPOS Y CARACTERSTICAS


Existen 2 tecnologas que definen los tipos de
microprocesadores de acuerdo a la forma en que se
maneja el conjunto de instrucciones que poseen:

Figura 10 Microprocesador interno con Tecnologa CISC

MICROPROCESADORES Y MICROCONTROLADORES

13

MICROPROCESADORES

Basado en un amplio repertorio de instrucciones.


Se aumenta la potencia del microprocesador a
costa de aumentar el tamao de las instrucciones,
y por tanto el nmero de ciclos de reloj que
precisan para ejecutarse.

se deben considerar tres reas principales a cubrir


en el diseo del procesador y estas son:
La arquitectura.
La tecnologa de proceso.

En esta arquitectura los programas vern


reducido el nmero de instrucciones mquina que
precisan para ser ejecutados por el
microprocesador o sea, se requieren menos
instrucciones para ejecutar un programa
determinado, pero estas instrucciones son ms
complejas y se ejecutan en un tiempo mayor.
Ejemplos de estos microprocesadores son:
Intel 80286, Intel 80386, 80486,
Procesadores AMD
Los microprocesadores con tecnologa RISC
poseen un conjunto de instrucciones pequeo,
que puede variar entre unas 30 instrucciones a
unas 150, mientras que un microprocesador tipo
CISC puede tener un conjunto de instrucciones
muy extenso y complejo.
La forma en que se manejan las instrucciones
internamente es diferente para estos dos tipos
de microprocesadores haciendo que tengan
ciertas ventajas y desventajas uno frente al otro.
Con tecnologas de semiconductores
comparables e igual frecuencia de reloj, un
procesador RISC tpico tiene una capacidad de
procesamiento de dos a cuatro veces mayor que
la de un CISC, pero su estructura de hardware
es tan simple, que se puede realizar en una
fraccin de la superficie ocupada por el circuito
integrado de un procesador CISC.
La meta principal es incrementar el rendimiento
del procesador, ya sea optimizando alguno
existente o se desee crear uno nuevo. Para esto

14

El encapsulado.
La tecnologa de proceso, se refiere a los
materiales y tcnicas utilizadas en la fabricacin
del circuito integrado, el encapsulado se refiere
a cmo se integra un procesador con lo que lo
rodea en un sistema funcional, que de alguna
manera determina la velocidad total del sistema.
Aunque la tecnologa de proceso y de encapsulado
son vitales en la elaboracin de procesadores ms
rpidos, es la arquitectura del procesador lo que
hace la diferencia entre el rendimiento de una
CPU (Central Process Unit, unidad central de
proceso) y otra.

1.1.4 PARTES Y
FUNCIONAMIENTO
En el diagrama siguiente se puede observar un
esquema bsico de la conexin de una
computadora muy sencilla pero con todos los
elementos que caracterizan cualquier
computadora; estos elementos son:

- Microprocesador
- Memoria (RAM, ROM, EEPROM, etc.)
- Decodificador de direcciones
- Seal de reloj
- Puertos de Entrada y Salida

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Figura 11 Conexin del microprocesador con sus perifricos

El microprocesador

Es el cerebro de la computadora, encargado de


gestionar toda la informacin de entrada y salida.
En la figura el microprocesador utilizado es el Z80 de
la firma Zilog, que es un microprocesador de 8 bits
dado que consta de 8 lneas de datos (D0 D7) y es
capaz de procesar simultneamente 8 bits de
informacin.

Este microprocesador es el encargado de realizar las


operaciones aritmticas y lgicas que dicta el programa
almacenado en la memoria externa (en este caso la
memoria EEPROM 28C64) y las ejecuta una a una en
una secuencia especifica. La rapidez de ejecucin de
las instrucciones del programa depende de una seal
de sincrona llamada reloj (Clock. Los datos manejados
por el microprocesador necesitan ser obtenidos del
mundo exterior y los resultados tambin necesitan ser
enviados de regreso hacia el exterior, y esto se logra a
travs de los puertos de entrada y salida de datos.

MICROPROCESADORES Y MICROCONTROLADORES

15

MICROPROCESADORES

El decodificador de direcciones

Esta compuesto por el integrado 74LS138 cuya funcin


es la de habilitar o deshabilitar los dispositivos
perifricos cuando lo requiera el microprocesador.
Cada dispositivo conectado al microprocesador a
travs del bus de direcciones tiene una direccin
asociada, y este integrado se encarga de decodificar la
direccin proveniente del microprocesador y habilita
el dispositivo apropiado.
Por ejemplo, si el microprocesador de la figura anterior
necesita leer un dato proveniente del puerto 03h,
entonces especificar la direccin 03h en el bus de
direcciones lo que har que el decodificador 74LS138
habilite su salida Y3 y deshabilite todas las dems, y de
esta manera pondr en funcionamiento solamente el
dispositivo conectado a su salida Y3.

Figura 13 Controladores de puertos

Figura 12 Decodificador 74138

Los puertos de entrada y salida de datos

Permiten la comunicacin con el mundo exterior, y es


aqu donde se conectan los teclados, pantallas,
punteros, impresoras, etc. Se obtienen en este caso
con la utilizacin de los integrados 74LS374 que
permiten el paso de informacin desde y hacia el
microprocesador, y estn bajo la orden del
decodificador de direcciones que les indica a cada uno
el momento en el que estos pueden mandar o recibir
la informacin. Tambin existen circuitos integrados
especficamente diseados para realizar las tareas del
manejo de los puertos, por ejemplo, para el
microprocesador Z80 se tienen el controlador de
puerto paralelo PIO (Parallel Input Output) y el
controlador de puerto serial SIO (Serial Input Output)
que se muestran a continuacin.

16

La seal de reloj (Clock)

Se obtiene de un oscilador o multivibrador astable,


capaz de proporcionar una seal peridica de una
frecuencia determinada, en este caso, el integrado
NE555 que produce un tren de pulsos peridico que
marcan el ritmo de trabajo del microprocesador,
cuanto ms alta sea la frecuencia de estos pulsos ms
rpido realizar las operaciones el microprocesador.
El microprocesador por su parte tiene una frecuencia
de trabajo limitada la cual no debe sobrepasarse
(Overclocking) pues provocar que ste se
sobrecaliente y en algunos casos se destruya, adems
de provocar mal funcionamiento. Es preciso mencionar
que el microprocesador puede trabajar a diferentes
frecuencias siempre y cuando no sobrepasen las
especificaciones del fabricante.
Si es necesario realizar operaciones con tiempos muy
precisos se debe optar por osciladores con cristal que
ofrecen frecuencias de trabajo muy estables y precisas.
A continuacin se observan ejemplos de estos
osciladores a cristal de 4 terminales.

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Figura 14 Osciladores a Cristal

En la siguiente figura se detalla la forma de conectar


estos osciladores a cristal de 4 terminales al
microprocesador. (la Terminal 1 usualmente no se
conecta)

La memoria

Es un dispositivo electrnico capaz de almacenar


la informacin durante un tiempo determinado.
El microprocesador depende de ella, pues necesita
almacenar los datos de los procesos que realiza y los
programas para los cuales est diseada.
La unidad de memoria mnima que existe es el bit, un
arreglo de 8 bits forman un byte, y se pueden utilizar
los mltiplos Kilo byte, Mega byte, Giga byte, Tera byte,
etc. Tambin se utilizan las unidades Word que equivale
a 2 bytes y doble Word equivalente a 4 bytes de
informacin.
Variedad de parmetros que permiten caracterizar o
clasificar una memoria, estos son:

Figura 15 Conexin del


oscilador a cristal con el
microprocesador

Figura 16 Memoria EPROM

a.

Naturaleza fsica del almacenamiento

b.

Modo de acceso a la informacin

c.

Retencin de la informacin

d.

Tiempo de acceso

Naturaleza fsica del almacenamiento:


Se puede almacenar
informacin utilizando
materiales semiconductores,
materiales magnticos o de
forma ptica, como se muestra
en los siguientes ejemplos

MICROPROCESADORES Y MICROCONTROLADORES

17

MICROPROCESADORES

Almacenamiento a semiconductor:
- Memorias ROM
- Memorias RAM
- Memorias FLASH
- Memorias USB

Modo de acceso a la informacin:

Existen 2 formas de acceder a la informacin


almacenada en una memoria electrnica:
- Modo de acceso Secuencial: en este modo la
informacin se graba o lee en una secuencia de forma,
que para acceder a un byte de informacin se
requiere leer o escribir en las posiciones previas.
Ejemplos de este tipo de memoria son las unidades
de cinta y las memorias FIFO.

Figura 17 Dispositivos de memoria a semiconductor

Almacenamiento con materiales magnticos


- Unidades de cinta
- Unidades de Disco
(Discos Duros)

- Modo de acceso Aleatorio: en este modo se puede


acceder a cualquier byte sin condicin de acceder a
bytes previos. Ejemplos de este tipo de memorias
son la memoria RAM, ROM, DVD, Discos
magnticos. Este modo es especialmente importante
pues es el ms utilizado en los sistemas modernos y
por ello se entrar un poco ms en detalle.
A continuacin se muestra la estructura lgica de una
memoria a semiconductor como la RAM, ROM,
EEPROM, etc.

Figura 18 Disco duro

Almacenamiento con elementos pticos:


- CDROM
(Disco compacto de slo lectura)
- DVDROM
(Disco compacto de video de slo lectura)

Figura 19 Lector de CDROM

18

Figura 20 Estructura lgica de


una memoria formada por celdas
de informacin

Puede observarse que la estructura tiene forma de


matriz dividida por filas y columnas. Cada cuadrito
representa 1 bit de informacin que puede tener
solamente 2 valores: 1 0 y se le llama celda. Cada
celda es nica y posee una ubicacin determinada por
una direccin y una posicin de dato. A continuacin
se muestran las ubicaciones de 3 celdas.

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Por ejemplo, suponga que se tiene la memoria anterior


llena con datos y se accede a la direccin 5, lo que
obtendr en el bus de datos (D7 D0) ser: 01100101
respectivamente. Note que D0 representa el bit
menos significativo LSB y D7 el bit ms significativo MSB.

Figura 21 Cada celda contiene 1 BIT de informacin.

Es necesario darse cuenta que para cada direccin hay


8 celdas disponibles que son D0, D1, D2, D3, D4, D5,
D6 y D7 (vea la siguiente figura) de tal forma que al
referirnos a una direccin en este caso se dispondrn
de 8 bits de informacin dados por D0 a D7.
A este conjunto de celdas formado por D0 a D7 se le
llama bus de datos.

Figura 22 la direccin 5 de la memoria est conformada por 8 bits

Figura 23 Memoria con datos en cada celda

Ahora veamos una


memoria real:
Observe que posee 8
lneas de datos
formadas por D0 a
D7donde se obtienen
los valores de las
celdas internas de la
memoria. Tambin
posee un bus de
direcciones formado
por A0 A12 que
permite ingresar la
direccin deseada de
forma binaria, as por
Figura 24 Distribucin de los pines
de conexin de in uP (Pinout) de
ejemplo si se quiere
una memoria estndar
acceder a la direccin
5 de memoria tendramos que establecer los niveles
lgicos 0000000000101 en las lneas A12 A0
respectivamente y obtendramos el contenido de las
8 celdas pertenecientes a esta direccin en el bus de
datos (D7 D0)
Las lneas adicionales de esta memoria sirven para
establecer la lectura, escritura de datos y habilitacin
del chip.

MICROPROCESADORES Y MICROCONTROLADORES

19

MICROPROCESADORES

Retencin de la informacin:

Se refiere al tiempo y las condiciones en


que el dispositivo de memoria es capaz
de retener la informacin guardada. Se
pueden dividir en dos grupos que son, las
memorias voltiles y no voltiles.
- Memorias voltiles: estas memorias
pierden la informacin almacenada
transcurrido cierto tiempo o si se
desconecta la alimentacin de la
memoria. Son utilizadas para almacenar
datos que son necesarios slo
momentneamente y que se pueden
descartar despus de algn proceso.
Ejemplos de estas memorias son la RAM,
DRAM.
- Memorias no voltiles: en estas memorias la
informacin almacenada perdura en el tiempo
independientemente de la alimentacin del
dispositivo, o en otras palabras, estas memorias
no pierden su informacin al ser desconectadas
de la alimentacin. Son utilizadas para guardar
datos o programas que es necesario mantener an
cuando se apague el equipo. Ejemplos de estas
memorias son la ROM, EPROM, EEPROM, Discos
Duros.

Tiempo de acceso:

Mide el intervalo de tiempo que transcurre desde


que se solicita un dato a la memoria y sta lo
proporciona. Estos tiempos generalmente son muy
cortos pero en procesos que involucran gran
cantidad de datos estos tiempos son crticos.
Los tiempos ms cortos los tienen las memorias a
semiconductor como la SRAM (cache), DRAM,
ROM, y los tiempos de acceso ms alto lo tienen las
unidades magnticas y pticas.

20

Figura 25 Caracterstica coste capacidad para Las


diferentes memorias.

MEMORIA RAM:
De las siglas en ingls Random Acces Memory, que
significan Memoria De Acceso Aleatorio, tienen como
caracterstica ser voltiles o sea que son capaces de
almacenar la informacin solamente cuando estn
alimentadas, y pierden la informacin al desconectarse
del suministro de energa. Estas memorias permiten
la escritura y la lectura de su informacin y tienen la
caracterstica de ser ms rpidas que cualquier otro
tipo de memoria.
Existen dos tipos principales de memorias RAM, que
son la RAM Dinmica o DRAM y la RAM Esttica o
SRAM:
DRAM (del ingls Dynamic Random Acces Memory,
memoria de acceso aleatorio dinmico) es el tipo
de memoria RAM ms usado. Se compone de
transistores y condensadores que han de ser
actualizados mediante la corriente elctrica cada
pocos milisegundos peridicamente para que los
datos permanezcan y no se pierda la informacin.
A continuacin se muestra una figura de la
arquitectura interna de la memoria DRAM,
observe que el dispositivo de almacenamiento de
memoria est formado por un capacitor que
necesita ser cargado (refrescado) peridicamente.

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

La memoria SRAM tambin es voltil, queriendo


decir con esto, que cuando se corta el suministro
de corriente, los datos almacenados se pierden.
Debido al alto coste de fabricacin de la SRAM y a
su alta velocidad, su uso ms comn est en la
memoria cach de los ordenadores.
A continuacin se muestra la arquitectura interna
de una memoria SRAM, note que sus elementos
de memoria no son condensadores, por lo que
no necesita ser refrescada peridicamente.

Figura 26 Arquitectura Interna y forma fsica de la


memoria RAM Dinmica

SRAM (del ingls Static Random Access Memory,


Memoria Esttica de Acceso Aleatorio) Es un tipo
de memoria RAM ms rpida que la DRAM, y tiene
la caracterstica que no necesita ser actualizada o
refrescada (Refresh) La memoria SRAM tiene la
desventaja de ser muy cara, por lo que se suele
usar con ms frecuencia la memoria DRAM la cual
es ms barata y ms pequea, aunque tambin
ms lenta.

Figura 27 Forma fsica de la


memoria RAM Esttica

Figura 28- Arquitectura Interna de la memoria RAM Esttica

MEMORIA ROM:
Del ingls Read Only Memory, en castellano: Memoria
de slo lectura, es un tipo de memoria que en
condiciones de trabajo normales no permite la
escritura de datos en su interior, pero si permite su
lectura. En los sistemas con microprocesadores estas
memorias guardan datos y programas que se necesitan
permanentemente, otra caracterstica es que estas
memorias no son voltiles, lo que significa que no
pierden su informacin al ser desconectadas del
suministro de energa.
A continuacin se muestra la forma fsica de un chip
de memoria ROM.

MICROPROCESADORES Y MICROCONTROLADORES

21

MICROPROCESADORES

Figura 29 Memoria EPROM

Existen varios tipos de memorias ROM, entre las ms


importantes podemos destacar las siguientes:
- Memoria PROM
- Memoria EPROM
- Memoria EEPROM
- Memoria FLASH
Memoria PROM: es el acrnimo de
Programmable Read-Only Memory (ROM
programable) Es una memoria digital donde el
valor de cada bit depende del estado de un fusible
(o antifusible), que puede ser quemado una sola
vez. Por esto la memoria puede ser programada
(pueden ser escritos los datos) una sola vez a travs
de un dispositivo especial, un programador PROM.

Memoria EPROM: son las siglas de Erasable


Programmable Read-Only Memory (ROM borrable
programable) Es un tipo de chip de memoria ROM
inventado por el ingeniero Dov Frohman que
retiene los datos cuando la fuente de energa se
apaga. En otras palabras, es no voltil. Est formada
por celdas de FAMOS (Floating Gate AvalancheInjection Metal- Oxide Semiconductor) o
transistores de puerta flotante. Cada uno de ellos
viene de fbrica sin carga, por lo que es ledo como
un 1 (por eso una EPROM sin grabar se lee como
FF en todas sus celdas) Se programan mediante
un dispositivo electrnico que proporciona voltajes
superiores a los normalmente utilizados en los
circuitos electrnicos. Las celdas que reciben carga
se leen entonces como un 0. Una vez programada,
una EPROM se puede borrar solamente
mediante exposicin a una fuerte luz ultravioleta.
Esto es debido a que los fotones de la luz excitan
a los electrones de las celdas, provocando que se
descarguen. Las EPROMs se reconocen fcilmente
por una ventana transparente en la parte alta del
encapsulado, a travs de la cual, se ve el chip de
silicio y que admite la luz ultravioleta durante el
borrado. A continuacin se muestra la forma fsica
de un chip de memoria EPROM.

Estas memorias son utilizadas para grabar datos


permanentes en cantidades reducidas.
Las memorias PROM han venido utilizndose
como generadores de funciones, normalmente en
conjuncin con un multiplexor.
A continuacin se muestra la forma fsica de una
PROM.
Figura 31 Memorias EPROM

Figura 30 Memoria PROM

22

Memoria EEPROM: son las siglas de electricallyerasable programmable read-only memory (ROM
programable y borrable elctricamente) Es un tipo
de memoria ROM que puede ser programado,
borrado y reprogramado elctricamente, a
diferencia de la EPROM que ha de borrarse
mediante rayos ultravioleta. Aunque una EEPROM
puede ser leda un nmero ilimitado de veces, slo

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

puede ser borrada y reprogramada entre 100,000


y 1,000,000 de veces. En la actualidad estos
dispositivos suelen comunicarse serialmente
mediante protocolos como IC, SPI y Microwire,
y reciben el nombre de EEPROM Serial o
SEEPROM. En otras ocasiones se integra dentro
de chips como microcontroladores y DSPs para
lograr una mayor rapidez. La memoria flash es una
forma avanzada de EEPROM creadas por Intel. A
continuacin se muestra la forma fsica de dichas
memorias.

1.1.5 DIFERENCIA ENTRE


EL MICROPROCESADOR
Y MICROCONTROLADOR
Un microprocesador est basado en un sistema
abierto que permite configurar la cantidad de memoria,
la cantidad de puertos de entrada/salida, la velocidad
de procesamiento, etc., y permite tambin poder
expandir o cambiar dichas prestaciones fsicamente.
Los pines de un microprocesador sacan al exterior las
lneas de sus buses de direcciones, datos y control,
para permitir conectarle con la Memoria y los Mdulos
de E/S que se deben implementar fsicamente al
exterior del microprocesador. Se dice que un
microprocesador es un sistema abierto porque su
configuracin es variable de acuerdo con la aplicacin
a la que se destine.

Figura 32 Memorias EEPROM

Memoria FLASH: es una forma evolucionada de


la memoria EEPROM que permite que mltiples
posiciones de memoria sean escritas o borradas
en una misma operacin de programacin
mediante impulsos elctricos, frente a las
anteriores que slo permite escribir o borrar una
nica celda cada vez. Por ello, flash permite
funcionar a velocidades muy superiores cuando
los sistemas emplean lectura y escritura en
diferentes puntos de esta memoria al mismo
tiempo. En la figura a continuacin se muestran
dos memorias FLASH de diferentes capacidades
(izquierda) y una memoria USB compuesta
tambin de memoria FLASH (derecha)

Figura 33 Forma Fsica de las memorias FLASH.

Figura 34 - Estructura de un sistema abierto


basado en un microprocesador.

La disponibilidad de los buses en el


exterior permite que se configure a la
medida de la aplicacin. La memoria y
dispositivos de control deben conectarse
externamente. Un microcontrolador por
otra parte es un sistema cerrado que
contiene internamente memoria ROM,
memoria RAM, dispositivos de entrada y
salida analgica y digital, entre otros, y
estas prestaciones no pueden ser
modificables ya que se encuentran en
el interior del chip.

MICROPROCESADORES Y MICROCONTROLADORES

23

MICROPROCESADORES

Los fabricantes ofrecen entonces una variedad


bastante amplia de microcontroladores con
diferentes prestaciones que se acoplen a una
aplicacin en particular

Figura 36 Diagrama a bloques del interior de un


microprocesador

Figura 35 - El microcontrolador es un sistema cerrado.

To d a s l a s p a r t e s d e l c o m p u t a d o r e s t n
contenidas en su interior y slo salen al exterior
las lneas que gobiernan los perifricos.

Se pueden reconocer los siguientes bloques internos


ms importantes de un microprocesador:
- Unidad aritmtica y lgica (ALU)
- Registros de propsito general
- Registros de propsito especial

1.1.6 ARQUITECTURA DEL


MICROPROCESADOR
Diagrama de bloques y Arquitectura
Interna de un Microprocesador
Todos los microprocesadores existentes tienen
una estructura bsica similar. La arquitectura
interna de la mayor parte de microprocesadores
segn lo visto anteriormente es de tipo CISC.
En la figura 7 se presenta el diagrama de bloques
de la estructura interna de un microprocesador
de 8 bits, dicha estructura bsica se puede
encontrar en los microprocesadores ms
avanzados como los de 16 y 32 bits.

24

- Banderas (Flags)
- Registro de instrucciones
- Unidad de tiempo y control
La unidad aritmtica y lgica ALU:
Es la seccin dentro de la CPU encargada de
hacer todas las operaciones aritmticas y lgicas.
Las operaciones aritmticas son la suma, resta,
multiplicacin, divisin, etc. Las operaciones lgicas
son por ejemplo la operacin AND, OR, XOR, NOT,
etc. Uno de los operandos se encuentra en el
acumulador (registro A), y el otro proviene
normalmente de la memoria o de otro registro.
El resultado se almacena en el acumulador y el grupo
de FLIP-FLOP denominados Flags cambia de estado
segn las caractersticas del resultado.

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Figura 37 Diagrama a bloques del Microprocesador z80

MICROPROCESADORES Y MICROCONTROLADORES

25

MICROPROCESADORES

Registros:
Los registros internos del
microprocesador son espacios de
memoria que sirven para guardar
datos momentneamente de las
operaciones que se realizan.
Estos registros son de memoria
voltil, de manera que al quitar el
suministro de energa se borra su
contenido.
Existen varios tipos de registros
internos del microprocesador
que se detallan a continuacin.
Registros de
propsito general:
El Z80 posee 14 registros de
propsito general de 8 bits
denominados A, B, C, D, H, L y
A, B, C, D, H , L. Estos
registros estn destinados para
almacenar los datos que el
microprocesador necesitar para
hacer sus operaciones y son
accesibles por el operador a travs del programa.
Los 14 registros estn divididos en 2 sets.
Solamente un set de siete registros y el
correspondiente registro de Flags F pueden estar
activos al mismo tiempo. Una instruccin especial
selecciona el set A y F o el set A y F mientras que
otra instruccin selecciona B, C, D, E, H, L o C, D,
E ,H L.

Figura 38 Set de registros del microprocesador Z80

Flags: (registro de estado o registro de banderas)


El registro de banderas o Flags es un registro interno
del microprocesador que tiene el propsito de dar a
conocer las cualidades del resultado de las
operaciones realizadas por el microprocesador, por
ejemplo, si el resultado de una operacin es igual a
cero, la bandera Z (Flag Z) de este registro lo indicar
con su estado lgico. A continuacin se enumeran
los bits que componen el registro de banderas:

El programador puede cambiar rpidamente de un


conjunto de registros de propsito general a otro.
Esto proporciona una mayor capacidad de
almacenamiento en registros. El acceso a datos
presentes en registros de la CPU es mucho ms
rpido que el acceso a datos en memoria.
Los registros pueden agruparse de a pares formando
registros de 16 bits. stos son los pares BC, DE y HL
(sus equivalentes primas tambin pueden agruparse)

26

Figura 39 Registro de banderas

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Flag de Cero (Z)


Este bit toma el valor 1 si el resultado de una operacin
realizada por la ALU es de cero. Por ejemplo, si se realiza
la operacin 3 3, el resultado de esta operacin ser
0, por lo que la bandera Z lo indicar con un estado
lgico de 1. Esta bandera se encuentra en el bit 6 del
registro Flags.
Flag de signo (S)
Esta bandera indica el signo del resultado de una
operacin realizada por la ALU y toma el valor 1 s el
resultado de la operacin es negativo y 0 s el resultado
es positivo. Es el bit siete del registro Flags.
Flag de Carry (C)
Este flag es afectado por las instrucciones de
desplazamiento y es puesto en 1 0 segn el valor del
bit desplazado. Tambin es afectado por las operaciones
aritmticas cuando stas provocan acarreos. Este flag
se encuentra en la posicin del bit cero.
Flag de Paridad y overflow (P/V)
En el caso de paridad, se pone en 1 si el resultado de
una operacin posee un nmero par de unos.
Cuando el flag P/V se usa para representar overflow, el
flag se pone en 1 si ocurre un overflow o desbordamiento
despus de una operacin aritmtica. Este flag se
encuentra en la posicin del bit 2.
Flag H y N:
Son dos banderas que el Z80 usa para las operaciones
BCD. H representa el rebalse o
desbordamiento
que
genera
considerando los cuatro bits menos
significativos del resultado y N es el flag
de resta, el cual se activa para indicar
si la ltima instruccin ejecutada fue
suma o resta.
En el caso general, una instruccin de
resta coloca en 1 el flag N y una
instruccin de suma lo coloca en 0. Los
Flags H y N se encuentran en la
posicin de los bits 4 y 1 del registro
de banderas respectivamente.

Registros de propsito especial


Contador de programa (Program Counter)
Es un registro de 16 bits que indica la direccin de la
memoria ROM donde se encuentra la prxima
instruccin a ejecutar. Las instrucciones del Z80 pueden
contar de uno, dos, tres o cuatro bytes.
Puntero de Pila (Stack-Pointer)
Es un registro de 16 bits que indica la direccin de una
memoria RAM externa denominada Stack. El objetivo
de esta rea de memoria es proporcionar un medio de
almacenamiento temporal de los registros del usuario,
registro de Flags y del program Counter. La provisin de
Stack es fundamental para operaciones tales como los
llamados a sub-rutinas e interrupciones.
Registros ndices IX e IY
Estos registros son de 16 bits, diseados para permitir
un direccionamiento indexado en los programas del
Z80. Cuando se ejecuta una instruccin en un modo
de direccionamiento indexado, se usa uno de los dos
registros ndices para calcular la direccin del operando.
Registro de interrupciones I
Es un registro de 8 bits que puede ser cargado para
especificar el byte ms significativo de una direccin de
memoria. El byte menos significativo es proporcionado
por el dispositivo que solicita la interrupcin.
Registro de refresh de memoria R
Es un registro especial diseado para proporcionar un
refresh automtico de las memorias RAM dinmicas.

Figura 40 Registros ndice del Z80

MICROPROCESADORES Y MICROCONTROLADORES

27

MICROPROCESADORES

Registro de instrucciones:
El registro de instrucciones tiene por misin almacenar
el cdigo de operacin de la instruccin leda desde
memoria. Este cdigo es descodificado y con esta
informacin se dirigen todos los micro-pasos.
La unidad de tiempo y control:
Su objetivo es mantener la secuencia adecuada y el
control de todas las operaciones de la CPU. Atiende
y responde a todas las seales externas.
Arquitectura externa
de un microprocesador

Figura 42 Conjunto de lneas del microprocesador


Z80.

Bus de direcciones
El bus de direcciones est formado por 16 lneas
que van desde la lnea A0 hasta la lnea A15.
Estas lneas poseen 3 estados (Alto, bajo y Alta
Impedancia), de modo que cuando el bus de direcciones
est inactivo, ellos se encuentran en un estado de alta
impedancia.
Cuando el procesador maneja dispositivos de I/O (Input /
Output , Entrada /Salida), las 8 lneas menos significativas
de este bus, contienen la direccin del dispositivo, la cual
puede tener un valor entre 0 y 255.
Figura 41 - Arquitectura externa del microprocesador Z80

En la figura anterior se muestra la distribucin de


terminales del microprocesador Z80 de 8 bits, se dice
que es de 8 bits dada la cantidad de lneas de datos
que posee (D0 D7) En esta distribucin se pueden
clasificar los siguientes grupos de terminales llamados
buses:
- Bus de direcciones (Address Bus)
- Bus de datos (Data Bus)
- Buses de control (CPU Bus Control,
System Control)
- Lneas de alimentacin y reloj.

28

Por otro lado, las lneas menos significativas de este bus


contienen, durante un lapso en ejecucin de cada
instruccin, el valor presente en el registro de Refresh de
memoria R.
Bus de datos (Data Bus)
El bus de datos est formado por 8 lneas que van desde
la lnea D0 a la lnea D7. Este bus es bidireccional,
permitiendo la transferencia de informacin desde la
CPU haca la memoria o dispositivos de I/O y viceversa.
Es tambin un bus de 3 estados.

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Alimentacin
El microprocesador Z80 requiere solamente de 2 lneas
de alimentacin 0 y 5 V, con un margen de 5% y consume
una corriente mxima de 200 mA.
Seales de Reloj
El Z80 requiere solamente una seal de reloj.
La frecuencia de esta seal para el Z80 es de 4 Mhz.

Las seales RD y WR indican a la memoria si la CPU


efectuar una operacin de lectura o escritura.
La seal RFSH no est asociada con la operacin normal
de la memoria sino que se usa solamente con memoria
dinmica. Las memorias dinmicas requieren que se
refresque peridicamente la informacin almacenada
antes que se degrade.

Seales de control
Control de los buses
La CPU posee dos seales asociadas con el control de los
buses de direccin y datos. Estas seales son la seal de
entrada BUSRQ y la seal de salida Busak.
La seal BUSRQ es generada por un dispositivo externo
para obtener el control de los buses y realizar una
operacin de acceso directo a memoria o DMA (Direct
Memory Access) Esta operacin es importante para poder
acceder a la memoria sin necesidad de gestionar el
microprocesador con el objeto de agilizar la manipulacin
de informacin.
Cuando un dispositivo externo solicita el control de los
buses colocando en 0 la lnea BUSRQ, el procesador
concluye la instruccin que estaba ejecutando y responde
mediante la seal de reconocimiento BUSAK.
Colocando la seal de salida Busak en 0, el procesador
informa al dispositivo externo que el bus de direccin, el
bus de datos y las seales de control de salida se
encuentran en estado de alta impedancia y en
consecuencia, se encuentran libres para ser controladas
por dicho dispositivo.
Control de la memoria
El Z80 posee 4 seales relacionadas con las operaciones
de control de la memoria. Ellas son las seales MREQ,
RD, WR y RFSH.
La seal MREQ es una seal de 3 estados que se activa
en 0 indicando que el bus de direcciones contiene una
direccin vlida.

Tabla 2 Estados lgicos asociados a la lectura y escritura de memoria

Control de I/O (Entrada / Salida)


La CPU usa la seal IORQ para informar a los
dispositivos de I/O (Entrada / Salida) que los 8 bits menos
significativos del bus de direcciones contienen una
direccin de I/O vlida.

Tabla 3 Estados lgicos asociados a la lectura y


escritura de puertos

Control de las Interrupciones


El microprocesador Z80 posee dos lneas de entrada a
travs de las cuales un dispositivo externo puede solicitar
la interrupcin del programa que se est ejecutando y la
ejecucin de una rutina que maneje dicha interrupcin.
Estas lneas son la NM I y INT.
Seales Miscelneas
En este grupo se encuentran las seales M1', RESET,
WAIT y HALT. La seal RESET es una seal de entrada a
la CPU y que se activa (se coloca en 0) para efectuar una
operacin de reset general. Esta seal es puesta en cero
en los microcomputadores que usan este
microprocesador, inmediatamente despus que se aplica
la energa y cada vez que s resetea el sistema.

MICROPROCESADORES Y MICROCONTROLADORES

29

MICROPROCESADORES

Cuando se activa la seal RESET, las interrupciones


quedan en modo 0, los registros R e I quedan tambin
en cero y el Program Counter carga la direccin 000H.
La seal WAIT es una seal asociada con memorias o
dispositivos de I/O lentos. Mientras, la seal Wait est
en cero, la CPU no hace nada esperando la respuesta
de la memoria o del dispositivo de I/O lento.
Finalmente, la seal HALT es una seal que se activa
(se pone en cero) cuando se ejecuta una instruccin
HALT.
Cuando el microprocesador est en estado HALT realiza
solamente instrucciones NOP (No operation) para
asegurar el adecuado refresh de memoria. Se puede salir
de este estado slo mediante interrupciones.

1.1.7 CONSERVACIN
Para conservar el equipo con microprocesadores se
deben tener siempre en cuenta los valores de trabajo
y almacenamiento especificados en las hojas de
datos y manuales de usuario del microprocesador.
Estos valores se pueden resumir en las tablas
proporcionadas por los fabricantes, donde se tabulan
los valores mximos, mnimos y tpicos de operacin.
Operaciones ms all de estas especificaciones pueden
causar desde un mal funcionamiento hasta
la destruccin completa de los dispositivos.
En la siguiente figura se muestran los valores mximos
para el microprocesador Intel 80386, obtenida de la
hoja de datos del fabricante. Observe por ejemplo,
que las temperaturas de almacenamiento son de un
mnimo de -65 oC hasta un mximo de 150 oC.

Figura 43 Hoja de especificaciones elctricas de microprocesadores

30

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

1.1.8 MEDIDAS DE SEGURIDAD


Existen varios factores que deben tomarse en cuenta
al momento de realizar o instalar circuitos con
microprocesadores:
Alta frecuencia y emisiones
electromagnticas EMI:
Los sistemas con microprocesadores trabajan a
muy altas frecuencias, produciendo emisiones
electromagnticas que pueden afectar el
funcionamiento de otros equipos que se
encuentren alrededor.
Para evitar estos efectos, es necesario blindar
el circuito utilizando un chasis de materiales
metlicos que cubran completamente toda el
rea alrededor de las tarjetas con
microprocesadores.
Este chasis debe estar debidamente aterrizado
de forma que cualquier interferencia producida
por el microprocesador sea absorbida por el
chasis mismo y enviada a tierra.
El chasis tambin acta eliminando cualquier
emisin electromagntica externa que pueda
causar un mal funcionamiento en los circuitos
del microprocesador.

Temperatura y ventilacin:
Los sistemas con microprocesadores pueden
producir temperaturas muy elevadas que
pueden causar mal funcionamiento de los
dispositivos o dao permanente en los mismos,
para evitar esto es necesaria una correcta
ventilacin y el uso en algunas ocasiones de
disipadores de calor y ventiladores
especficamente diseados para los
microprocesadores, en caso de dar
mantenimiento a las tarjetas que contienen estos
dispositivos, debe observarse que los
ventiladores funcionen correctamente y que
stos estn limpios, lubricados y sin
atascamientos. Si se utiliza un disipador de calor
metlico debe aplicar silicona termoconductora
entre el microprocesador y el disipador.
La silicona termoconductora, tambin llamada
resina termoconductora o trmica, es una pasta
que facilita el contacto ntimo entre el micro y
el disipador, mejorando la transmisin de calor
al disminuir la llamada resistencia trmica de
contacto.
Este detalle es especialmente importante para
microprocesadores que por su diseo tienden
a producir mucho calor

Figura 44 Aplicacin de silicona termoconductora y disipadores de calor a los microprocesadores.

MICROPROCESADORES Y MICROCONTROLADORES

31

MICROPROCESADORES

El NEC reconoce que los equipos sensibles,


como sistemas microprocesadores,
computadores, etc. se puede afectar
adversamente con las corrientes que fluyen
en los conductores comunes de aterrizaje
de los equipos, como conduit, conductor o
barra verde, aceros de edificios, etc.
Para reducir tales problemas, el NEC en la
seccin 250-74, excepcin No. 4, permite
que se lleve un conductor de aterrizaje
aislado desde el receptculo hasta el punto
de aterrizaje del servicio de potencia
elctrica o al terminal aterrizado del sistema
derivado, separado para servicios de los
receptculos, este conductor se debe llevar
en el ducto, canaleta o conduit, con los
conductores que sirven la carga del
receptculo.

Figura 45 Forma correcta de ensamblar el


disipador Y el microprocesador al socket.

Figura 46 - Instalacin ideal de un sistema


microprocesador segn NEC seccin 250-74

Proteccin atmosfrica y conexin a tierra:


En la instalacin de todo equipo electrnico de esta
naturaleza es imprescindible la instalacin de tierra
fsica, para evitar daos tanto al equipo, como al
personal operativo.
Figura 47 - Instalacin alternativa de un sistema microprocesador.

32

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

1.2

CONEXINES DEL
MICROPROCESADOR

1.2.1 CONEXIN
DE MEMORIA
La conexin de dispositivos de memoria ROM y RAM
hacia el microprocesador se realiza a travs del bus
de direcciones (Address Bus), del bus de datos
(Data Bus) y algunas lneas del bus de control.
El microprocesador indicar en su bus de direcciones
que posicin de memoria requiere leer o escribir, esta
posicin de memoria es llamada direccin de memoria
y en ella se puede alojar una instruccin o un dato.

Como se ha estudiado anteriormente las instrucciones


de programa se deben guardar en una memoria no
voltil como la memoria ROM, EPROM, EEPROM,
etc. de tal forma que las mismas no se borren al quitar
el suministro de energa. Debido a que el
microprocesador Z80 al ser energizado siempre lee
primero la direccin de memoria 0000h es normal que
estas primeras posiciones de memoria estn
implementadas con memoria ROM que aloja el
programa principal del microprocesador, el resto de
memoria direccionable se puede implementar con
memoria ROM o RAM dependiendo de las necesidades
de diseo. El Z80 posee 16 lneas de direccin
(A0 A15) que permiten direccionar un mximo de
216 = 65536 posiciones de memoria o 65 kbytes. A
continuacin se puede observar como conectar varias
unidades de memoria al microprocesador.

Figura 48 Diagrama de conexin de microprocesador Z80 con memoria

MICROPROCESADORES Y MICROCONTROLADORES

33

MICROPROCESADORES

En la figura anterior se puede apreciar la conexin


de dos memorias EEPROM de 8kbytes cada una,
para hacer un total de 16kbytes de memoria
EEPROM.
Obsrvese que tanto el bus de direcciones
(A0-A12) como el de datos (D0-D7) se conectan
en paralelo para todas las memorias y se utilizan
las primeras lneas de direcciones para direccionar
(A0 A12) y las ltimas (A13 A15) para
decodificar y habilitar cada una de las memorias.
Por ejemplo, si el microprocesador trabaja con los
primeros 8kbytes de memoria, las lneas A13 - A15
se encontrarn en estado lgico 0, por lo tanto, el
decodificador 74138 habilitar su salida Y0
solamente, activando el primer chip de memoria
IC2 a travs de su terminal CE\ y ponindola en
alta impedancia el chip IC3 de memoria.

Cuando el microprocesador trabaje arriba de los


primeros 8kbytes de memoria, las lneas A13 A15
tendrn los estados lgicos 1, 0, 0 respectivamente,
haciendo que el decodificador de direcciones
habilite la memoria IC3 y deshabilite la memoria
IC2.
Note que la terminal OE\ de las memorias estn
conectadas a la Terminal RD\ del microprocesador
debido a que este ltimo activa RD\ y MREQ\
cuando realiza una lectura de memoria.
La terminal WR\ de la EEPROM s deshabilita
conectndola a VCC debido a que esta Terminal
slo sirve para grabacin de la EEPROM, luego de
lo cual stas slo sern de lectura.
En la figura a continuacin se muestra el diagrama
de tiempos para los ciclos de lectura de memoria
(Memory Read Cycle) y el ciclo de escritura de
memoria (Memory Write Cycle):

Figura 49 Diagrama de tiempos de lectura y escritura de memoria

34

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Ciclo de Lectura de memoria (Memory Read


Cycle): para leer una memoria el
microprocesador realizar los siguientes pasos
(observe la figura anterior):

Ciclo de Escritura de memoria (Memory


Write Cycle): para escribir en una memoria el
microprocesador realizar los siguientes pasos
(observe la figura anterior):

- Establece una direccin vlida en el bus de


direcciones (A0 A15)

- Establece una direccin valida en el bus de


direcciones (A0 A15)

- Activa a nivel bajo la Terminal MREQ (Memory


Request) indicando una operacin de memoria.

- Activa a nivel bajo la Terminal MREQ (Memory


Request) indicando una operacin de memoria.

- Activa a nivel bajo la Terminal RD indicando una


operacin de lectura

- Establece el dato valido a escribir en el bus de


datos (D0 D7)

- Por ltimo lee el dato presente en el bus de


datos (D0 D7) durante el tercer periodo de
reloj T3.

- Por ultimo activa a nivel bajo la Terminal WR


indicando que la informacin presente en el bus
de datos est lista para ser escrita
La implementacin
de la memoria
RAM esttica
o SRAM se
puede hacer
siguiendo el
m i s m o
esquema de
la ROM, salvo
incluyendo las
lneas WR y
WE\ para la
escritura de
datos como se
muestra en la
siguiente figura
donde se
implementa
un total de
4kbytes de
RAM en 2
bloques de
2kbytes cada
uno.

Figura 50 Implementacin de memoria RAM al microprocesador

MICROPROCESADORES Y MICROCONTROLADORES

35

MICROPROCESADORES

En caso de implementar memoria RAM dinmica o


DRAM, es necesario seguir el siguiente diagrama
proporcionado por el fabricante donde se indica la
estructura necesaria para realizar el refresco o refresh
(RFSH)

Figura 51 Implementacin de memoria RAM dinmica

1.2.2 PERIFRICOS
Los dispositivos perifricos como los teclados,
impresoras, pantallas, displays, etc. Se conectan al
microprocesador a travs de los puertos de
entrada y salida de datos. El microprocesador Z80
utiliza las terminales de control IORQ (Input /
Output Request), WR (Write) y RD (Read) para
efectuar operaciones con los puertos de entrada /
salida, adems especifica una direccin de puerto
en las terminales (A0 A7) del bus de direcciones.
Debido a que slo se dispone de los primeros ocho
bits (A0 A7) del bus de direcciones para habilitar
los puertos, se tiene un mximo de 2 8 = 256
puertos disponibles, que pueden ser de entrada
y/o salida.
En la figura que se muestra a continuacin, se
puede observar una forma sencilla de implementar
los puertos de entrada y salida. En este caso el
puerto de la direccin 00h es un puerto de salida
conectado a un display, y el puerto de la direccin
01h es un puerto de entrada que est conectado a
un teclado.

Figura 52 Implementacin de dispositivos perifricos al microprocesador

36

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Figura 53 Diagrama de tiempos de lectura y escritura de puertos

- Activa a nivel bajo la Terminal IOREQ (Input


Output Request) indicando una operacin de
puertos de entrada / salida.

Existen 2 operaciones que el microprocesador puede


hacer con los puertos de entrada / salida:
- Lectura de datos de un puerto de entrada

- Activa a nivel bajo la Terminal RD indicando una


operacin de lectura

- Escritura de datos hacia un puerto de salida


En la figura a continuacin, se muestra el diagrama de
tiempos para los ciclos de lectura de puertos (Input
Output Read Cycle) y el ciclo de escritura de puertos
(Input Output Write Cycle):
Ciclo de Lectura de puertos (Input Output
Read Cycle): Para leer un puerto el
microprocesador realizaran los siguientes pasos
(observe la figura anterior):

- Establece una direccin valida en el bus de


direcciones (A0 A7)

- Por ltimo, lee el dato presente en el bus de


datos (D0 D7)
Ciclo de Escritura de puertos (Input Output
Write Cycle): Para escribir en un puerto el
microprocesador realizar los siguientes pasos
(observe la figura anterior):

- Establece una direccin valida en el bus de


direcciones (A0 A15)
- Establece el dato valido a escribir en el bus de
datos (D0 D7)

MICROPROCESADORES Y MICROCONTROLADORES

37

MICROPROCESADORES

- Activa a nivel bajo la Terminal


IOREQ (Input Output
Request) indicando una
operacin de puertos de
entrada / salida.
- Por ltimo, activa a nivel bajo
la Terminal WR indicando que
la informacin presente en el
bus de datos est lista para ser
escrita
Existe una amplia variedad de
dispositivos controladores de
puertos que ofrecen toda la
arquitectura necesaria en un solo
chip. El Z80 PIO es un ejemplo de
este tipo de controlador
especficamente diseado para
trabajar con el Z80 CPU. Este chip
ofrece 2 puertos PA y PB que
pueden ser programados como de
entrada o salida de datos, tambin
permite la utilizacin de
interrupciones.

Figura 54 Dispositivos controladores de puertos

En las figuras siguientes se observa


su distribucin de terminales y la
forma de conexin.

Figura 55 Forma de conexin del


dispositivo controlador de puerto

38

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

1.2.3 DE INTERFASE
PROGRAMABLE
Los dispositivos de interfase programable, son aquellos
que permiten configurar el modo de operacin desde
el cdigo de programa. Existe una variedad de
dispositivos de interfase programable. A continuacin
se muestra el integrado MSM82C55A que es un
dispositivo de interfase de entrada / salida universal
de 8 bit, que opera a altas frecuencias y ofrece poco
consumo de energa basado en tecnologa CMOS.
Posee 24 pines de entrada/salida, equivalentes a 3
puertos de 8 bits compatibles con tecnologa TTL.
Cada puerto es bidireccional, que significa que puede
ser configurado para entrada y salida de datos.

Figura 57 Distribucin de terminales del


integrado MSM82C55A

Figura 56 Diagrama a bloques del integrado MSM82C55A

MICROPROCESADORES Y MICROCONTROLADORES

39

MICROPROCESADORES

A continuacin se muestra un ejemplo de conexin


del controlador de interfase programable 8255 con
dispositivos de entrada / salida. En la entrada tiene
conectado un teclado de 36 teclas y a la salida tiene un
arreglo de 8 display de 7 segmentos.

La rutina de interrupcin es un subprograma que se


guarda en una posicin especfica de la memoria ROM,
en este subprograma se especifican las tareas que el
microprocesador debe realizar al momento que una
seal de interrupcin ocurra.

Figura 58 Ejemplo de conexin del integrado MSM82C55A

1.2.4 INTERRUPCIONES
PROGRAMABLES
Interrupcin se le conoce a toda seal externa que
tiene prioridad sobre cualquier proceso que el
microprocesador est ejecutando, de tal forma que
cuando ocurre una seal de interrupcin, el
microprocesador deja los procesos actuales
pendientes y le da prioridad a la interrupcin,
realizando una rutina especial que se conoce como
servicio de interrupcin o rutina de interrupcin.

40

Esto es imprescindible. por ejemplo, en sistemas de


seguridad donde determinadas seales deben producir
respuestas inmediatas del microprocesador.
Tambin se utilizan las interrupciones para tareas como
el control de los teclados de un computador o el
control del Mouse, haciendo que cada vez que presiona
una tecla el microprocesador de la computadora
responda de manera inmediata a esa seal.

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Existen en general 2 tipos de interrupciones que son:


- Interrupciones enmascarables
(Maskable interrupt)

la interrupcin saltando a la direccin de memoria


0066h donde se aloja la rutina de servicio de
interrupcin.

- Interrupciones no enmascarables
(Non-Maskable Interrupt)

Interrupcin enmascarable:

Se le llama a la interrupcin que puede


ser habilitada o deshabilitada
(enmascarada) desde el programa.
De esta forma en el programa se puede
escoger el momento propicio para hacer
caso de la interrupcin o para omitirla y
seguir con la ejecucin normal del
programa principal.

Interrupcin no enmascarable:

En este tipo de interrupcin no hay


manera de deshabilitarla a travs del
programa. Si una interrupcin no
enmascarable ocurre, el microprocesador
la atender inevitablemente saltando a la
posicin de memoria donde se aloja el
servicio de interrupcin.
Todos los microprocesadores poseen una o ms
entradas de interrupcin. En el microprocesador Z80
se cuenta con 2 entradas de interrupcin, una
Terminal para interrupciones enmascarables (INT) y
otra Terminal para interrupciones no enmascarables
(NMI)
En la siguiente figura se muestra una forma muy
sencilla de implementar una interrupcin no
enmascarable, sta consta de un interruptor trmico
que se encuentra normalmente abierto, cuando la
temperatura alcanza cierto nivel el interruptor se
activa cerrndose y proporcionando una seal de
interrupcin, haciendo que el microprocesador
detenga la ejecucin normal del programa y atienda

Figura 59 Implementacin de una interrupcin no enmascarable

1.2.5 DE COMUNICACIN SERIAL


Uno de los dispositivos que permite la interfase serial
con el microprocesador Z80 es el circuito integrado
Z80 SIO (Serial Input Output), que bsicamente acta
como un convertidor de informacin Paralelo Serial
y Serial Paralelo, utilizando los protocolos estndar
de comunicacin serial.
Este dispositivo permite la transmisin y recepcin de
datos de forma sncrona y asncrona con niveles de
voltaje TTL. Es posible la implementacin de la
comunicacin con el protocolo RS 232 agregando el
CI MAX 232 como se muestra en el siguiente diagrama
esquemtico.

MICROPROCESADORES Y MICROCONTROLADORES

41

MICROPROCESADORES

Figura 60 Implementacin de comunicacin serial al microprocesador Z80

DE
1.3 PROCESO
INSTALACIN DE
MICROPROCESADORES
Al momento de instalar un sistema basado en
microprocesadores, se deben tomar en cuenta
siempre las medidas de seguridad para no daar los
dispositivos. Tome en cuenta que la mayor parte de
elementos electrnicos estn basados en tecnologa
CMOS que es especialmente vulnerable a la
electricidad esttica, por lo que la manipulacin
inapropiada puede destruir estos dispositivos.
Tambin es necesario puntualizar que las tensiones de
alimentacin tienen mrgenes que no deben
sobrepasarse y es necesario verificar estas tensiones
antes de conectar el circuito a la alimentacin.
Por ltimo, cuando sea necesario realizar mediciones
sobre el circuito, debe tener cuidado de no
cortocircuitar las terminales de los dispositivos, pues
se puede causar un dao permanente en los mismos.
Si se tiene duda acerca del comportamiento de un
dispositivo debe consultar la hoja de datos del
fabricante antes de realizar cualquier conexin o
medicin.

42

1.3.1 PROCEDIMIENTO
DE TRABAJO
El diseo e instalacin de cualquier sistema
microprocesador se basa en las necesidades que debe
cubrir dicho sistema. Estas necesidades son por
ejemplo, la cantidad de puertos de entrada y salida
necesarios, la cantidad de puertos analgicos y digitales,
los sistemas de comunicacin que debe cubrir,
la complejidad y tamao del programa, etc. A partir
de estos datos se dimensiona la cantidad de dispositivos
de memoria, decodificadores, controladores, etc. que
sern necesarios.
En el siguiente diseo utilizaremos el sistema mnimo
del microprocesador para efectos de demostracin
con un programa bastante simple pero que
ejemplificar el procedimiento a seguir para su
instalacin.
Supondremos que en determinada aplicacin se
necesita instalar un sistema que debe leer la
informacin de 2 puertos de entrada digital de 8 bits y
luego escribir esta misma informacin en otros 2
puertos de salida de 8 bits. Supondremos tambin que

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

la velocidad de procesamiento no es crtica, por lo


que no es necesario que el microprocesador trabaje a
mxima frecuencia.
Teniendo esta informacin sabemos que necesitamos
instalar 2 puertos de entrada digitales de 8 bits y dos
puertos de salida digitales de 8 bits, tambin sabemos
que el programa es bastante simple y no requerir
mucho espacio de memoria por lo que dimensionamos
solamente una memoria EEPROM. El otro dato que
tenemos es la frecuencia de reloj que no necesita ser
muy precisa ni rpida por lo que podemos construir
un oscilador astable con el integrado NE555. El diseo
final es el siguiente.

Ya que se tiene dimensionado el sistema se procede


de la siguiente manera:
- Procedemos a armar el circuito en Protoboard para
verificar su funcionamiento, teniendo en cuenta el
no utilizar puentes demasiado largos para evitar
problemas de ruido y prdidas en las lneas.
- Debemos grabar el programa principal en la memoria
EEPROM utilizando un programador y seguidamente
instalar la memoria siguiendo el esquema de la figura
anterior.

Figura 61 Instalacin mnima del microprocesador Z80

MICROPROCESADORES Y MICROCONTROLADORES

43

MICROPROCESADORES

- Verificamos antes de conectar el circuito las tensiones


de alimentacin. stas deben ser tensiones
estabilizadas y con un mnimo de rizo para que no
provoquen mal funcionamiento. Adems, deben
proveer la corriente suficiente para todo el sistema.
En este caso en particular se puede construir una
fuente de alimentacin utilizando reguladores de 3
terminales como el 7805 que provean 1 Amperio de
corriente.
- Se verifica que el circuito tenga suficiente ventilacin,
disipadores de calor y ventiladores si son necesarios.
En nuestro caso particular, el microprocesador no
necesita disipador de calor, pero debe verificarse la
correcta ventilacin para que el dispositivo no se
sobrecaliente.
- Se procede a conectar la fuente de alimentacin,
teniendo mucho cuidado con la polaridad, ya que un
cambio de la misma puede ocasionar daos
permanentes a los dispositivos.

- Observe las etiquetas y marcas de precaucin que


algunos dispositivos poseen, como alta tensin, alta
temperatura, etc.
- Evite tocar los dispositivos cuando estos estn
funcionando.
- Si es necesario hacer mediciones en el circuito
verifique con anterioridad el buen estado del
instrumento de medicin y sus accesorios.
- Utilice ropa adecuada y zapatos con suela aislante
para prevenir descargas elctricas a travs del
cuerpo.
- Verifique la correcta conexin de tierras en todos
los instrumentos de medicin y equipo.
- Guardar los dispositivos susceptibles de daarse por
electricidad esttica dentro de bolsas antiestticas o
envueltos en papel aluminio con el objeto de que
todas las terminales estn al mismo potencial.

- Verificamos que el oscilador funcione correctamente,


produciendo un tren de pulsos a su salida y que esta
seal llegue a la terminal de entrada CK del
microprocesador

- Proveer la correcta ventilacin de los dispositivos en


el lugar de operacin, verificando que no hallan
sobrecalentamientos.

- Verificamos que todos los dispositivos estn


correctamente alimentados

- Asegurar un correcto suministro de energa elctrica


estabilizada y libre de ruido.

- Verificamos el funcionamiento total del programa.

- Instalar disipadores de calor y ventiladores a los


elementos que los requieran.

1.3.2 MEDIDAS
DE SEGURIDAD
Al momento de instalar un sistema microprocesador
se deben tomar las siguientes medidas de seguridad:
- Antes de ponerse en contacto con cualquier
dispositivo lea las precauciones y medidas de
seguridad que recomienda el fabricante.
- Verifique las tensiones y corrientes de los suministros
antes de hacer cualquier conexin.

44

- Verificar las condiciones de trabajo del sistema, como


los niveles de humedad, temperatura, polvo,
sustancias txicas, etc., a las cuales ser sometido e
instalar el chasis adecuado a dichas condiciones.

1.3.3 PROTECCIN
AMBIENTAL
Mucho del material utilizado para empaque de los
dispositivos electrnicos es reciclable, como el cartn,
el papel, y algunos plsticos. Esto se puede verificar
observando en el empaque el smbolo de reciclable.

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Las bateras a base de cidos o materiales


contaminantes, deben ser correctamente selladas
y ubicadas en lugares adecuados para evitar la
contaminacin en caso de que se degraden.
Al momento de dar mantenimiento evite la
utilizacin de rociadores que contengan CFCs que
daan la capa de ozono y tenga cuidado de no usar
estos en lugares con temperaturas elevadas que
puedan dar lugar a flamabilidad.
Observe que los equipos instalados de suministro
de energa no consuman mas que la necesaria para
su operacin. Por ejemplo, si un equipo necesita
para su correcta operacin un suministro de 3
watts, el instalar un suministro que provea 10 watts
provoca un desperdicio de energa.
Almacene en lugares adecuados los materiales
txicos como el estao, pasta para soldar, cloruro
ferrico, etc.
PROCESO
DE
INSTALACIN
Esta prctica tiene como objetivo el montaje para
el funcionamiento de un microprocesador,
utilizando todos los elementos perifricos
necesarios para un buen funcionamiento.
Por lo que es importante llevar a cabo los siguientes
pasos.
1.

Comprobar que la tensin de alimentacin


est de acuerdo a las especificaciones
tcnicas del fabricante

2.

Conectar microprocesador, de acuerdo a


diagrama proporcionado por el facilitador

3.

Conectar dispositivos de periferia para


operacin del microprocesador (memoria,
reloj, controlador de puertos, etc.)

4.

Realizar pruebas de funcionamiento del


microprocesador, verificar operacin de
reloj y las seales del microprocesador

5.

Medir parmetros de operacin del


microprocesador

6.

Montar microprocesador y elementos del


circuito

7.

Al finalizar la prctica deber: Limpiar y


proporcionar mantenimiento bsico al
equipo y/o herramientas utilizados,
almacenar adecuadamente el equipo,
herramientas y/o materiales utilizados,
limpiar y ordenar el rea de trabajo, as como
elaborar un reporte de la misma, que incluya
un listado de las medidas de seguridad
aplicadas en la prctica y las observaciones
y conclusiones relacionadas al proceso de
trabajo

1.4 ESPECIFICACIONES
TCNICAS
DEL FABRICANTE
Los fabricantes siempre proporcionan las
especificaciones tcnicas en las hojas de datos de
los dispositivos, en ellas se especifican las
condiciones mximas absolutas de operacin.
A continuacin se presenta la hoja de datos de las
especificaciones tcnicas del microprocesador
AMD486.

MICROPROCESADORES Y MICROCONTROLADORES

45

MICROPROCESADORES

Figura 62 Valores Mximos de trabajo para el Microprocesador AMD486

DEL
1.5 PROGRAMACIN
MICROPROCESADOR

Cuando ocurre un RESET o cuando se energiza el


microprocesador, ste buscar la primera instruccin
del programa en la posicin de memoria 0000h.

1.5.1 DEFINICIN

1.5.2 TIPOS Y CARACTERSTICAS

El programa es un conjunto de instrucciones escritas


en una secuencia especfica que indican al
microprocesador las operaciones que debe realizar y
en que momento las debe ejecutar.

Existen varias formas de programar un


microprocesador, y a estas diferentes formas de
comunicacin con el procesador se les llama lenguajes
de programacin.

Dado que los microprocesadores son dispositivos


electrnicos digitales, las instrucciones del programa
estn formadas por una serie de unos y ceros que el
microprocesador interpreta como instrucciones a
realizar. Como se estudi anteriormente en el
microprocesador Z80 el programa se almacena en las
primeras celdas de la memoria ROM a partir de la
direccin 0000h.

Los lenguajes de programacin se clasifican en:

46

- Lenguaje de mquina
- Lenguaje de bajo nivel o lenguaje ensamblador
(Assembly)
- Lenguaje de alto nivel.

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Lenguaje de mquina:

Es el nico lenguaje que el microprocesador es capaz


de entender y est formado por series de unos y ceros
que el dispositivo interpreta como instrucciones a
realizar.

El lenguaje de mquina siempre es proporcionado


por el fabricante del dispositivo en sus hojas de datos.
A continuacin se muestra un segmento de la hoja de
datos del Z80 que ejemplifica el cdigo de mquina
para la instruccin de SUMA o ADD en ingls.

Por ejemplo, si necesita hacer una suma de dos


nmeros A y B, la instruccin a utilizar ser SUME A
+ B que en lenguaje de mquina se escribe: 10000000
en binario o 0x80 en hexadecimal. Este cdigo debe
grabarse.

Figura 63 Las instrucciones del programa se guardan en la


memoria ROM del sistema microprocesador
Figura 64 Cdigo de mquina para la instruccin ADD

En otras palabras, cuando el microprocesador lee


10000000 desde la memoria, l interpreta este cdigo
como una instruccin de suma entre A y B.
El lenguaje de mquina es diferente para cada
microprocesador. Cada firma de manufactura de
microprocesadores desarrolla su propio lenguaje de
mquina. Este lenguaje puede cambiar incluso en
microprocesadores de la misma firma.
Este lenguaje tiene la caracterstica de ser muy difcil
de entender para el programador, pues habra que
memorizar todos los cdigos binarios que representan
las instrucciones.

Lenguaje ensamblador (Assemby Language)

El lenguaje ensamblador es un tipo de lenguaje de bajo


nivel utilizado para escribir programas de
computadora, y constituye la representacin ms
directa del cdigo mquina.
Un programa escrito en lenguaje ensamblador consiste
en una serie de instrucciones que corresponden al flujo
de rdenes ejecutables que pueden ser cargadas en la
memoria de una computadora. Por ejemplo, un
procesador Z80 puede ejecutar la siguiente instruccin
binaria como se expresa en cdigo mquina:

MICROPROCESADORES Y MICROCONTROLADORES

47

MICROPROCESADORES

Binario: 10000000 (Hexadecimal: 0x80)


La representacin equivalente en ensamblador es ms
fcil de recordar:
ADD A, B
Esta instruccin significa:
Sume A + B y el resultado gurdelo en A.
El mnemnico ADD es un cdigo de operacin
opcode, elegido por los diseadores de la
coleccin de instrucciones para realizar una Suma
(ADD) El opcode es seguido por una lista de
argumentos o parmetros, completando una
instruccin de ensamblador tpica.
La transformacin del lenguaje ensamblador en cdigo
mquina la realiza un programa ensamblador, y la
traduccin inversa la puede efectuar un
desensamblador. A diferencia de los lenguajes de alto
nivel, aqu hay usualmente una correspondencia 1 a 1
entre las sencillas instrucciones en ensamblador y el
lenguaje mquina. Sin embargo, en algunos casos, un
ensamblador puede proveer pseudo instrucciones
que se expanden en un cdigo de mquina ms
largo a fin de proveer la necesaria funcionalidad.
Por ejemplo, para un cdigo mquina condicional
como si X mayor o igual que, un ensamblador puede
utilizar una pseudo instruccin al grupo haga s menor
que, y s = 0 sobre el resultado de la condicin
anterior. Los ensambladores ms completos tambin
proveen un rico lenguaje de macros que se utiliza para
generar cdigo ms complejo y secuencias de datos.
Cada arquitectura de computadoras tiene su propio
lenguaje de mquina, y en consecuencia su propio
lenguaje ensamblador. Las computadoras difieren en
el tipo y nmero de operaciones que soportan;
tambin pueden tener diferente cantidad de registros,
y distinta representacin de los tipos de datos en
memoria. Aunque la mayora de las computadoras son
capaces de cumplir esencialmente las mismas
funciones, la forma en que lo hacen difiere y los
respectivos lenguajes ensambladores reflejan tal
diferencia.

48

Pueden existir mltiples conjuntos de mnemnicos o


sintaxis de ensamblador para un mismo conjunto de
instrucciones, instalados tpicamente en diferentes
programas ensamblador. En estos casos, la alternativa
ms popular es la provista por los fabricantes y usada
en los manuales del programa.

Lenguaje de alto nivel:

Esta forma de programacin es mucho ms sencilla


para el programador y ofrece muchas instrucciones
tiles que no se encuentran disponibles en el lenguaje
ensamblador. Por ejemplo, la multiplicacin de dos
nmeros de 8 bits en lenguaje ensamblador, se realiza
con una serie de sumas como se muestra a
continuacin:
LD IX,0FF00H
LD SP,0FEFAH
LD HL,007BH
LD (IX-02H),L
LD (IX-01H),H
LD HL,00EAH
LD (IX-04H),L
LD (IX-03H),H
LD L,(IX-02H)
LD H,(IX-01H)
LD E,(IX-04H)
LD D,(IX-03H)
CALL M001
LD (IX-06H),L
LD (IX-05H),H
HALT
M001:

M003:

PUSH BC
LD B,H
LD C,L
LD HL,0000H
LD A,10H
DEC D
INC D
JR NZ,M002

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

M002:

M004:

CP 09H
JR C,M002
SUB 08H
PUSH AF
LD D,E
LD E,H
LD H,L
LD L,00H
POP AF
JR M003
ADD HL,HL
RL E
RL D
JR NC,M004
ADD HL,BC
DEC A
JR NZ,M003
POP BC
RET

1.5.3 PARTES Y
FUNCIONAMIENTO
Un programa hecho en lenguaje ensamblador esta
dividido en 4 reas principales:
- rea de Etiquetas (Label)
- rea de mnemnicos o Cdigos de Operacin
(Mnemonic Op Code)
- rea del Operando y/o de Direccin
(Operand - Address)
- rea de Comentarios (Comments)
Estas reas estn dispuestas en columnas como se
muestra a continuacin:

.END
Ahora observemos la misma
multiplicacin anterior en lenguaje
BASIC de alto nivel:
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = 123 primer nmero
b = 234 segundo nmero
c=a*b
La comparacin es abismal. En el lenguaje
ensamblador, se debe tener en mente las posiciones
de memoria, los registros utilizados y como no existe
la operacin de multiplicacin para el microprocesador
Z80, sta se debe realizar con series de sumas, en
otras palabras, se debe tener una comprensin total
del hardware, esto conlleva a un mayor tiempo de
desarrollo de los programas, mientras que un lenguaje
de alto nivel como el BASIC es mucho ms prctico y
comprensible para el usuario y se puede desarrollar
sin conocimiento detallado del hardware de la
mquina.

Figura 65 reas principales de un programa

Etiquetas (Labels)

Se les llama etiquetas a los nombres que se utilizan en


la columna izquierda para identificar la posicin de
determinada parte del programa. Para crear una
etiqueta se deben tener en cuenta las siguientes reglas:
- No usar etiquetas con los mismos nombres de las
instrucciones de ensamblador
- Las etiquetas deben tener un mximo de 6 caracteres.
- Evite la utilizacin de caracteres especiales como @,
#, $, %, ^, etc.

MICROPROCESADORES Y MICROCONTROLADORES

49

MICROPROCESADORES

- Todas las etiquetas deben empezar con


una letra, no pueden empezar con
nmeros.
- No deben existir dos o ms etiquetas
con el mismo nombre
Adems, el nombre de las etiquetas debe
representar su funcin, con el objeto de
hacer ms entendible el programa.

Figura 67 rea de Mnemnicos

A continuacin se observa la utilizacin de 2 etiquetas


que obedecen las reglas expuestas anteriormente, note
que cada etiqueta est seguida de dos puntos.

Operando:

Como su nombre lo indica, en esta


columna, se colocan los operandos del
mnemnico colocado a la izquierda.
Estos varan dependiendo la operacin,
pero al igual que en el mnemnico debe
tenerse en cuenta la sintaxis para evitar
los errores.
A continuacin se observa la posicin de
los operandos en la tercera columna de
izquierda a derecha.

Figura 66 rea de Etiquetas

La utilizacin de etiquetas no es
obligatoria en la creacin de programas,
pero debe conservarse su rea de
utilizacin.

Mnemnicos o Nemotcnicos:

Tambin llamados cdigos de operacin


(op. code), representan la operacin que
debe realizar el microprocesador. Estos
se deben colocar siempre en la segunda columna de
izquierda a derecha. Se debe observar cuidadosamente
la sintaxis, pues esta puede ser causa de errores en el
programa.
A continuacin se observa la utilizacin de los
mnemnicos LD y JP en la estructura de un programa,
observe que estos ocupan la segunda columna de
izquierda a derecha.

50

Figura 68 rea de operandos

Comentarios:

Es el rea de programa destinada para que el usuario


haga las anotaciones que crea pertinentes. Estas
anotaciones deben escribirse en la cuarta columna de
izquierda a derecha y deben empezar siempre con
punto y coma (;) tal como se observa en la figura
siguiente.

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Generalmente en esta rea, se describe con palabras


la funcin que est realizando el programa con el
objeto de tener un mayor entendimiento del mismo.

Figura 69 rea de comentarios

Por ltimo es necesario aclarar que no, es obligatoria


la utilizacin de comentarios en los programas, aunque
estos ayudan mucho a la mejor comprensin del
mismo

1.5.4 PARAMETRIZACIN
Para el diseo de cualquier programa en lenguaje
ensamblador se deben conocer previamente ciertos
parmetros del hardware que controlar dicho
programa. Estos parmetros son los siguientes:
- Espacio y rango de direcciones de la memoria
ROM

Espacio y rango de direcciones de la


memoria ROM: Este parmetro indica de
cuanta memoria ROM disponemos
para la realizacin del programa y
tambin nos dice en que rango de
direcciones se encuentra esta
memoria. Recuerde que el programa
principal del microprocesador se
almacena en una memoria ROM y las
direcciones de esta memoria
dependen de la forma como fue
conectada con el microprocesador.

Por ejemplo, en la siguiente figura se muestra la


conexin del microprocesador con un banco de
memoria compuesto por 2 EEPROM de 8 kbytes
cada una, para hacer un total de 8 + 8 = 16 kbytes
de capacidad de almacenamiento total.
Para determinar el rango de direcciones que utiliza
dicho banco se necesita observar que ambas
memorias tienen conectadas en paralelo las
lneas de direccin A0 A12 y utilizan las lneas
A13 A15 para descodificacin a travs del
integrado 74138, se observa tambin que para
habilitar cualquiera de las dos memorias es necesario
que A14 y A15 estn en 0 lgico, y de esta manera
se determina el rango de direcciones como sigue:

- Espacio y rango de direcciones de la memoria


RAM
- Direcciones de los puertos
de entrada y salida
- Frecuencia de oscilacin del
reloj
Estos parmetros son
indispensables para el diseo del
programa, pues nos dan un mapa
de la configuracin del hardware
que se desea controlar a travs del
programa.

Figura 70 Determinacin de rango de direcciones de memoria

MICROPROCESADORES Y MICROCONTROLADORES

51

MICROPROCESADORES

Figura 71 Implementacin de 16 kbytes de memoria EEPROM

Se concluye entonces, que disponemos de 16 kbytes


de memoria ROM para realizar el programa y que sta
se encuentra entre las direcciones 0000H a la 3FFFH.

Espacio y rango de direcciones de la


memoria RAM: Este parmetro nos indica la
cantidad de memoria RAM que se dispone para la
realizacin del programa y tambin nos dice en que
rango de direcciones se encuentra esta memoria.

52

El procedimiento para determinar estos parmetros


es igual al que se indico para la memoria ROM, donde
es necesario observar que forma est conectada la
memoria al microprocesador.
Ejemplo:
Determnese la capacidad de memoria RAM
implementada y el rango de direcciones que sta
ocupa, haciendo referencia a la figura siguiente.

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Figura 72 Implementacin de 4 kbytes de memoria RAM

Solucin: Para determinar la


capacidad exacta de cada
memoria se calcula 2 n , n =
nmero de lneas de direccin
211 = 2048 bytes
Para determinar el rango de
direcciones observe que las lneas
A12, A13, A14 y A15 deben estar
en 1 lgico.

Figura 73 Clculo del rango de direcciones de la memoria.

MICROPROCESADORES Y MICROCONTROLADORES

53

MICROPROCESADORES

Concluimos entonces, que disponemos de 4 kbytes


de memoria RAM y que sta se encuentra entre las
direcciones F000H a la FFFFH.

Direcciones de los puertos de entrada /


salida: al igual que la memoria, es necesario
conocer los parmetros de las direcciones de los
puertos y si estos corresponden a puertos de entrada
de datos o salida de datos. Estos parmetros tambin
dependen de la forma como estn conectados los
dispositivos controladores de puertos al
microprocesador y se pueden determinar de forma
similar que como se hizo con la memoria.

Frecuencia de oscilacin de reloj: Este


parmetro determina la rapidez con la que el
microprocesador realizar las instrucciones listadas en
el programa. A mayor frecuencia de reloj, mayor
velocidad de procesamiento.

1.5.5 SMBOLOS
MNEMOTCNICOS
Los smbolos mnemotcnicos son una representacin
del lenguaje de mquina que es ms comprensible para
el operario o programador. Todas las instrucciones del
microprocesador se pueden representar por smbolos
mnemotcnicos mismos que son utilizados para la
programacin en lenguaje ensamblador. Algunos de
estos smbolos son por ejemplo:

ADD:
Es la instruccin en lenguaje ensamblador que realiza
una suma entre 2 operando. Existen varias formas de
hacer una suma y stas se muestran a continuacin:
- ADD A, r
- ADD A, (HL)
- ADD A, (IX + d)
- ADD A, (IY + d)
- ADD A, n
- ADD HL, ss
- ADD IX, pp
- ADD IY, rr
ADD A, r:
Suma el contenido de un registro interno del
microprocesador con el acumulador y el resultado lo
carga al acumulador, r representa un registro, por
ejemplo:
ADD A, B
ADD A, C
ADD A, D, etc.
Los registros que se pueden utilizar para esta operacin
son los siguientes: B, C, D, E, H y L.
En esta operacin las banderas S, Z, H, P/V, N y C se
ven afectadas.
Ejemplo:
Antes de la operacin:

A = 44H
C = 11H

ADD indica una suma


Se realiza la operacin

ADD A, C

SUB indica una substraccin o resta


INC indica un incremento en una unidad

Suma A + C y lo carga en A
A
55H

DEC indica un decremento en una unidad


Despus de la operacin
LD

54

transfiere datos entre registros y


memoria

A = 55H
C = 11H

MICROPROCESADORES Y MICROCONTROLADORES

A+C
44H + 11H

MICROPROCESADORES

ADD A, (HL):
Suma el contenido de la posicin de memoria dado
por el par de registros HL con el acumulador y el
resultado lo carga al acumulador, por ejemplo:
En esta operacin las banderas S, Z, H, P/V, N y C se
ven afectadas.
Ejemplo:
Antes de la operacin:

A = 44H
H = 01H
L = 23H

La direccin de memoria dada por el par de registros


HL es 0123H y en esta direccin se encuentra
guardado el dato 34H
(0123H) = 34H
Se realiza la operacin

ADD A, (HL)

Se realiza la operacin

Suma A + (0128H) y lo carga en A


A
A + (0128H)
44H + 01H
45H
Despus de la operacin A = 45H
(0128H) = 01H
ADD A, (IY + d):
realiza la misma operacin anterior, salvo que con el
registro ndice IY.
ADD A, n:
Suma el valor entero dado por el nmero n con el
acumulador y el resultado lo carga al acumulador, n
representa un nmero entero de 8 bits, por ejemplo:

Suma A + (0123H) y lo carga en A


A
A + (0123H)
78H
44H + 34H
Despus de la operacin A = 78H
(0123H) = 34H

ADD A, (IX + d)

ADD A, 05H
ADD A, 79H
ADD A, FFH etc.
En esta operacin las banderas S, Z, H, P/V, N y C se
ven afectadas.
Ejemplo:

ADD A, (IX + d):


Suma el contenido de la posicin de memoria dado
por el par de registros ndice IX ms un desplazamiento
d, con el acumulador y el resultado lo carga al
acumulador, por ejemplo:
En esta operacin las banderas S, Z, H, P/V, N y C se
ven afectadas.
Ejemplo:
Antes de la operacin:

Antes de la operacin:

A = 44H

Se realiza la operacin

ADD A, 11H

Suma A + 11H y lo carga en A


A
55H

A + 11H
44H + 11H

Despus de la operacin A = 55H


A = 44H
IX = 0123H
d = 05H

La direccin de memoria dada por el par de registros


IX + d es 0123H + 05H = 0128H, y en esta direccin
se encuentra guardado el dato 01H
(0128H) = 01H

ADD HL, ss: Es una operacin de 16 bits que


suma el contenido del par de registros HL con otro
par de registros dados por ss y el resultado lo carga al
par HL, ss representa un par de registros que pueden
ser BC, DE, HL, SP, por ejemplo:

MICROPROCESADORES Y MICROCONTROLADORES

55

MICROPROCESADORES

ADD HL, BC
ADD HL, DE
ADD HL, HL etc.
En esta operacin las banderas S, Z, H, P/V, N y C se
ven afectadas.

Se realiza la operacin

ADD IX, BC

Suma IX + BC y lo carga en IX
IX
IX + BC
1235H 0001H + 1234H
Despus de la operacin IX = 1235H
BC = 1234H

Ejemplo:
Antes de la operacin:

HL = 0001H
BC = 1234H

Se realiza la operacin

ADD HL, BC

Suma HL + BC y lo carga en HL
HL
HL + BC
1235H 0001H + 1234H

Nota: en este caso el par de registros HL no


representan una direccin de memoria, por lo que no
se escriben entre parntesis. En caso de necesitar ms
detalles se debe consultar la hoja de datos de
fabricante.

Despus de la operacin HL = 1235H


BC = 1234H

ADD IY, rr:


Realiza la misma operacin anterior pero con el
registro IY, rr representa el par de registros BC, DE,
IY, SP.

Nota: en este caso el par de registros HL no


representan una direccin de memoria por lo que no se
escriben entre parntesis. En caso de necesitar ms
detalles se debe consultar la hoja de datos de
fabricante.

SUB:
Es la instruccin en lenguaje ensamblador que realiza
una resta entre 2 operandos que deben ser de 8 bits.
La forma de uso es como se muestra a continuacin.
SUB s

ADD IX, pp:


Es una operacin de 16 bits que suma el contenido
del par de registros ndice IX con otro par de registros
dados por pp y el resultado lo carga al par IX, pp
representa un par de registros que pueden ser BC,
DE, IX, SP, por ejemplo:
ADD IX, BC
ADD IX, DE
ADD IX, SP etc.
En esta operacin las banderas S, Z, H, P/V, N y C se
ven afectadas.
Ejemplo:
Antes de la operacin:

56

IX = 0001H
BC = 1234H

SUB:
Es una operacin de 8 bits que resta el contenido del
registro Acumulador con otros registros, constantes
o direcciones de memoria de la misma forma que la
instruccin ADD vista anteriormente, sus formas de
uso son las siguientes:
- SUB r
- SUB n
- SUB (HL)
- SUB (IX + d)
- SUB (IY + d)
SUB r:
Resta el contenido del acumulador con un registro
interno del microprocesador y el resultado lo carga al
acumulador, r representa un registro, por ejemplo:

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

INC (HL):
incrementa en una unidad el dato contenido en la
direccin de memoria dada por el par de registros HL

SUB B
SUB C
SUB D, etc.
Los registros que se pueden utilizar para esta operacin
son los siguientes: B, C, D, E, H y L.

En esta operacin las banderas S, Z, H, P/V, N y C se


ven afectadas.

En esta operacin las banderas S, Z, H, P/V, N y C se


ven afectadas.

Ejemplo:
Antes de la operacin:

Ejemplo:
Antes de la operacin:

A = 44H
C = 11H

Se realiza la operacin

SUB C

Resta A - C y lo carga en A
A
33H

La direccin de memoria dada por el par de registros


HL es 0123H, y en esta direccin se encuentra
guardador el dato 34H
(0123H) = 34H
Se realiza la operacin
A-C
44H - 11H

Despus de la operacin A = 33H


C = 11H
Puede observar que la instruccin SUB r se utiliza
de la misma forma que ADD A, r haciendo la salvedad
que esta primera es una substraccin, mientras que la
anterior es una adicin. En correspondencia podemos
hacer las siguientes comparaciones:
SUB n
SUB (HL)
SUB (IX + d)
SUB (IY + d )

>
>
>
>

H = 01H
L = 23H

ADD A, n
ADD A, (HL)
ADD A, (IX + d)
ADD A, (IY + d)

INC (HL)

Incrementa en uno el contenido de la direccin de


memoria (0123H)
(0123H)
(0123H) + 1
35H
34H + 1H
Despus de la operacin (0123H) = 35H
el dato contenido en la
direccin (0123H) se ha
incrementado en uno.
INC (IX + d) y INC (IY + d): incrementan
en una unidad el contenido de la direccin dada por
los registros ndices IX o IY ms un desplazamiento d.
Por ejemplo:
INC (IY, 05H)

INC:
Instruccin que incrementa en una unidad su
operando. Esta instruccin puede tener varias formas
como se muestran a continuacin:
- INC (HL)
- INC (IX + d) / INC (IY + d)
- INC IX / INC IY
- INC r
- INC ss

INC IX y INC IY: Incrementa en una unidad el


contenido del registro IX o IY respectivamente.
INC r: Incrementa una unidad el registro dado
por r mismo que puede tener los siguientes valores:
A, B, C, D, E, H, L. Por ejemplo:
INC A

MICROPROCESADORES Y MICROCONTROLADORES

57

MICROPROCESADORES

DEC: Instruccin que realiza la funcin opuesta


de INC, decrementando en una unidad su argumento.
Se pueden utilizar las siguientes formas de manera
anloga a la instruccin INC:

Operacin de dato literal a Registro:


Carga un valor literal a un registro determinado.

DEC r
DEC IX
DEC IY
DEC (HL)
DEC (IX + d)
DEC (IY + d)

Ejemplos:
LD B, 03H; carga al registro B con el valor 03H
LD E, FFH; carga el registro E con el valor FFH
LD A, 00H; carga el registro A con el valor 00H

Ejemplo:
Ejemplo:
Ejemplo:
Ejemplo:
Ejemplo:
Ejemplo:

DEC B
DEC IX
DEC IY
DEC (HL)
DEC (IX + 012FH)
DEC (IY + 1234H)

LD (Load, Carga): Instruccin que se utiliza


para mover o copiar (Cargar) datos de un lugar a otro.
Los datos se pueden mover de la memoria a los
registros, de un registro a otro registro y de registros a
memoria, tambin permite cargar un dato literal a un
registro o a la memoria. Segn la hoja de datos existen
las siguientes formas de uso:
Operaciones de Registro a Memoria:
Copian el contenido de un registro determinado
a una localidad de memoria.
LD (BC), A
LD (DE), A
LD (HL), r
LD (IX + d), r
LD (IY + d), r
LD (nn), A
Operaciones de Memoria a Registro:
Copian el contenido de una localidad de memoria
a un Registro determinado.
LD A, (BC)
LD A, (DE)
LD A, (nn)
LD r, (HL)
LD r, (IX + d)
LD r, (IY + d)
Operacin de Registro a Registro:
Copian el contenido de un registro a otro registro.
Ejemplos:
LD A, B
LD B, C
LD B, E etc.

58

LD r, dato

Operacin de dato literal a Memoria: Carga


un valor literal a una localidad de memoria
determinada.
LD (HL), dato
LD (IX + disp), dato
Ejemplo:
LD (HL), 12H

1.6

Crga la posicin de memoria


dada por el par de registros
HL con el valor literal 12H

LENGUAJE ENSAMBLADOR
DEL MICROPROCESADOR

1.6.1 DEFINICIN
Lenguaje de bajo nivel que utiliza smbolos
mnemotcnicos para representar las instrucciones del
microprocesador. En otras palabras, la programacin del
microprocesador se realiza con smbolos mnemotcnicos
y no con cdigos binarios, permitiendo as la mejor
comprensin del programa.

1.6.2 TIPOS Y CARACTERSTICAS


Los tipos y caractersticas del lenguaje ensamblador,
dependen del microprocesador que s este utilizando.
Cada microprocesador tiene su propio y casi exclusivo
lenguaje ensamblador que en algunos casos se hereda
de generacin, en generacin haciendo mejoras e
incluyendo nuevas instrucciones y eliminando otras.
La estructura bsica del programa en columnas que se
estudio anteriormente se conserva para la mayora de
los lenguajes ensamblador, teniendo siempre las reas

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

de etiquetas, mnemnicos, operandos y comentarios en la


misma posicin, pero las instrucciones cambian de acuerdo al
microprocesador. Por ejemplo: Para copiar el contenido del
registro B al registro A se deben utilizar las siguientes
instrucciones dependiendo del microprocesador a utilizar:

Como puede observar, la estructura bsica del programa en


columnas es la misma, pero cambia la forma del mnemnico
y el operando para microprocesadores de distintas firmas,
por lo que es necesario estudiar el conjunto de instrucciones
del microprocesador que estemos utilizando en la hoja de
datos del fabricante.

DEL
1.7 CONFIGURACIN
MICROPROCESADOR
Al momento de disear un programa determinado, se
debe tomar en cuenta previamente la configuracin
que el microprocesador tiene con sus perifricos.
Esto es, la cantidad de memoria RAM y ROM que posee
el sistema, as como su direccionamiento, los puertos de
entrada y salida, interrupciones, etc. A continuacin se
observa la configuracin bsica que se ha venido
trabajando con anterioridad, en la cual tenemos
configurados 2 puertos de entrada con direcciones 02h
y 03h, dos puertos de salida con direcciones 00h y 01h,
una memoria EEPROM de 8 kbytes

Figura 74 Ejemplo de configuracin de microprocesador

MICROPROCESADORES Y MICROCONTROLADORES

59

MICROPROCESADORES

DE DISEO
1.8 PROCESO
DE UN PROGRAMA
1.8.1 REGISTROS
Como se ha visto anteriormente los registros son
espacios de memoria internos al microprocesador
necesarios para que ste realice sus operaciones.
La cantidad de registros, sus capacidades y sus nombres
varan de un microprocesador a otro, pero las
funciones que estos realizan son en general las mismas.
Estos registros permiten la movilidad de datos de un
lugar a otro y sirven de almacenamiento temporal.
Para el Z80 existen dos juegos de registros de 8 bits
cada uno que se identifican con las siguientes letras
maysculas:
Juego principal de registros:
A, B, C, D, E, H, L
Juego alterno de registros:
A, B, C, D, E, H, L

1.8.3 MODOS DE
DIRECCIONAMIENTO
Para poder acceder a la informacin almacenada en la
memoria el microprocesador puede recurrir a diferentes
formas. Estas distintas formas se conocen como modos
de direccionamiento de memorias, que en general son
las siguientes:
- Implicado (Implied)
- Indexado (indexed)
- Directo (Direct)
- Relativo (Program Relative)
- Pgina Base (Base Page)
- Registro Directo (Register Direct)
- Inmediato (Immediate)

En el direccionamiento implicado, los registros H y L


guardan entre s la direccion de memoria a la cual se
accesar. Los datos se movern entre la direccin y los
registros A, B, C, D, E, H, L. por ejemplo:

A travs de estos registros pasa toda la informacin que


maneja el microprocesador.

1.8.2 DECLARACIN
DE SEGMENTOS
La memoria puede dividirse en segmentos utilizando la
seudo operacin RESERVE. sta permite reservar
espacios de memoria y les asigna un nombre de la
siguiente manera:
Ejemplo:
ORG
3200
TEMP
RESERVE
1
VOLT
RESERVE
50
BUFR
RESERVE
100
En el ejemplo anterior se reservaron 3 reas de memoria
a partir de la direccin 3200 llamadas TEMP, VOLT, BUFR,
que tienen un nmero de localidades de 1, 50 y 100
respectivamente
Se puede utilizar la operacin RESERVE para reservar
localidades de memoria de programa (ROM) o memoria
de datos (RAM)

60

Implicado (Implied)

LD C, (HL)
Mueve el contenido de la direccin dada por el par de
registros HL al registro acumulador. Supongamos que el
registro H contine el valor de 01h y el registro L contine
el valor 23h (recuerde que son registros de 8 bits),
entonces el par HL se leer 0123h por lo tanto el
microprocesador accesar la direccin de memoria
0123h y tomara el dato contenido en esta direccin y lo
cargar al registro acumulador.
LD (BC), A
Mueve el contenido del acumulador a la direccion dada
por los registros HL.

Implicado de pila (Implied Stack)

Como la pila es parte de la memoria, se debe considerar


su modo de direccionamiento. Las instrucciones Push y
Pop mueven dos bytes de datos entre el par de registros
y la localidad de direccin del Stack Pointer. Por ejemplo:
PUSH DE

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Indexado:

El Z80 tiene dos registros de 16 bit llamados IX e IY.


Ellos son usados intercambiablemente, como
referencia de una direccin, este mtodo difiere del
implicado en que la direccin accesada est dada por
un ndice ms un desplazamiento. Por ejemplo:
ADD A,(IX+40H)

Directo:

Este direccionamiento transfiere al registro A lo que


tiene una localidad de memoria especificada
directamente en la instruccin. Por ejemplo:
LD A, (1FFFH)

De Registro Indirecto:

Esta forma de direccionamiento difiere de lndirecto,


debido a que no involucra transferencia de
informacion. Siempre un par de registros guardan la
direccion de acceso. Por ejemplo:
JP (HL)

Por ejemplo: Ingrese el dato presente en el puerto


3BH y gurdelo en el registro B.
Solucin:
IN A, (3BH);

ingresa el valor del puerto


3BH y lo guarda en el
registro A

LD B, A;

Copia el valor del registro


A al registro B

Note que no es posible transferir la informacin del


puerto al registro B inmediatamente, para hacer
esto es necesario otro paso que transfiere la
informacin del registro A al B.
OUT (port), A: Esta instruccin permite
sacar datos hacia un puerto de salida del
microprocesador cuya direccin se define en el
parmetro (port)
Por ejemplo: Sacar el dato binario 11110010 =
F2H por el puerto de salida 7BH.

Inmediato:

Asigna un valor nmerico (constante) a un registro


dado. Ejemplo:
LD BC, 0BCH

1.8.4 CONTROL DE DISPOSITIVOS


ENTRADA/SALIDA
El control de los puertos de entrada y salida de datos
del microprocesador, se logra con la utilizacin de dos
instrucciones de programa especficas para esta tarea.
Estas instrucciones son:
IN A, (port)
OUT (port), A

IN A, (port): Esta instruccin permite


ingresar datos provenientes de un puerto de entrada
del microprocesador cuya direccin se define en el
paramento (port)

; instruccin de lectura de puerto


; instruccin de escritura de puerto

Solucin:
LD A, F2H;

Carga el valor F2H al


registro A

OUT (7BH), A;

Saca el valor del


registro A = F2H,
por el puerto 7BH.

Note nuevamente que es necesario realizar dos


pasos, cargando el dato primero en el registro A y
luego sacando el dato por el puerto a travs del
registro A.

MICROPROCESADORES Y MICROCONTROLADORES

61

MICROPROCESADORES

1.8.5 ESQUEMA
DE UN PROGRAMA
Todo programa tiene una estructura sobre la cual
se debe realizar.
Anteriormente se estudi que en el lenguaje
ensamblador existe una estructura vertical formada
por 4 columnas en donde se establece el uso de las
etiquetas, mnemotcnicos, operandos y
comentarios.
Tambin existe una estructura horizontal en donde
se establece donde se escribir el programa
principal, donde se ubicarn las subrutinas o
procedimientos y donde se ubicar la rutina de
servicio de interrupcin.
Se puede entonces establecer 3 bloques bsicos
g.
Programa Principal

h.
Subrutinas o rocedimientos
i.
Rutina de Servicio de Interrupcin

1.8.6 USO DE
PROCEDIMIENTOS
Las subrutinas o procedimientos son bloques
funcionales de programas que hacen una tarea
especfica, simulando una lnea de produccin donde
en cada rea se hace una y slo una tarea
especializada y al final en conjunto se obtiene un
resultado completo.
Entonces, una tarea total se puede desglosar en
tareas ms simples hechas por secciones
especializadas de una lnea de produccin.
Estas secciones son en programacin los
procedimientos o
subrutinas, donde en
las subrutinas se
disear el programa
que resuelva una tarea
especfica solamente.
E l
u s o
d e
procedimientos hace al
programa mucho ms
fcil de entender, y
tiene la ventaja que se
pueden copiar para
otros programas de tal
forma que si en otro
programa necesitamos
resolver el mismo
problema
slo
tenemos que copiar y
pegar el procedimiento
una vez realizado.

Figura 75 Esqueleto de un programa

62

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

Los procedimientos se hacen posibles con el uso


de dos instrucciones que son:
- CALL etiqueta

LD

B, A;

COPIA EL
CONTENIDO
DE A EN B

LD

C, A;

COPIA EL
CONTENIDO
DE A EN C

- RET
La instruccin CALL significa llamada a una
subrutina, esta subrutina debe estar identificada
con una etiqueta. Cuando el microprocesador
ejecuta la instruccin CALL etiqueta, dejara de
ejecutar la secuencia normal del programa y saltara
a la posicin identificada por la etiqueta donde esta
la subrutina.
El fin de la subrutina debe estar escrita con la
instruccin RET que le indica al microprocesador
que RETORNE a la siguiente instruccin despus
del CALL que ejecuto anteriormente.

Ejemplo: realice un programa que asigne el valor


inicial de 00H al registro A y llame a una
subrutina que le sume el valor de C3H al registro
A.
Al regresar de la subrutina debe copiar el contenido
del registro A, a los registros B y C

SUMA:
ADD A, C3H;

SUMA EL VALOR
C3H AL REG A

RET;

RETORNO DE LA
SUBRUTINA

Para poder implementar subrutinas en un


programa es necesario disponer de una parte de
la memoria RAM para que el microprocesador
guarde temporalmente los valores de los registros
y banderas antes de ejecutar la subrutina, al
regresar de la misma el microprocesador recuerda
el estado de las banderas y los registros antes de
irse a la subrutina permitiendo que el flujo del
programa siga sin errores; de lo contrario el
microprocesador no recordara en que se quedo
antes de realizar la subrutina y esto causara
errores en la ejecucin del programa.
A esta parte de la memoria RAM designada para el
trabajo con subrutinas se le llama STACK o PILA.

Solucin:
INICIO:
LD

A, 00H;

CALL SUMA;

ASIGNA 00H AL
REGISTRO A
LLAMA A LA
SUBRUTINA
SUMA

1.8.7 APLICACIONES
A continuacin se listan 2 ejemplos de aplicaciones
simples que se pueden desarrollar con el sistema
microprocesador que se muestra a continuacin:

MICROPROCESADORES Y MICROCONTROLADORES

63

MICROPROCESADORES

Figura 76 Sistema microprocesador para desarrollar ejemplos de aplicacin

de aplicacin 1:
Desarrolle un programa que efecte un
conteo binario de 8 bits desde 00H hasta
FFH, utilizando el puerto de salida 01H

Listado del programa:

Solucin:
- Arme el circuito mostrado anteriormente en
protoboard, no es necesario en este caso conectar
los integrados IC4, IC5, IC7, ya que no se trabajar
con esos puertos. La frecuencia del oscilador 555
debe ser baja para poder visualizar el conteo.

64

- Realizar el programa en lenguaje ensamblador


utilizando un software compilador para el
microprocesador Z80. como se observa a
continuacin:

LD A, 00H;
INICIO:

MICROPROCESADORES Y MICROCONTROLADORES

inicialice con valor


de 0 el acumulador
bandera de inicio
de programa

MICROPROCESADORES

OUT (01H), A;
INC A;
JP INICIO;

escriba en el Puerto
01H el reg. A
incremente en 1 el
valor del reg. A
salte a INICIO.

- Escribir el programa en el compilador del Z80.

- Si el programa no tiene errores generar un archivo


hex que contiene el cdigo hexadecimal que debe
grabarse en la memoria EEPROM utilizando un
programador de memorias adecuado. A continuacin
se observa el
archivo.hex
generado del
programa
anterior.
Figura 79 Cdigo Hexadecimal del
programa ensamblado

- Instale la memoria programada y


energice el circuito con 5V. Presione
el pulsador S1 de RESET para iniciar
el programa. Observe con LEDS
conectados al puerto el conteo
binario. Ajuste la velocidad de
conteo con el oscilador NE555.
de aplicacin 2:
Desarrolle un programa
que efecte la lectura del
puerto 03H, al valor
ledo debe sumrsele 2 y
escribir el resultado en el
puerto de salida 01H.

Figura 77 Compilador de
lenguaje ensamblador del
Z80

- Ensamble (Assemble) el programa verificando que


no tenga errores.
Solucin:

- Arme el circuito mostrado anteriormente en


protoboard, no es necesario en este caso conectar
los integrados IC5, IC7, ya que no se trabajar con
esos puertos.
- Realizar el programa en lenguaje ensamblador
utilizando un software compilador para el
microprocesador Z80. como se observa a
continuacin:

Figura 78 Ensamblado de programa

INICIO:
IN A, (03H);

LEER PUERTO 03H

ADD A, 02H;

SUMAR 2 AL REGISTRO A

MICROPROCESADORES Y MICROCONTROLADORES

65

MICROPROCESADORES

OUT (01H), A;

ESCRIBIR AL PUERTO 01H

JP INICIO;

SALTE A LA ETIQUETA
INICIO

PROCESO
PROGRAMAR
MICROPROCESADORES
En la prctica 1, el participante debe poner en prctica
los conocimientos acerca de los mnemnicos y
algoritmos para realizar un programa que incluya como
mnimo tres 4 variables de entrada digital, una entrada
analgica, una salida digital y el despliegue de la
informacin en pantalla.

Figura 80 Ensamblado del programa sin errores.

1.

Comprobar que la tensin de alimentacin del


microprocesador est de acuerdo a las
especificaciones tcnicas del fabricante

2.

Conectar el microprocesador de acuerdo a las


indicaciones del facilitador

3.

Conectar dispositivos de periferia para


operacin del microprocesador (Memoria,
reloj, controlador de puertos, etc.)

4.

Realice el algoritmo del programa

5.

Disee el diagrama de flujo.

6.

Realizar programacin del microprocesador de


acuerdo proceso de trabajo establecido

7.

Comprobar el funcionamiento del programa

- Grabe el archivo *.hex generado en la memoria


EEPROM

8.

Realizar las mediciones elctricas al circuito, al


microprocesador y perifricos del mismo

- Instale la memoria EEPROM en el circuito

9.

Grabar memoria con el programa en uso

10.

Al finalizar la prctica deber: Limpiar y


proporcionar mantenimiento bsico al equipo
y/o herramientas utilizados, almacenar
adecuadamente el equipo, herramientas y/o
materiales utilizados, limpiar y ordenar el rea
de trabajo, as como elaborar un reporte de la
misma, que incluya un listado de las medidas
de seguridad aplicadas en la prctica y las
observaciones y conclusiones relacionadas al
proceso de trabajo.

- Energice el circuito con 5V y presione el pulsador S1


de RESET.
- Analice el comportamiento introduciendo valores al
puerto de entrada y observando el resultado en el
puerto de salida. Puede utilizar dip switch para el
puerto de entrada y LEDs para el puerto de salida.

66

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

INSTRUCCIONES:
Con la ayuda y orientacin del (de la) facilitador (a) y
la consulta de los contenidos estudiados, realice las
siguientes actividades.

Temas de investigacin individual.


En forma individual, los participantes deben
de investigar sobre una aplicacin prctica
de los circuitos electrnicos que utilicen
microprocesadores, por ejemplo, en el diagrama de
un aparato o mquina de uso industrial, deben de
razonar la aplicacin y utilidad del mismo, deben de
entregar un reporte a su facilitador.

Aplicacin prctica
de un microcontrolador.
En forma individual, los participantes deben
de programar una aplicacin prctica en un
microcontrolador, debe realizar el algoritmo y el
programa, se debe de presentar un reporte formal de
dicho trabajo y entregarlo a su facilitador.

Visita tcnica para ver la aplicacin de


los P en la industria.
En grupos de tres participantes, deben de
investigar en las industrias nacionales las mquinas que
utilizan circuitos con microprocesadores, se debe de
hacer un reporte y razonar la utilidad prctica de dichos
dispositivos.

Proyecto para una aplicacin real.


Formando parejas los participantes deben
disear un programa que interprete una
seal digital como condicin para que se despliegue
en la pantalla el valor de una seal analgica.

Mediciones de un microprocesador.
Formando parejas de tres, los participantes
debern efectuar un reporte de medicin de
los valores de alimentacin, de los parmetros de
entrada y salida, de la frecuencia del reloj de un
microprocesador, se debe entregar con un marco
terico propuesto por el facilitador.

MICROPROCESADORES Y MICROCONTROLADORES

67

MICROPROCESADORES

Los microprocesadores son conjuntos de circuitos


electrnicos altamente integrados para clculo y
control computacional, son utilizados como unidades
centrales de proceso en un sistema microordenador
y en otros dispositivos electrnicos complejos como
cmaras fotogrficas, impresoras, etc.
Las aplicaciones ms frecuentes del microprocesador
son realizar operaciones aritmticas y lgicas indicadas
de forma secuencial en un programa, para luego ser
desplegado en una pantalla.
El programa que indica la secuencia de operaciones
que debe realizar el microprocesador se graba en una
memoria no voltil, generalmente memoria ROM.
El microprocesador hace, uso de sus lneas de datos
para manejar la informacin que entra y sale de l,
utiliza las lneas de direcciones para indicarle a los
dispositivos perifricos que posicin exacta utilizar,
y las lneas de control indican a los mismos las
operaciones que se efectuarn.
Para poderse comunicar con el mundo externo, el
microprocesador hace uso de sus puertos de entrada
y salida de datos. Estos puertos pueden ser analgicos,
digitales, de comunicacin serial o paralela, por
ejemplo, el monitor de una PC.

68

Para que un microprocesador se ponga en pleno


funcionamiento necesita de elementos internos y
externos los cuales son: registros, la Unidad de control,
la Unidad aritmtico-lgica, y dependiendo del
procesador, una unidad en punto flotante y como
elementos externos necesita de un oscilador en el
orden de los Mhz, memorias RAM y ROM, compuertas
lgica convertidores de seales y otros
Cada fabricante de microprocesadores tendr sus
propias familias de microprocesadores, estos y cada
familia su propio conjunto de instrucciones.
De hecho, cada modelo concreto tendr su propio
conjunto, ya que en cada modelo se tiende a aumentar
el conjunto de las instrucciones que tuviera el modelo
anterior.
Los principales parmetros caractersticos de un
microprocesador son su ancho de bus (medido en
bits), la frecuencia de reloj a la que trabajan (medida
en hercios), y el tamao de memoria cach (medido
en kilobytes)

MICROPROCESADORES Y MICROCONTROLADORES

MICROPROCESADORES

INSTRUCCIONES:
A continuacin encontrar una serie de enunciados con cuatro opciones de respuesta, subraye la correcta, de
acuerdo a los contenidos estudiados.

1.

El microprocesador Z80 tiene un bus de


datos de:_____bits.
A)
B)
C)
D)

2.

3.

C)
D)
5.

Puertos
Memorias
Decodificadores
Todas las anteriores

6.

Conjunto nico de instrucciones


Computador con Set limitado de
instrucciones
Conjunto Amplio de instrucciones
Conjunto Reducido de Instrucciones

Bloque funcional interno al microprocesador


responsable de las operaciones aritmticas
y lgicas:
A)
B)
C)
D)

65536 localidades de memoria


1000 localidades de memoria
2 kbytes de memoria
4 kbytes de memoria

Lugar por donde entra y sale la informacin


manejada por el microprocesador hacia el
mundo exterior:
A)
B)
C)
D)

La tecnologa CISC implica:


A)
B)

4
8
16
32

Un microprocesador con un ancho de 16


lneas en su bus de direcciones es capaz de
direccionar:
A)
B)
C)
D)

4.

Unidad de control
Registro de Banderas (FLAGS)
Registros de propsito especial
Unidad ALU

Son los elementos de hardware y software


que permiten la comunicacin con el
mundo exterior.
A)
B)
C)
D)

Memorias de entrada y salida


Registros de entrada y salida
Puerto de entrada y salida
Resistencias de entrada y salida

MICROPROCESADORES Y MICROCONTROLADORES

69

MICROPROCESADORES

7.

La CPU posee dos seales asociadas con el


control de los buses de direccin y datos,
estas seales son:
A)
B)
C)
D)

8.

La interrupcin que puede ser habilitada


o deshabilitada desde el programa se le
llama: Interrupcin
A)
B)
C)
D)

9.

Transmisin
Compilacin
Oscilacin de Reloj
Instrucciones.

La instruccin LD significa
A)
B)
C)
D)

70

Enmascarable
No enmascarable
Serial
Paralelo

El parmetro que determina la rapidez con


la que el microprocesador realizar las
instrucciones enlistadas en el programa se
le llama: Frecuencia de
A)
B)
C)
D)

10.

BUSRQ y Busak
ERPOM Y ROM
CLOCK Y MEMORIA
Seal IN seal OUT

Indica una suma


Indica una substraccin o resta
Transfiere datos entre registros y
memoria
Indica una substraccin o resta

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

UNIDAD 2

MICROCONTROLADORES

El estudio del contenido de esta unidad,


contribuir a que usted adquiera las
competencias para:
Instalar circuitos con microcontroladores,
de acuerdo a especificaciones tcnicas.
Programar microcontroladores, de
acuerdo a especificaciones tcnicas.

MICROPROCESADORES Y MICROCONTROLADORES

71

M I C R O C O N T R O L AD O R E S

2.1

MICROCONTROLADORES

Esta ltima caracterstica es la que le confiere la


denominacin de controlador incrustado (Embedded
controller) El microcontrolador es un dispositivo
dedicado, lo que quiere decir que cumple una funcin
determinada y en su memoria reside el programa
destinado a gobernar dicha aplicacin; sus lneas de
entrada/salida soportan el conexionado de sensores y
actuadores del dispositivo a controlar y todos los
recursos complementarios disponibles tienen como
nica finalidad atender sus requerimientos. Una vez
programado y configurado el microcontrolador
solamente sirve para gobernar la tarea asignada.
Los campos ms destacados en los que se emplean
microcontroladores son los siguientes:
- Automatizacin industrial.
- Medida y control de procesos.
- Enseanza e investigacin.
- Perifricos y dispositivos auxiliares
de las computadoras.
- Electrodomsticos.

Figura 81 - microcontrolador a travs del ojo de una aguja

- Aparatos porttiles y de bolsillo.

2.1.1 DEFINICIN

- Mquinas expendedoras y juguetera.

Un microcontrolador es un circuito electrnico digital


programable que incluye en su interior las tres
unidades funcionales de un ordenador que son:

- Instrumentacin.

- CPU (Unidad Central de Proceso)

- Electromedicina.

- Memoria RAM, ROM, EEPROM FLASH, etc.

- Robtica.

- Unidades de E/S digitales y/o analgicas

- Sistemas de navegacin.

En otras palabras, un microcontrolador contiene todos


los componentes de un computador aunque de
limitadas capacidades. Se emplea para controlar el
funcionamiento de una tarea determinada y, debido a
su reducido tamao, suele ir incorporado en el propio
dispositivo al que gobierna.

72

- Industria de la automocin.

- Sistemas de seguridad y alarma.


- Domtica.
- Termorregulacin.

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

La industria de la informtica acapara gran parte de


los microcontroladores que se fabrican. Casi todos los
perifricos de un ordenador, desde el ratn hasta la
impresora o el teclado, son regulados por el programa
de un microcontrolador.

Los productos que para su regulacin incorporan un


microcontrolador, disponen de las siguientes ventajas:
- Aumento de prestaciones.
- Aumento de la fiabilidad.

Los electrodomsticos de gama blanca (lavadoras,


hornos, lavavajillas, etc.) y de lnea marrn (televisores,
vdeos, aparatos musicales, etc.) incorporan
numerosos microcontroladores. Igualmente los
sistemas de supervisin, vigilancia y alarma en los
edificios utilizan estos chips para optimizar el
rendimiento de ascensores, calefaccin, aire
acondicionado, alarmas de incendio y robo, etc.
Las comunicaciones y sus sistemas de transferencia
de informacin utilizan profusamente estos pequeos
computadores, incorporndolos en los grandes
automatismos y en los modernos telfonos.
La instrumentacin y la electromedicina son dos
campos idneos para la implantacin de estos circuitos
integrados. Una importante industria consumidora de
microcontroladores es la de automocin, que los aplica
en el control de aspectos tan populares como la
climatizacin o los frenos ABS.

- Reduccin del tamao en el producto acabado.


- Menor consumo de energa.
- Mayor flexibilidad.
- Reduccin del precio del producto acabado.
- Reduccin en el tiempo y complejidad del
diseo

2.1.2 TIPOS DE
MICROCONTROLADORES

A continuacin se muestra un grfico de la distribucin


de la produccin mundial de microcontroladores
donde el 30% se utiliza para las comunicaciones, el
15% para computadores, el 10% en la industria, el
18% en automocin, 27% en consumo

Figura 83 - Vista al interior del encapsulado


De un microcontrolador

Los microcontroladores se pueden clasificar segn


el tamao de los datos que procesan y se puede
distinguir entre:
- Microcontroladores de 4 bits.
Figura 82 - Distribucin de produccin de
microcontroladores por sectores de aplicacin.

- Microcontroladores de 8 bits.

MICROPROCESADORES Y MICROCONTROLADORES

73

M I C R O C O N T R O L AD O R E S

- Microcontroladores de 16 bits.
- Microcontroladores de 32 bits.
El ms representativo de esta clasificacin es el
microcontrolador de 8 bits porque resulta el ms
flexible y eficaz para la mayora de los diseos tpicos.
Aunque en los ltimos aos, los microcontroladores
de 16 bits estn aumentado significativamente su cuota
de mercado. En el ao 2000 las estadsticas muestran
que los microcontroladores de 8 bits representan el
58% de la produccin total mundial, le siguen los de
16 y 32 bits con un total del 33%, mientras que los de
4 bits tienen solamente un 10% de la produccin total,
observe la siguiente grfica.

El voltaje de alimentacin admite un valor muy flexible


comprendido entre 2 y 6,25 voltios, lo cual posibilita
el funcionamiento mediante pilas corrientes, teniendo
en cuenta su bajo consumo, menos de 2 mA a 5 V y 4
Mhz.

La gama media

En esta gama sus componentes aaden nuevas


prestaciones a las que poseen los de la gama baja,
hacindoles ms adecuados en las aplicaciones
complejas. El repertorio es de 35 instrucciones y la
longitud de las instrucciones es de 14 bits. Admiten
interrupciones, poseen comparadores de magnitudes
analgicas, convertidores A/D, puertas serie
y diversos temporizadores.
Algunos modelos disponen de una memoria
de instrucciones del tipo OTP y otros de
memoria EEPROM.

Figura 84 - Distribucin del mercado mundial de


Microcontroladores en el ao 2000.

El fabricante Microchip realiza una clasificacin en


gamas. Cada gama tiene caractersticas en comn y
que la distinguen de las dems.

La gama baja

La gama baja de los PIC encuadra nueve modelos


fundamentales en la actualidad. La memoria de
programa puede contener 512, 1 k 2 k palabras de
12 bits, y ser de tipo ROM, OTP (One Time
Programmable, programable una sola vez) o EPROM.
La memoria de datos SRAM puede tener una capacidad
comprendida entre 25 y 73 bytes. Slo disponen de
un temporizador (TMR0), un repertorio de 33
instrucciones y un nmero de terminales para soportar
las E/S comprendido entre 12 y 20. Esta gama no
permite el manejo de interrupciones.

74

El temporizador TMR1 de que dispone esta


gama tiene un circuito oscilador que puede
trabajar asncronamente y que puede
incrementarse aunque el microcontrolador
se halle en el modo de reposo (Sleep), posibilitando la
implementacin de un reloj en tiempo real.
Las lneas de E/S de la puerta B presentan unas
resistencias de carga pull-up activadas por software.

La gama alta

En la actualidad, esta gama est formada


principalmente por tres modelos cuyas caractersticas
responden a microcontroladores de arquitectura
abierta, pudindose expansionar hacia el exterior al
poder sacar los buses de datos, direcciones y control.
As se pueden configurar sistemas similares a los que
utilizan los microprocesadores convencionales, siendo
capaces de ampliar su configuracin interna, aadiendo
nuevos dispositivos de memoria y de E/S externas. Esta
facultad obliga a estos componentes a tener un elevado
nmero de terminales comprendido entre 40 y 44.

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Admiten interrupciones, poseen puerto serie, varios


temporizadores y mayores capacidades de memoria,
que alcanza los 8 k palabras en la memoria de
instrucciones y 454 bytes en la memoria de datos.

Algunas marcas de microcontroladores de uso comn.

INTEL (La familia 8051)

El formato de las instrucciones es de 16 bits y la pila


dispone de 16 niveles de profundidad. El repertorio
es de 55 58 instrucciones segn modelo.
La frecuencia mxima de funcionamiento es de 25 Mhz,
con un ciclo de instruccin de 160 ns.
En la tabla siguiente se exponen a grandes rasgos las
caractersticas ms importantes de las gamas baja,
media y alta.

Figura 85 - Microcontrolador Intel 805

Tabla 5 - Clasificacin de los PIC segn su gama

MICROPROCESADORES Y MICROCONTROLADORES

El 8051 es el primer
microcontrolador
de
la
familia
introducida por
Intel Corporacin.
La familia 8051 de
microcontroladores
son controladores de
8 bits capaces de
direccionar hasta 64
kbytes de memoria
de programa y una
separada memoria
de datos de 64
kbytes. El 8031(la
versin sin ROM
interna del 8051,
siendo esta la nica
diferencia) tiene 128
bytes de RAM
interna (el 8032 tiene
RAM interna de
256 bytes y un
temporizador
a d i c i o n a l ) .
El 8031 tiene dos
temporizadores/
contadores, un
puerto serie, cuatro
puertos de entrada/
salida paralelas de

75

M I C R O C O N T R O L AD O R E S

propsito general (P0, P1, P2 y P3) y una lgica de


control de interrupcin con cinco fuentes de
interrupciones.

SIEMENS

El Siemens SAB80C515 es un miembro mejorado


de la familia 8051 de microcontroladores. El 80C515
es de tecnologa CMOS que tpicamente reduce los
requerimientos de energa comparado a los
dispositivos de otras tecnologas.

Figura 88 - Microcontroladores Siemens

Figura 86 - Board de aplicacin para el


microcontrolador Intel 80C32

La ROM interna del 8051 y el 8052 no pueden ser


programados por el usuario. El usuario debe
suministrar el programa al fabricante y el fabricante
programa los microcontroladores durante la
produccin. Debido a costos, la opcin de la ROM
programado por el fabricante no es econmica para
produccin de pequeas cantidades. El 8751 y el 8752
son las versiones EPROM del 8051 y el 8052.
Estos pueden ser programados por los

Las caractersticas que tiene frente al 8051 son ms


puertos, un verstil convertidor anlogo a digital,
un optimizado Timer 2, un watchdog timer y modos
de ahorro de energa sofisticados.
El 80C515 es completamente compatible con el
8051. Esto, usa el mismo conjunto de instrucciones
del lenguaje assembly MCS-51.
Las nuevas facilidades del chip son controladas y
monitoreadas a travs de SFRs adicionales.

Figura 87 - microcontrolador Intel 8752

usuarios.
Durante la dcada pasada muchos fabricantes
introdujeron modelos mejorados del
microcontrolador 8051. Las mejoras incluyen
ms memoria, ms puertos, convertidores
anlogo-digital; ms temporizadores, ms
fuentes de interrupcin, watchdog timers y
subsistemas de comunicacin en red.

76

Figura 89 - microcontrolador Siemens SAE81C90

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

MOTOROLA

MICROCHIP

Figura 91 - Microcontrolador PIC 13F8720


Figura 90 - Microcontrolador Motorota 68HC11

El 68hc11 de la familia Motorola, es un potente


microcontrolador de 8 bits en su bus de datos, 16
bits en su bus de direcciones, con un conjunto de
instrucciones que es similar a los ms antiguos
miembros de la familia 68xx (6801, 6805, 6809).
Dependiendo del modelo, el 68hc11 tiene
internamente los siguientes dispositivos: EEPROM
o OTPROM (One Time Programmable ROM, ROM
de programacin nica), RAM, digital I/O, timers,
A/D converter, generador PWM (Modulacin de
ancho de pulso) y canales de comunicacin
sincrnica y asincrnica (RS232 y SPI) La corriente
tpica que maneja es menor que 10mA.
El CPU viene con un convertidor A-D que es
tpicamente de 8 canales y 8 bits de resolucin,
aunque el G5 tiene un A/D de 10 bits. Tambin
contiene una Interfase de comunicaciones serie
(SCI), entre otros.

Los microcontroladores PIC de Microchip


Technology Inc. Combinan una alta calidad, bajo coste
y excelente rendimiento.
Un gran nmero de estos microcontroladores son
usados en una gran cantidad de aplicaciones tan
comunes como perifricos del ordenador,
aplicaciones de automocin, sistemas de seguridad y
aplicaciones en el sector de telecomunicaciones y la
industria.
Las familias del los microcontroladores PIC estn
apoyadas por un rango amplio de sistemas de
desarrollo amistosos y programadores, emuladores.
As mismo, existe una gran seleccin de software
incluyendo ensambladores, compiladores,
simuladores, etc.
Debido a su crecimiento continuo, confiabilidad,
accesibilidad y coste, este manual se enfocar en el
estudio de estos microcontroladores.

MICROPROCESADORES Y MICROCONTROLADORES

77

M I C R O C O N T R O L AD O R E S

Los microcontroladores ms comunes en uso por


marca son:

En resumen, en la arquitectura Harvard se encuentra


separada la memoria de datos de la memoria de
instrucciones. En la actualidad un gran nmero
de microcontroladores incluyendo, los PIC
tienen esta arquitectura interna.

Tabla 6 - Comparacin de microcontroladores de diferentes marcas.

2.1.3 ARQUITECTURA INTERNA


DEL MICROCONTROLADOR
(VON NEUMANN,
HARVARD), DIAGRAMA
A BLOQUES

Arquitectura Von Neumann

La arquitectura Von Neumann se refiere a las


arquitecturas de computadoras que utilizan el
mismo dispositivo de almacenamiento, tanto
para las instrucciones como para los datos (a
diferencia de la arquitectura Harvard) El
trmino se acu en el documento First Draft
of a Report on the EDVAC (1945), escrito por
el conocido matemtico John von Neumann,
que propuso el concepto de programa
almacenado. Dicho documento fue redactado
en vistas a la construccin del sucesor de la
computadora ENIAC, y su contenido fue
desarrollado por Presper Eckert, John Mauchly, Arthur
Burks, y otros durante varios meses antes de que Von
Neumann redactara el borrador del informe.

Arquitectura Harvard

El trmino Arquitectura Harvard se refiere a las


arquitecturas de computadoras que utilizan
dispositivos de almacenamiento fsicamente separados
para las instrucciones y para los datos. A continuacin
se observa la arquitectura Harvard caracterstica,
donde la memoria de datos est separada de la
memoria de instrucciones.

Figura 93 - Diagrama a bloques de la


Arquitectura Von Neumann

Los ordenadores con arquitectura Von


Neumann constan de cinco partes:
- La unidad aritmtico-lgica o ALU,
- La unidad de control,
- La memoria,
Figura 92 - Diagrama a bloques de la Arquitectura Harvard

78

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

- Dispositivo de entrada/salida

A continuacin se describe la funcin de cada terminal

- Bus de datos que proporciona un medio


de transporte de los datos
En la siguiente figura se pueden observar estos bloques
funcionales

Tabla 7 - Descripcin de las funciones de las


terminales de los PIC

El PIC16F877A es uno de los ms


complejos de la familia 16FXXX, y posee
muchas mas funciones que su hermano
menor PIC16F84A.
Figura 94 - Bloques funcionales de la Arquitectura Von Neumann

Los sistemas basados en microprocesadores poseen


esta arquitectura actualmente.

Entre las mejoras se encuentran


disponibles terminales de entrada
analgica, comparadores de voltaje, terminales
para protocolos de comunicacin I2C, RS232, y
otras funciones especiales.

2.1.4 ARQUITECTURA EXTERNA


DEL MICROCONTROLADOR,
TERMINALES
En la siguiente figura se muestra el diagrama de
distribucin de las terminales del PIC16F84A sobre
un encapsulado PDIP18, obtenida de la hoja de datos
del fabricante. Las flechas indican si la terminal es de
entrada, salida o bidireccional.

Figura 95 - Diagrama de la distribucin de los


Pines del PIC16F84A

Figura 96 - Diagrama de la distribucin de


los Pines del PIC16F877A

MICROPROCESADORES Y MICROCONTROLADORES

79

M I C R O C O N T R O L AD O R E S

Para la generacin de los impulsos de


reloj internos los PIC16CXX disponen
bsicamente de cinco alternativas,
debiendo el usuario seleccionar la ms
adecuada a travs de la programacin del
microcontrolador:

LP
Oscilador de cristal de cuarzo o resonador
cermico de baja potencia
XT
Cristal o resonador cermico
HS
Oscilador de cristal o resonador de alta
velocidad
RC
Oscilador formado por una red resistencia
y condensador
INTRC
Oscilador interno de red RC.

Tabla 8 - Descripcin de las funciones de las terminales de los PIC

Puede observar que muchas de las terminales del


microcontrolador tienen ms de una funcin y esto es
porque estn multiplexadas. La funcin que realizar
cada terminal se define en el programa, de tal forma
que es necesario configurar las terminales en la
programacin.

La red de oscilacin debe conectarse en


las terminales OSC1 y/o OSC2 que el
microcontrolador posee. La siguiente
figura muestra la configuracin que el
fabricante recomienda para la utilizacin de cristal
(XTAL) o resonador cermico.

2.1.5 CIRCUITO DE RELOJ PARA


EL MICROCONTROLADOR
El circuito de reloj (Clock) es el encargado de producir
un tren de pulsos que marcan el ritmo al cual el
microcontrolador realiza sus funciones.

80

Figura 97 - Diagrama de conexin del


Oscilador a Cristal en los PIC16FXX

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Los valores de C1 y C2 recomendados por el


fabricante para resonadores cermicos en los modos
XT y HS se seleccionan de la siguiente tabla segn su
frecuencia de trabajo.

Note que los valores recomendados para REXT deben


estar comprendidos entre 5 kOhm y 100 kOhm y
CEXT deben ser mayor a 20 pF.
En caso de que se necesite una operacin con seal
externa de reloj (clock) se debe utilizar la siguiente
configuracin en cualquiera de los modos LP, XT, HS:

Tabla 9 - Valores recomendados de C1 y C2 para resonadores cermicos.

Si el oscilador es a cristal se deben escoger los


siguientes valores para C1 y C2 segn su frecuencia
de trabajo.

Tabla 10 - Valores recomendados de C1 y C2 Para resonadores a cristal

Cuando no se requiere una gran precisin en la


generacin de impulsos de reloj, se puede emplear
una red R-C mucho ms econmica. En este caso, la
frecuencia de oscilacin viene determinada por los
valores de resistencia y del condensador, as como de
la temperatura de funcionamiento.

Figura 99 - microcontrolador con


operacin de Reloj externo

Es necesario tener cuidado con la eleccin y


configuracin del oscilador adecuado a la aplicacin
que se desea desarrollar, porque de lo contrario se
pueden tener una operacin inadecuada e inestable
del microcontrolador. En general se puede decir que
para aplicaciones de mucha precisin donde los
tiempos de trabajo son crticos se deben usar
osciladores a cristal; y en las aplicaciones que no
requieren tiempos crticos se pueden utilizar las redes
R-C.

2.1.6 DISTRIBUCIN
DE MEMORIA
Existen dos bloques principales de memoria en los
microcontroladores PIC que son:
- Memoria de Programa
- Memoria de Datos

Figura 98 - Circuito oscilador RC

Memoria de Programa:

Como su nombre lo indica, en esta memoria se aloja


el programa principal de operacin del
microcontrolador. Esta memoria puede ser de
diferentes tipos y capacidades segn el
microcontrolador que se est trabajando. Entre las
memorias de programa utilizadas por los
microcontroladores PIC se encuentran las siguientes:

MICROPROCESADORES Y MICROCONTROLADORES

81

M I C R O C O N T R O L AD O R E S

- OTP
(Memoria de programacin nica)
- EPROM
- EEPROM
- FLASH
Los microcontroladores con memoria OTP son los
de precio ms reducido pero slo pueden ser
programados una sola vez, luego de lo cual su
programa no puede ser modificado, stos se utilizan
para la produccin en serie. Por otro lado la memoria
EPROM puede ser programada varias veces pero tiene
la desventaja de necesitar luz ultra violeta para su
borrado. Las mejoras en la tecnologa EEPROM y
FLASH ofrecen estas opciones a un costo muy
accesible por lo que son muy comunes en el mercado.
A continuacin se observa la estructura en bloques de
la memoria de programa interna del microcontrolador
PIC16F84A.

Esta memoria tiene un ancho de 14 bits y se ubica


entre las direcciones 0000h y 3FFh. El vector de
RESET indica la direccin donde empieza a leer el
programa el microcontrolador cuando ste, es
reseteado o energizado, en este caso es la
direccin 0000h. el vector de interrupcin
perifrica ( Peripheral Interrupt Vector) indica la
direccin de memoria que es leda al momento de
ocurrir una interrupcin perifrica. Por ltimo,
observe que la memoria comprendida entre las
direcciones 3FFh y 1FFFh no est implementada.

Memoria de Datos:

La memoria de datos sirve para dos tareas


diferentes y est dividida en dos reas para este
objetivo:
- rea de Registros de funcin Especial
(Special Function Registers SFR)
- rea de Registros de Propsito General
(General Purpose Registers GPR)
Registros de Funcin Especial:
La funcin de los registros de esta rea de memoria
es la de controlar todo el funcionamiento del
microcontrolador, por ejemplo, es desde aqu
donde se configuran que terminales son de entrada
de datos, y cuales son de salida, analgicas y cuales
digitales, etc.
En otras palabras, estos registros controlan como
y cuando se activan y desactivan cada uno de los
bloques del microcontrolador.
Podra pensarse en un panel lleno de interruptores
de control que encienden o apagan cada funcin
del microcontrolador.

Figura 100 - Bloque de Memoria de Programa


Del microcontrolador PIC16F84A

82

A continuacin se muestra la configuracin interna


de la memoria de datos para el PIC16F84A
proporcionada por el fabricante.

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

En resumen podemos decir entonces, que son los


registros de funcin especial los que controlan el
funcionamiento del microcontrolador, y estos se
encuentran alojados en la memoria de datos.
Registros de Propsito General:
Esta rea de memoria de datos esta implementada
con RAM esttica y su funcin es permitir al usuario
un espacio donde pueda guardar datos que necesite
temporalmente durante la ejecucin del programa.
Para el PIC16F84A existen disponibles 68 registros de
8 bits cada uno, localizados en el rea inferior de la
figura anterior como el bloque nombrado General
Purpose Registers.
Por ltimo algunos microcontroladores poseen cierto
espacio de memoria EEPROM interna destinada
a guardar datos del usuario permanentemente.
Esta memoria es llamada EEPROM de datos o DATA
EEPROM. El PIC16F84A tiene por ejemplo 64 bytes
de esta memoria, mientras que el PIC16F877A posee
256 bytes disponibles para datos del usuario.

2.1.7 DISTRIBUCIN DE PUERTOS


DE ENTRADA/SALIDA

Figura 101 - Distribucin de registros para el PIC16F84A

Como puede observar, la memoria de datos est dividida


en dos bancos (Bank 0 y Bank 1), en cada banco se
encuentra un conjunto de registros de funcin especial
SFR determinado. Por ejemplo, en el banco 0 se encuentran
los SFR llamados TMR0, PCL, STATUS, FSR, PORTA,
PORTB, EEDATA, EEADR, PCLATH, INTCON. Todos
estos registros son de 8 bits de ancho y cada uno controla
bloques diferentes del microcontrolador. Por otro lado,
en el banco 1 encontramos algunos registros repetidos
del banco 0 y otros nuevos.

El objetivo principal de un microcontrolador es el


"control" de los dispositivos que se conecten a su
periferia, para esto es necesario entonces que el
controlador tenga acceso al exterior y esto lo logra
con terminales de entrada y salida de datos que se
agrupan en conjuntos llamados puertos.
Los puertos de entrada se encargan de ingresar
informacin analoga o digital al microcontrolador para
que ste genere una respuesta de acuerdo a dicha
entrada. Por otro lado los puertos de salida de datos
se encargan de exteriorizar el resultado del control
hecho por el microcontrolador.
Por ejemplo, el PIC16F84A tiene disponibles 13
terminales de entrada y/o salida digital agrupadas en
dos puertos que son el PUERTO A o PORTA y el

MICROPROCESADORES Y MICROCONTROLADORES

83

M I C R O C O N T R O L AD O R E S

PUERTO B o PORTB. El primero tiene 5 terminales


asociadas llamadas RA0, RA1, RA2, RA3 y RA4;
mientras que el segundo tiene 8 terminales asociadas
que van desde RB0 hasta RB7 (RB0:RB7) como se
observa en la siguiente figura.

Mentras que para el Terminal RA4 la estructura es la


siguiente:

Figura 102 - Terminales de entrada/salida del PIC16F84A

La informacin proporcionada por el fabricante


permite una mirada ms de cerca de la estructura
interna de los puertos. Por ejemplo, el PORTA para el
mismo PIC6F84A tiene la siguiente estructura en los
pines RA0 - RA3:

Figura 104 - Estructura interna


de la terminal RB4 del PIC16F84A

Puede observar que la terminal RA4 tiene una


estructura diferente debido a que est multiplexada
con otra funcin de temporizacin TMR0.
Otro detalle importante es que esta terminal tiene
una configuracin de salida de dren abierto, por lo
que es necesaria una resistencia (pull-up) conectada
a VDD si se utiliza como salida digital.
El puerto B o PORTB tiene una configuracin un
poco diferente como se puede observar a
continuacin para los pines RB0 a RB3
Figura 103 - Estructura interna de las terminales
RA0 a RA3 del PIC16F84A

84

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Los microcontroladores ms avanzados como el


PIC16F877A tienen configuraciones ms complejas
pues stos multiplexan hasta tres mdulos en la misma
terminal

Figura 105 - Estructura interna de las terminales


RB0 a RB3 del PIC16F84A

El PORTB tiene la caracterstica de poder poner sus


terminales de salida en alta impedancia a travs del buffer
tri-estado conectado a ellas. El pin RB0/INT est multiplexado
con el mdulo de interrupciones. Los terminales RB4 a RB7
(RB4RB7) estn multiplexados con el mdulo de
interrupciones y tienen la configuracin siguiente:

Figura 107 - Terminales de entrada/salida del PIC16F877A

Este microcontrolador posee 33 terminales de entrada


y/o salida de datos agrupadas en 5 puertos. El PORTA
posee 6 bits, el PORTB con 8 bits, el PORTC tiene 8
bits igual que el PORTD y por ltimo el PORTE que
tiene asociados 3 bits.
Los puertos y sus terminales pueden clasificarse entre
analgicos y digitales. Las terminales de entrada
analgica las reconocemos por su nombre, stas
siempre empiezan con las letras AN seguidas del
nmero de BIT correspondiente a su puerto, por
ejemplo, la terminal AN5 es una entrada analgica que
corresponde al bit 5 de su puerto.
Por otro lado las terminales de entrada y/o salida digital
se reconocen por la letra R seguida de la letra del
puerto y el nmero de bit correspondiente a ese
puerto. Por ejemplo, la terminal nombrada RD3 es
una entrada y/o salida digital que corresponde al bit 3
del puerto D o PORTD.

Figura 106 - Estructura interna de los terminales


RB4 a RB7 del PIC16F84A

Observemos ahora la configuracin del PORTA para


el PIC16F877A

MICROPROCESADORES Y MICROCONTROLADORES

85

M I C R O C O N T R O L AD O R E S

trabajar solamente necesita una fuente de energa


estabilizada en el rango de voltajes determinado por
el fabricante y un oscilador externo, aunque existen
microcontroladores que poseen osciladores internos
eliminando as la necesidad de conexin de los
osciladores externos.
El procedimiento a seguir para instalar los
microcontroladores PIC puede hacerse segn los
pasos a continuacin:
Verificar antes de conectar el circuito que la
fuente de alimentacin provea las tensiones y
corrientes necesarias determinadas por el
fabricante en la hoja de datos del dispositivo.
La fuente de alimentacin debe ser estabilizada
para evitar el mal funcionamiento del
microcontrolador y sus perifricos.
Verificar que los valores de los componentes del
oscilador estn entre el rango de trabajo
determinado por el fabricante en la hoja de datos
del microcontrolador.
Figura 108 - Estructura interna de los terminales
Del PORTA del PIC16F877A

Puede observar que la estructura es muy similar a la


del PIC16F84A con la diferencia que aqu poseemos
la terminal multiplexada con el convertidor analgico
/ digital.

DE
2.2 PROCESO
INSTALACIN DEL
MICROCONTROLADOR
2.2.1 PROCEDIMIENTO
DE TRABAJO
Los microcontroladores estn diseados de tal forma
que su instalacin requiere de un mnimo de
componentes externos para su correcto
funcionamiento. En general, un microcontrolador para

86

Conectar el microcontrolador al circuito y


alimentarlo.
Los microcontroladores PIC tienen una rango amplio
de tensiones de trabajo que van desde los 2.0 V hasta
los 5.5 V. El mximo consumo de potencia para el
PIC16F84A es de 800 mW, mientras que para el
PIC16F877A es de 1.0 W.
Con los datos anteriores nos es posible disear una
fuente de alimentacin estabilizada que provea una
alimentacin entre 2.0 y 5.5 VDC. sta se puede lograr,
con el CI 7805 de 1 Amperio de corriente de salida
considerando que ste debe alimentar adems del
microcontrolador los dispositivos que se conecten al
mismo.
Por otro lado, la conexin de los osciladores debe
hacerse segn se estudio anteriormente llegando al
circuito bsico que se muestra a continuacin

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

La entrada de voltaje del


circuito anterior deber ser
entre 8 y 30 VDC rectificados
y filtrados, el diodo D1 protege
al circuito en caso de conectar
mal la polaridad de la tensin
de entrada. El pulsador S1 tiene
la funcin de Resetear el
microcontrolador reiniciando
el programa al momento de
pulsarlo. El circuito oscilador lo
constituye un cristal de 4 MHz
con
sus
respectivos
condensadores segn las
especificaciones del fabricante.
Se puede resumir entonces
que para instalar el
microcontrolador es necesario
conectarlo segn el esquema
anterior siguiendo los pasos
descritos.
Prctica:
Instalar circuitos con microcontroladores

Figura 109 - instalacin bsica de los PIC16FXXX con oscilador a cristal

Verifique las tensiones y corrientes de los


suministros antes de hacer cualquier conexin.

2.2.2 MEDIDAS DE SEGURIDAD

Observe las etiquetas y marcas de precaucin


que algunos dispositivos poseen, como alta
tensin, alta temperatura, etc.

Al momento de instalar un sistema microcontrolador


se deben tomar las siguientes medidas de seguridad:

Evite tocar los dispositivos cuando estos estn


funcionando.

Antes de ponerse en contacto con cualquier


dispositivo lea las precauciones y medidas de
seguridad que recomienda el fabricante.

Si es necesario hacer mediciones en el circuito


verifique con anterioridad el buen estado del
instrumento de medicin y sus accesorios.

MICROPROCESADORES Y MICROCONTROLADORES

87

M I C R O C O N T R O L AD O R E S

Utilice ropa adecuada y zapatos con suela


aislante para prevenir descargas elctricas a
travs del cuerpo.
Verifique la correcta conexin de tierras en
todos los instrumentos de medicin y equipo.
Guardar los dispositivos susceptibles de daarse
por electricidad esttica dentro de bolsas
antiestticas o envueltos en papel aluminio con
el objeto de que todas las terminales estn al
mismo potencial.
Proveer la correcta ventilacin de los
dispositivos en el lugar de operacin, verificando
que no hallan sobrecalentamientos.
Asegurar un correcto suministro de energa
elctrica estabilizada y libre de ruido.
Instalar disipadores de calor y ventiladores a los
elementos que los requieran.
Verificar las condiciones de trabajo del sistema,
como los niveles de humedad, temperatura,
polvo, sustancias txicas, etc. a las cuales ser
sometido e instalar el chasis adecuado a dichas
condiciones.

2.2.3 PROTECCIN AMBIENTAL


Mucho del material utilizado para empaque de los
dispositivos electrnicos es reciclable, como el cartn,
el papel y algunos plsticos. Esto se puede verificar
observando en el empaque el smbolo de reciclable.
Las bateras a base de cidos o materiales
contaminantes deben ser correctamente selladas y
ubicadas en lugares adecuados, para evitar la
contaminacin en caso que se degraden.
Al momento de dar mantenimiento evite la utilizacin de
rociadores que contengan CFC`s que daan la capa de
ozono y tenga cuidado de no usar estos en lugares con
temperaturas elevadas que puedan dar lugar a flamabilidad.

88

Observe que los equipos instalados de suministro de


energa no consuman ms que la necesaria para su
operacin. Por ejemplo, si un equipo necesita para su
correcta operacin un suministro de 3 watts, el instalar
un suministro que provea 10 watts provoca un
desperdicio de energa.
Almacene en lugares adecuados los materiales txicos
como el estao, pasta para soldar, cloruro frrico, etc.

DEL
2.3 PROGRAMACIN
MICROCONTROLADOR
2.3.1 DEFINICIN
La programacin de un microcontrolador es el proceso
por el cual se le indica al dispositivo que funciones debe
realizar y en que momento a travs de un conjunto de
instrucciones y/o objetos llamados lenguaje de
programacin.

2.3.2 TIPOS Y CARACTERSTICAS


Existen en general 3 formas de programar un
microcontrolador:
- Lenguaje de bajo nivel o Lenguaje Ensamblador
- Lenguaje de alto nivel (Basic, Pascal, C, etc.)
- Programacin en bloques o grfica

Lenguaje de bajo nivel:

Los microcontroladores PIC tienen un conjunto


reducido de instrucciones (RISC Reduced Instruction
Set Computer) que est constituido por 35
instrucciones de lenguaje ensamblador para los PIC
de la familia 16XXXX. Estas 35 instrucciones resultan
fciles de memorizar y son compatibles para la mayora
de microcontroladores de la misma familia.
Las ventajas que ofrece este tipo de lenguaje de
programacin para los PIC son las siguientes:
Set de instrucciones reducido y fcil de
memorizar

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Compatibilidad
entre
microcontroladores

familias

de

Herramientas de desarrollo provistas por el


fabricante disponibles en Internet de forma
gratuita o de bajo costo.
Gran cantidad de ejemplos y tutoriales
disponibles en la Web
Desventajas de este tipo de programacin:
Aplicaciones de complejidad requieren mucho
tiempo de desarrollo

Lenguaje de alto nivel:

En este tipo de lenguaje el programador se enfoca en


resolver el problema, utilizando instrucciones muy
especializadas de tal forma que la programacin es muy
fluida, clara y corta. Existen muchos lenguajes de
programacin de alto nivel entre los cuales se pueden
mencionar los siguientes:
- Basic
- Pascal
-C

Los programas largos son difciles de entender


e interpretar
El proceso de depuracin de errores o DEBUG
en programas extensos es engorroso.
La programacin en este lenguaje requiere
conocimiento muy detallado del funcionamiento
interno del microcontrolador.
Una de las herramientas que provee el fabricante para
programar los microcontroladores PIC es el software
MPLAB.
Figura 111 - Herramientas de desarrollo
de Lenguajes de alto nivel

Las ventajas de estos lenguajes de


programacin son:
Tiempo de desarrollo
de
aplicaciones
considerablemente corto,
haciendo que los costos se
reduzcan e incrementa la
productividad.
Claridad al momento de
desarrollar e interpretar los
programas.
Figura 110 - Herramientas de desarrollo para MPLAB

MICROPROCESADORES Y MICROCONTROLADORES

89

M I C R O C O N T R O L AD O R E S

El proceso de depuracin de errores o


DEBUG es mucho ms fcil y rpido
El mismo programa se puede cargar a
cualquier microcontrolador de cualquier
familia utilizando el compilador adecuado.
Implementacin de mdulos especiales
como pantallas LCD, comunicacin
USART, I2C, Mdulos ADC y DAC, etc.
son fciles de realizar.
La programacin en estos lenguajes no
requiere un conocimiento detallado del
microcontrolador.

2.3.3 MODOS DE
DIRECCIONAMIENTO
La funcin de un microcontrolador es manejar
los datos de entrada y/o salida de tal forma de
establecer un control sobre un sistema dado.
Entonces, la tarea principal es la de recoger,
procesar y mandar la informacin de manera
adecuada.
Para esto el microcontrolador debe ser capaz
de direccionar la informacin a donde se
n e c e s i t a . To d a l a i n f o r m a c i n q u e e l P I C
procesa pasa a travs de sus registros internos,
por lo que es necesario estudiar un poco ms a
fondo los mismos.

Desventajas
El software de desarrollo de estos
lenguajes representa una inversin,
aunque la relacin costo-beneficio en la
mayora de los casos es favorable.
El programa final suele ocupar un espacio
de memoria de programa un poco mayor
que su equivalente hecho en lenguaje
ensamblador.

Programacin en bloques o grfica:

Esta programacin se desarrolla utilizando


elementos grficos y de bloques de manera muy
amigable al usuario como se puede observar en
la figura 111.
Actualmente los lenguajes de alto nivel tienen
un auge muy significativo dadas las ventajas
expuestas anteriormente, por lo que en lo que
resta de este manual nos enfocaremos a este
tipo de programacin, especficamente en el
lenguaje Basic para los microcontroladores PIC.

90

Recordando el estudio anterior, existen dos


tipos de registros que son los de funcin
especial o SFR y los de propsito general o GPR.
Los SFR nos sirven para controlar el
funcionamiento de todos los mdulos del PIC,
mientras que los GPR son espacios de memoria
destinados al usuario.

Creacin de una variable


para direccionar informacin:
Se llama variable a un espacio de memoria RAM
destinada a guardar informacin. Este espacio
se encuentra donde se ubican los GPR.
El espacio que ocupa una variable puede tener
distintos tamaos que son los siguientes:

- Bit (1 bit de informacin)


- Byte (8 bits de informacin)
- Word (16 bits de informacin)

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

poseen 8 bits de espacio de almacenamiento, mientras


que las variables tipo Word son capaces de manejar
nmeros desde 0 hasta 65536.
Existen varios modos de direccionar o trasladar la
informacin hacia una variable, en lenguaje Basic es
sumamente fcil asignar valores o realizar operaciones
entre variables, observe los siguientes ejemplos:
Realice un programa en
lenguaje basic que
dimensione 3 variables tipo
byte llamadas VALOR1,
SENSOR, SALIDA, y asigne
los valores 32, 126 , 74 a
cada una de ellas
respectivamente.
Figura 112- Tamao y ubicacin de
las variables en la memoria RAM

Para crear una variable en lenguaje Basic, se utiliza la


declaracin DIM acompaada del nombre de la
variable y la capacidad de la misma, por ejemplo:
DIM DAT1 AS BIT
Declaracin de una variable de un bit

Solucin:
DIM VALOR1 AS BYTE
DIM SENSOR AS BYTE
DIM SALIDA AS BYTE
VALOR1 = 32
SENSOR = 126
SALIDA = 74

DIM LEDS AS BYTE


Declaracin de una variable de un byte
DIM X AS WORD
Declaracin de una variable tipo word
Una vez creada la
variable,
podemos
ingresarle informacin
de acuerdo a su
dimensin. Las variables
tipo bit pueden manejar
solamente dos nmeros
que son el 0 y el 1, las
variables tipo byte
pueden
manejar
nmeros desde el 0
hasta el 255 dado que

Realice un
programa en
lenguaje basic
que dimensione
una variable tipo
Word que guarde
el resultado de
la operacin
324 X 10.
Solucin:
DIM RESULT
AS WORD

Figura 113 - creacin de las


variables VAR1, LEDS y X.

MICROPROCESADORES Y MICROCONTROLADORES

RESULT =
324 * 10

91

M I C R O C O N T R O L AD O R E S

Realice un programa en lenguaje basic


que dimensione 2 variables tipo byte
llamadas VAL1, VAL2 y una tipo Word
llamada OP, luego asigne los valores 78
y 90 a VAL1 y VAL2 respectivamente y
sume los contenidos de VAL1 con VAL2
guardando el resultado de la operacin
en la variable OP.
Solucin:
DIM VAL1 AS BYTE
DIM VAL2 AS BYTE
DIM OP AS WORD
VAL1 = 78
VAL2 = 90
OP = VAL1 + VAL2
En resumen podemos decir que para direccionar
informacin a una variable, necesitamos
dimensionarla primero para luego realizar las
operaciones necesarias.

2.3.4 TRANSFERENCIA
DE INFORMACIN
Anteriormente vimos como direccionar o transferir
informacin a la memoria, ahora veremos como
transferir informacin desde y hacia los puertos que
es donde se conectan los sensores y actuadores del
sistema.
Para esto es necesario estudiar los registros de
funcin especial llamados TRIS y PORT, ya que
ellos controlan el flujo de informacin de los
puertos. A continuacin puede ver la ubicacin de
los registros PORTA, PORTB, TRISA y TRISB para
el microcontrolador PIC16F84A.

92

Figura 114 - Ubicacin de los registros TRIS y PORT

Los registros TRIS tienen la funcin de establecer si


una terminal de un puerto ser de entrada o de salida.
Existe un registro TRIS por cada puerto, por ejemplo,
el puerto A o PORTA tiene asociado el registro
TRISA, el PORTB tiene asociado el registro TRISB,
etc. Para establecer una terminal como entrada de
datos se debe colocar un 1 (Input) en el bit del registro
TRIS correspondiente a esa terminal y para establecer
la terminal como salida de datos se debe colocar un 0
(Output) A continuacin puede observar que el
registro TRISB est compuesto por 8 bits, cada bit
corresponde a una terminal del PORTB.

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

O simplemente se puede escribir su representacin


decimal que no requiere ningn smbolo.
TRISB = 137 ; representacin decimal
Se puede resumir entonces, que el registro TRIS
controla si un pin ser de entrada o salida, y el registro
PORT contiene el dato que se sacar o se ingresar al
PIC. Para tener ms clara la idea veamos el siguiente
ejemplo.

Figura 115 - El registro TRISB establece los pines


Del PORTB como entradas o salidas.

Entonces si por ejemplo, se desea que los pines RB0,


RB3 y RB7 sean entradas de datos y los dems pines
del mismo puerto sean salidas, deberemos colocar un
1 (Input) en los bits 0, 3, 7 del registro TRISB, y 0
(Output) en los bits 1, 2, 4, 5 y 6, como se muestra en
la siguiente figura:

Disear un programa que lea los datos


presentes en el PORTA y los muestre en
el PORTB.
Solucin: establecemos el puerto A como
puerto de entrada y el puerto B como
puerto de salida, luego leeremos el dato
presente en el puerto A y lo
transferiremos al puerto B.
INICIO:
TRISA = %11111 ; puerto A de entrada
TRISB = %00000000 ; puerto B de salida
PORTB = PORTA ; transferencia de
informacin

Figura 116 - Configuracin del registro TRISB

GOTO INICIO ; Salte a inicio y realice el


procedimiento nuevamente

Estos valores se asignan desde la programacin del


PIC con una simple operacin:

La instruccin GOTO INICIO sirve para


que el programa se efecte
indefinidamente en un lazo cerrado; de no
existir esta instruccin el programa se
ejecutara una sola vez.

TRISB = %10001001; representacin binaria


Observe que el dato se introdujo de forma binaria,
para esto es necesario escribir el smbolo de % antes
del nmero, de manera que el compilador reconozca
el siguiente valor como un nmero binario. Tambin
es posible escribir el mismo nmero de forma
hexadecimal utilizando el smbolo 0x antes del nmero
como se muestra a continuacin:
TRISB = 0X89 ; representacin hexadecimal

2.3.5 PARAMETRIZACIN
En muchas aplicaciones reales la programacin se hace
con valores o parmetros aproximados que es
necesario ajustar en el campo de trabajo. Para que
este ajuste o parametrizacin sea fcil, se recomienda
crear variables y/o constantes que permitan establecer

MICROPROCESADORES Y MICROCONTROLADORES

93

M I C R O C O N T R O L AD O R E S

los parmetros de operacin en una rea especfica


del programa, generalmente esto se hace al inicio antes
del programa principal, pero esto no es una regla,
siendo el programador el que escoge el lugar ms
adecuado.
DIM TEMP AS BYTE
DIM PASO AS BYTE
DIM POSICIN AS WORD
DIM DIRECCIN AS BIT
'_______ PARAMETRIZACIN_______TEMP = 100
'parametrizacin de variables
PASO = 150
POSICIN = 33
DIRECCIN = 1
CONST RETARDO = 200
'creacin de constantes
CONST ESPERA1 = 478
CONST ESPERA2 = 129

2.3.6 OPERACIONES
ARITMTICAS
Existen 6 operaciones bsicas que se pueden realizar,
aunque algunos compiladores de Basic permiten
muchas ms, stas son:
- Suma
- Resta
- Multiplicacin
- Divisin
- Elevacin
- Raz cuadrada
Estas operaciones se pueden realizar entre variables
tipo Byte o Word y es muy sencilla su utilizacin.
Observe el siguiente ejemplo demostrativo:
DIM A AS WORD
DIM B AS WORD
DIM X AS WORD
A = 123
B = A * 234
X = (12345 - B*X)/(B -A)

'-----------------------------------------------INICIO:
------------------------------------------------------------------------------------------------------

Como puede observar, se pueden realizar


clculos complejos que involucren a todas
las operaciones juntas.
El clculo de la elevacin se hace de la
siguiente manera:

END
Como ve anteriormente, existe un lugar
donde podemos hacer los ajustes
necesarios de operacin del programa de
forma muy accesible, observe tambin
que es posible la creacin de constantes
y se hace con la directiva CONST seguida
del nombre de la constante y su valor
asignado, estos valores a diferencia de los
de las variables, no cambian durante el
recorrido del programa.

94

DIM NUM1 AS BYTE


DIM R AS WORD
R = NUM1 ^ 2;
elevacin al cuadrado
R = NUM1 ^ 3;
elevacin al cubo
Tambin se puede realizar la elevacin,
son una serie de multiplicaciones

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

DIM NUM1 AS BYTE


DIM R AS WORD

X3 = X1 XOR X2 ;
operacin lgica XOR

R = NUM1 * NUM1;
elevacin al cuadrado

X3 = X2 NOR %11101011;
operacin lgica NOR

R = NUM1 * NUM1 * NUM1 ;


elevacin al cubo

PORTB = PORTA NAND 0XFA;


operacin lgica NAND

El clculo de la raz cuadrada se hace de


la siguiente manera:
DIM Y AS WORD
DIM R AS WORD
Y = 3600
R = SQR(Y)

Se puede observar que las operaciones lgicas pueden


efectuarse entre registros, variables y valores
constantes y pueden ser de tipo bit, byte o word.
Tambin es posible operar un solo bit de un registro o
variable determinada. Por ejemplo, si necesitamos
negar slo el bit 3 del Puerto B sin cambiar los dems
bits podemos efectuar:
PORTB.3 = NOT PORTB.3

2.3.7 OPERACIONES LGICAS


Las operaciones lgicas son siete:
- NOT
- AND
- OR
- XOR
- NXOR
- NAND
- NOR
Estas operaciones se deben efectuar una a la vez como
se observa en el siguiente ejemplo:

De esta forma se aplica la operacin NOT solamente


en el bit 3 del registro PORTB, dejando intactos los
dems bits.

2.3.8 CONTROL DE FLUJO


DE PROGRAMA
Adems de las operaciones aritmticas y lgicas existen
otras herramientas que nos ayudarn en la
programacin de una aplicacin dada. stas son:
- Salto incondicionado

DIM L1 AS BIT
DIM L2 AS BIT
DIM L3 AS BIT
DIM X1 AS BYTE
DIM X2 AS BYTE
DIM X3 AS BYTE
L1 = NOT L2;
operacin lgica NOT

- Retardos
- Estructuras condicionales
- Estructuras repetitivas
- Salto condicionado
- Subrutinas

L3 = L1 AND L2;
operacin lgica AND

- Interrupciones

MICROPROCESADORES Y MICROCONTROLADORES

95

M I C R O C O N T R O L AD O R E S

Salto Incondicionado:

Esta herramienta de programacin nos sirve para saltar


de un lugar del programa a otro, y hace uso de
etiquetas para identificar el destino del salto.
Para entender mejor el salto condicionado
veamos un ejemplo: supongamos que
necesitamos realizar un programa que
encienda y apague un led
conectado al pin RB1 del
PIC de forma peridica
e indefinidamente,
como se muestra en el
diagrama siguiente:

El programa lo procesa el microcontrolador en


secuencia de arriba hacia abajo. La primera instruccin
que encuentra es TRISB = %00000000, que le indica
que todos los pines del Puerto B sern de salida, luego
encuentra la etiqueta que le indica un punto de
referencia solamente, note que la etiqueta no es una
instruccin; seguidamente ejecuta la instruccin
PORTB.1 = NOT PORTB.1 haciendo que cambie de
estado lgico la salida RB1 donde est conectado el LED,
luego encuentra el salto dado por la instruccin GOTO
INICIO que le indica al microcontrolador que siga la
ejecucin del programa saltando a la etiqueta INICIO,
habiendo hecho esto el microcontrolador ejecutar la
siguiente instruccin desde la posicin INICIO que es
nuevamente PORTB.1 = NOT PORTB.1, para luego
encontrar otra vez el salto GOTO INICIO, quedndose
en un ciclo cerrado que dura indefinidamente.

Retardos:

Se llaman retardos o esperas a las instrucciones que


permiten un periodo de tiempo entre una instruccin y
otra. Para este efecto existen dos instrucciones de
espera o retardo:
Figura 117 - Circuito de luz intermitente

Solucin: El programa puede realizarse


muy fcilmente utilizando un salto
incondicionado dado por la instruccin
GOTO. Primero se debe establecer el
puerto B como salida de datos, luego se
define una etiqueta que indique el destino
del salto, y se realiza la secuencia de
encendido y apagado del led con la funcin
lgica NOT.
TRISB = %00000000 ; Puerto B de Salida
de datos
INICIO: ; etiqueta INICIO
PORTB.1 = NOT PORTB.1;
funcin de intermitencia
GOTO INICIO;
salto a INICIO

96

- WAITMS ; retardo en milisegundos


- WAITUS ; retardo en microsegundos
Su utilizacin es bastante simple, escribiendo la
instruccin seguida de un nmero que representa la
cantidad de milisegundos o microsegundos de espera
que se ejecutarn. Por ejemplo para realizar un retardo
o espera de 300 milisegundos basta escribir el cdigo:
WAITMS 300
Es permitido tambin utilizar variables como argumento:
DIM TEMP AS WORD
TEMP = 3000
WAITUS TEMP
El ejemplo anterior ejecuta una espera de 3000
microsegundos.

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Veamos un ejemplo ms concreto.


Ejemplo: Realice un programa en lenguaje
Basic que muestre con LEDS conectados
al Puerto B de un PIC16F84A, un conteo
binario de 8 bits. El conteo debe
incrementarse cada 200 milisegundos.
El diagrama
esquemtico
se muestra a
continuacin:

Figura 118 - Contador binario de 8 bits

Solucin:
TRISB = 0
PORTB = 0
INICIO:
PORTB = PORTB + 1
WAITMS 200
GOTO INICIO

Estructuras condicionales:

en algunas ocasiones se necesita realizar determinado


proceso, solamente si se cumple una condicin dada.
Para hacer esto posible existen las estructuras
condicionales IF - THEN - ELSE, que traducidas
significan S - ENTONCES - SINO. Su sintaxis completa
es la siguiente:

IF <CONDICIN> THEN
-------------------------------------------PROCEDIMIENTO 1-------------------------------------------ELSE
---------------------------------------------PROCEDIMIENTO 2--------------------------------------------ENDIF
La estructura debe entenderse de la siguiente
manera:
SI la condicin se cumple ENTONCES
------------------------------------------------- REALICE EL PROCEDIMIENTO 1 -------------------------------------------------SI NO se cumple la condicin
------------------------------------------------- REALICE EL PROCEDIMIENTO 2 -------------------------------------------------FIN DE LA ESTRUCTURA

MICROPROCESADORES Y MICROCONTROLADORES

97

M I C R O C O N T R O L AD O R E S

Si la condicin estipulada se cumple el programa


solamente ejecutar el procedimiento 1 anulando
automticamente el procedimiento 2, sino se cumple
la condicin, el programa ejecutar el procedimiento
2 anulando la ejecucin del procedimiento 1.
La estructura tambin nos permite omitir el ELSE
dndonos la forma reducida como sigue:
IF <CONDICIN> THEN
---------------------------------------------PROCEDIMIENTO---------------------------------------------ENDIF

En esta forma reducida el procedimiento solamente


se realizar si se cumple la condicin. Sino se cumple
la condicin la estructura automticamente finaliza.
Realice un programa que muestre en un
arreglo de LEDS conectados al Puerto B
los nmeros binarios 1, 2 3 cuando
presione los pulsadores conectados a RA0,
RA1 0 RA2, respectivamente.
Solucin:
TRISA = %11111
TRISB = 0
PORTB = 0

Figura 119 - Circuito que muestra los nmeros binarios 1, 2 3 cuando se presionan los pulsadores conectados a RA0, RA1 0 RA2.

98

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

INICIO:
IF PORTA.0 = 1 THEN
PORTB = 1
ENDIF
IF PORTA.1 = 1 THEN
PORTB = 2
ENDIF
IF PORTA.3 = 1 THEN
PORTB = 3
ENDIF

La variable de uso debe ser tipo BYTE o WORD.


El valor inicial es el nmero que se le asigna a la variable
cuando empieza el ciclo, este valor se incrementa o
decrementa en pasos determinados por el valor del
STEP hasta que la variable alcanza el valor final, en
este momento termina el ciclo. Cada vez que se
incrementa o decrementa la variable realiza el
procedimiento que tiene en su estructura.
Realice un programa que haga un conteo
binario en el puerto B que inicie con un
valor de 23 y finalice con un valor de 139
en incrementos de uno en uno.

GOTO INICIO
El programa inicia estableciendo el Puerto A como
entrada de datos y el Puerto B como salida. Luego
iniciar el Puerto B apagando todos los leds con la
instruccin PORTB = 0. Seguidamente empieza un
ciclo repetitivo donde pregunta si el pulsador
conectado a RA0 se ha presionado (IF PORTA.0 = 1),
puede observar en el diagrama esquemtico que
cuando se presiona el pulsador S4 se obtendr un
estado lgico alto en el pin RA0. Si esta condicin se
cumple, entonces realiza el procedimiento dentro que
en este caso es PORTB = 1.

Solucin: cuando los incrementos son de


uno en uno, es posible omitir el STEP
como se muestra a continuacin.
DIM CONT AS BYTE
TRISB = 0
PORTB = 0
INICIO:
FOR CONT = 23 TO 139
PORTB = CONT
WAITMS 200
NEXT CONT

De la misma manera se realizan las otras dos preguntas


terminando el ciclo con la instruccin GOTO INICIO.

Estructuras repetitivas:

Sirven para repetir un proceso un nmero de veces


determinado, incrementando o decrementando una
variable desde un valor inicial hasta un valor final.
Su forma de uso es la siguiente:
FOR <variable> = <valor inicial>
TO <valor final> STEP <paso>
--------------------------------------------PROCEDIMIENTO----------------------------------------------NEXT <variable>

GOTO INICIO
El programa empieza por crear una variable tipo BYTE
que servir para la estructura, luego inicial los registros
TRISB y PORTB, despus inicia el ciclo repetitivo FORNEXT, indicando que la variable CONT debe empezar
con un valor de 23 y terminar con un valor de 139
haciendo pasos de uno en uno. La primera vez CONT
tiene el valor de 23 y realiza el procedimiento PORTB
= CONT, WAITMS 200, despus encuentra el final
del ciclo que le indica que haga el siguiente incremento
NEXT CONT, en este momento se incrementa
CONT en una unidad teniendo el valor de 24 y realiza
de nuevo las instrucciones PORTB = CONT y
WAITMS 200. esto lo hace el nmero de veces
necesarias hasta que CONT alcanza el valor de 139,
en ese momento termina el ciclo siguiendo con las
instrucciones que puedan haber despus del NEXT.

MICROPROCESADORES Y MICROCONTROLADORES

99

M I C R O C O N T R O L AD O R E S

Realice un programa que haga un conteo


en el puerto B que inicie con un valor de
204 y finalice con un valor de 6 en
decrementos de dos en dos.

INICIO:
IF PORTA.0 = 1 THEN GOTO CONT1
IF PORTA.1 = 1 THEN GOTO CONT2
GOTO INICIO

Solucin: debido a que necesitamos


decrementar la variable de dos en dos,
tenemos que utilizar un STEP -2.
DIM CONT AS BYTE
TRISB = 0
PORTB = 0
INICIO:
FOR CONT = 204 TO 6 STEP -2
PORTB = CONT
WAITMS 200
NEXT CONT

CONT1:
FOR X = 0 TO 10
PORTB = X
WAITMS 400
NEXTX
GOTO INICIO
CONT2:
FOR X = 30 TO 50
PORTB = X
WAITMS 400
NEXT X
GOTO INICIO

GOTO INICIO

Salto Condicionado:

Realizamos un salto condicionado cuando necesitamos


ir a determinada parte del programa si y slo si se
cumple una condicin previa, de lo contrario no se
realiza el salto y se sigue con las siguientes instrucciones
del programa.
Esto es posible realizarlo con la unin de una estructura
IF y un salto GOTO de la siguiente manera:
IF <CONDICIN> THEN GOTO <ETIQUETA>
Realice un programa que ejecute un
conteo de 0 a 10 en el puerto B cuando
se presione un pulsador conectado a RA0
y un conteo de 30 a 50 cuando se presione
otro pulsador conectado a RA1.
Solucin:
DIM X AS BYTE
TRISA = %11111
TRISB = 0
PORTB = 0

100

Subrutinas:

Se le llama subrutina a un bloque de programa que


posee un inicio y un retorno que permite estructurar
el programa en bloques funcionales, de tal forma que
un programa extenso se puede desglosar en
mdulos o subprogramas ms simples llamados
Subrutinas. Se puede decir que una subrutina tiene
similar funcionamiento que un salto GOTO con la
diferencia que posee un retorno que hace regresar al
programa a la siguiente instruccin del punto de
partida.
La estructura de una subrutina es la siguiente:
GOSUB <ETIQUETA>
---------------------------------------------------------------------------------------------END
<ETIQUETA>
------------------------------------PROCEDIMIENTO------------------------------------RETURN

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Realice el programa del ejemplo anterior


de salto condicionado utilizando
subrutinas:
Solucin:
DIM X AS BYTE
TRISA = %11111
TRISB = 0
PORTB = 0
INICIO:
IF PORTA.0 = 1
THEN GOSUB CONT1
IF PORTA.1 = 1
THEN GOSUB CONT2
GOTO INICIO
END
CONT1:
FOR X = 0 TO 10
PORTB = X
WAITMS 400
NEXTX
RETURN
CONT2:
FOR X = 30 TO 50
PORTB = X
WAITMS 400
NEXT X
RETURN

Interrupciones:

Se le llama interrupcin a un evento especial que hace


que el microcontrolador deje de realizar el programa
principal, y se dedique a un subprograma
especial llamado rutina de servicio de
I n t e r r u p c i n . Este subprograma se ejecuta
solamente cuando la interrupcin tiene efecto, luego
de lo cual el microcontrolador regresa a la instruccin
donde se qued del programa principal.
Existen 4 fuentes de interrupcin para el PIC16F84A
que son:
- Interrupcin externa en el pin RB0/INT
- Desbordamiento del mdulo temporizador
TIMER0 (TMR0)
- Interrupcin por cambio de estado de los pines
RB4 a RB7
- Interrupcin por escritura completa de
EEPROM
Estas interrupciones se deben activar o desactivar
desde el programa a travs del registro de
funcin especial llamado INTCON (Interrupt
Control. A continuacin se observa la lgica de
funcionamiento de las interrupciones y el registro
INTCON.

Observe cuidadosamente que es necesario colocar el


final del programa principal con la instruccin END,
luego de la cual se pueden realizar las subrutinas. En
otras palabras, las subrutinas siempre se realizan
despus del final del programa principal.
Note que nuestro programa tiene la forma de bloques
nombrados con etiquetas y cada bloque hace una
funcin relativamente sencilla.
A esta forma se le conoce como programacin
estructurada y hace que el cdigo sea ms entendible
y a su vez ms estable en su funcionamiento.

Figura 120 - Lgica de funcionamiento de las interrupciones


y registro INTCON

MICROPROCESADORES Y MICROCONTROLADORES

101

M I C R O C O N T R O L AD O R E S

Este registro de 8 bits controla todo lo referente a las


interrupciones. En este registro podemos encontrar
los bits de habilitacin o Enable Bits y los bits de
banderas o flags.

Bits de Habilitacin (Enable Bits):

Estos se encargan de activar o desactivar cualquiera


de las cuatro fuentes de interrupcin vistas
anteriormente. Estos bits se pueden observar en la
figura anterior y son los siguientes:
GIE: Global Interrupt Enable (Habilitador de
Interrupciones Global), se encarga de habilitar
o deshabilitar todas las interrupciones en
general. Un 1 en este bit habilita y un 0
deshabilita. Observe la figura anterior.
EEIE: EEPROM Interrupt Enable (Habilitador
de Interrupcin del modulo EEPROM): este bit
se encarga de habilitar o deshabilitar solamente
el mdulo de interrupciones de escritura de la
memoria EEPROM. Un 1 en este bit habilita y
un 0 deshabilita. Observe la figura anterior.
T0IE: TMR0 Interrupt Enable (Habilitador de
interrupcin del mdulo Temporizador TMR0):
este bit se encarga de habilitar o deshabilitar
solamente el mdulo de interrupciones del
Temporizador TMR0. Un 1 en este bit habilita y
un 0 deshabilita. Observe la figura anterior.
INTE: External Interrupt Enable (Habilitador de
Interrupcin Externa en el pin RB0/INT): este
bit se encarga de habilitar o deshabilitar
solamente el mdulo de interrupciones externa
en el pin RB0/INT. Un 1 en este bit habilita y un
0 deshabilita. Observe la figura anterior.
RBIE: RB port change Interrupt Enable
(Habilitador de Interrupcin por cambio en RB):
este bit se encarga de habilitar o deshabilitar
solamente el mdulo de interrupciones por

102

cambio de estado lgico en los pines RB4 a RB7.


Un 1 en este bit habilita y un 0 deshabilita.
Observe la figura anterior.

Registro INTCON:

Bits de banderas (Flag Bits):

Estos bits se encargan de avisar cuando una


interrupcin ocurre. Su estado lgico 1 indica que una
interrupcin ha tenido lugar, y es necesario volverla a
0 desde la programacin. Los bits de banderas son los
siguientes:
T0IF: TM0 Interrupt Flag (bandera de
interrupcin del temporizador 0 TMR0), esta
bandera indica con un 1 lgico cuando hay una
interrupcin causada por desbordamiento del
temporizador TMR0.
INTF: RB0/INT External Interrupt Flag
(Bandera de interrupcin Externa en el pin RB0/
INT), esta bandera indica con un 1 lgico cuando
hay una interrupcin causada por un estmulo
externo en la terminal RB0/INT.
RBIF: RB Port Change Interrupt Flag (Bandera
de Interrupcin por cambios en los bits RB4:RB7
del puerto B. esta bandera indica con un 1 lgico
cuando hay una interrupcin causada por un
cambio de estado lgico en cualquiera de los
pines RB4 a RB7.
Para entender la programacin veamos un ejemplo:
En una lnea de produccin se necesita
contar la cantidad de piezas terminadas
que se producen. Estas piezas activan un
interruptor S2 conectado al pin RB0/INT
del microcontrolador como se muestra
en la siguiente figura. El conteo debe
mostrarse de forma binaria en un arreglo
de 5 leds conectados al puerto A del
PIC16F84A, de tal forma que cada pieza
que active el interruptor S2 haga que se
incremente el conteo del puerto en uno.

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Figura 121 - Implementacin de Interrupcin en RB0/INT

Solucin: debido a que slo se necesita la fuente de


interrupcin RB0/INT, debemos configurar el registro
INTCON para que habilite el bit INTE y deshabilite
los otros. Tambin se debe habilitar el bit GIE para
que las interrupciones funcionen.

La rutina de interrupcin se establece entre las


instrucciones ON INTERRUPT y RESUME. Observe
que la rutina de interrupcin se debe realizar despus
del END del programa principal.

TRISA = 0
TRISB = 0XFF
PORTA = 0
PORTB = 0
INTCON = %10010000

Cuando ocurre una interrupcin, el programa salta a


la rutina ON INTERRUPT y realiza el cdigo que est
dentro, hasta que encuentra la instruccin RESUME
que le indica que ha terminado la interrupcin y que
regrese a la posicin de donde sali.

END

Debe tener cuidado de resetear la bandera de


interrupcin que se activ, con el objeto de permitir
nuevas interrupciones posteriormente. Esto se hace
en el programa anterior con la instruccin
INTCON.INTE = 0, que debe escribirse antes del
RESUME.

INICIO:
ON INTERRUPT
PORTA = PORTA + 1
INTCON.INTE = 0
RESUME

MICROPROCESADORES Y MICROCONTROLADORES

103

M I C R O C O N T R O L AD O R E S

2.3.9 TEMPORIZADORES

Si por ejemplo necesitamos dividir la frecuencia de


reloj en 16, debemos colocar 011 en los bits PS2, PS1,
PS0 respectivamente (observe la tabla anterior)

El PIC16F84A cuenta con un temporizador compuesto


por un contador de 8 bits y un pre-escalador de 8 bits.
La siguiente figura muestra el diagrama a bloques de
su estructura interna.

La seleccin del pre-escalador la hace el bit PSA del


registro OPTION.

Contador TMR0: es un
contador de 8 bits cuya
cuenta puede ser leda o
escrita a travs del registro
de funcin especial TMR0
desde la programacin.
Cuando este contador
desborda su conteo (de FFh
a 00h) setea o pone 1 en la
Figura 122 - Diagrama a bloques del temporizador TMR0
bandera T0IF del registro de
interrupciones INTCON, indicando que el conteo ha
Fuentes de Reloj del Temporizador TMR0: A la
llegado a su final.
izquierda de la figura puede observar dos fuentes de
reloj (CK) que son multiplexadas, estas fuentes son el
A continuacin se observa el registro OPTION
pin externo RA4/T0CK o una frecuencia constante
proveniente del oscilador principal Fosc/4.
La seleccin de la fuente de reloj la hace
el bit T0CS (Timer0 Clock Select) que
se encuentra en el registro de funcin
especial OPTION.
Pre-Escalador: es un divisor de
frecuencia programable a travs de los bits PS0, PS1,
PS2, cuya funcin es dividir la frecuencia de reloj
seleccionada para el TMR0 segn la siguiente tabla:

Figura 124 - Registro de funcin especial OPTION

Realice un programa que produzca una


interrupcin cada 100 microsegundos
utilizando un PIC16F84A con oscilador
a cristal de 4 Mhz.
Solucin: primero se calcula la frecuencia
de reloj interna de la siguiente manera:
Fck = Fosc/4
Fck = 4 Mhz/4 = 1Mhz
Calculemos el periodo de esta seal de
reloj:

Figura 123 - Valores de PS2:PS0 para


configurar el Pre-Escalador

104

T = 1/Fck
T = 1/1Mhz = 1 microsegundo

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Este clculo indica que si se selecciona la fuente de


reloj interna Fosc/4 sin Pre-Escalador, el
Temporizador incrementara su conteo cada 1
microsegundo. El temporizador produce un conteo
normal de 255 ciclos, pero se necesita un conteo de
slo 100, para lograr esto, es necesario dar un valor
inicial al contador de 155 para que cuando llegue a
255 y produzca la interrupcin haya realizado slo 100
ciclos equivalentes a 100 microsegundos.
OPTION.T0CS = 0
' Fuente de reloj = Fosc/4
OPTION.PSA = 1
' no Pre-Escalador
INTCON = %10100000
' Habilitamos interrupcin del TMR0
TMR0 = 155
INICIO:
END

1 Temporizador / contador de 8 bits con PreEscala y Post-Escala


2 Mdulos PWM de 16 bits de resolucin
1 Puerto serial sncrono (SSP) con comunicacin
SPI e I2C
1 Transmisor / Receptor de comunicacin serial
USART/SCI
1 Puerto paralelo esclavo (PSP) de 8 bits
8 Canales de convertidores analgico digital de
10 bits
2 comparadores anlogos con voltajes de
referencia programables.
5 puertos de entrada / salida digitales con un
total de 33 terminales de trabajo.

ON INTERRUPT
TMR0 = 155
' Reestablecer el valor inicial del TMR0
INTCON.T0IF = 0
' Habilitar la bandera de interrupcin
RESUME

2.3.10 DISPOSITIVOS
DE ENTRADA/SALIDA
Los PIC ms avanzados de la gama media como el
16F877A contienen muchos dispositivos de entrada y
salida de datos y mdulos perifricos, entre los que se
pueden mencionar los siguientes:
1 Temporizador / contador de 8 bits con PreEscala
1 Temporizador / contador de 16 bits con PreEscala

2.3.11 CONFIGURACIN PARALELA


El puerto paralelo esclavo o PSP (Parallel Slave Port),
es un mdulo interno de los microcontroladores ms
avanzados de la gama media que est diseado para
ser conectado al bus de datos de un sistema
microprocesador de 8 bits, de tal forma que el
microcontrolador forme parte del sistema
microprocesador.
Es posible leer y escribir en el puerto a travs de las
lneas de control RD (RE0/RD/AN5), WR (RE1/WR/
AN6) Y CS (RE2/CS/AN7), como si fuera cualquier
dispositivo perifrico del microprocesador, y los 8 bits
de datos se encuentran en el puerto D (PORTD)
La activacin y control de este mdulo debe hacerse
desde la programacin con los registros PORTD,
PORTE, TRISE, PIR1, PIE1 y ADCON1 que se
muestran a continuacin:

MICROPROCESADORES Y MICROCONTROLADORES

105

M I C R O C O N T R O L AD O R E S

Figura 125 - Registros asociados al Puerto Paralelo Esclavo Para el PIC16F877A.

2.3.12 CONFIGURACIN
COMUNICACIN SERIAL
El mdulo de comunicacin serial USART
(Universal Synchronous Asynchronous Receiver
Transmitter) disponible en los microcontroladores
PIC16F87X, es un poderoso sistema capaz de
comunicarse con el protocolo RS232 hacia
computadores y terminales que obedezcan el
mismo protocolo.
A continuacin se observa como conectar el
microcontrolador a una computadora personal a
travs de este puerto:

Figura 127 - Conexin del CI MAX232 con un computador Personal

Figura 126 - Conexin del Microcontrolador con el CI MAX232. Para interfase de comunicacin serial con protocolo RS232.

106

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Observe que es necesario utilizar el integrado


MAX232 para ajustar los niveles de voltaje requeridos
por el protocolo RS232. La programacin en
ensamblador de este mdulo es compleja, pero en
lenguaje Basic es muy sencilla.
Primero debe definir la terminal RC7/RX/DT como
entrada digital y luego la terminal RC6/TX/CK como
salida digital. Despus debe establecer la frecuencia
de comunicacin en baudios que puede estar entre
los siguientes valores: 300, 600, 1200, 2400, 4800,
9600, 14400, 19200, 28800, 31250, 38400 y 57600.
Es necesario aclarar que entre mayor sea la frecuencia
de comunicacin habr ms probabilidad de errores
de transferencia de datos. Una frecuencia normal de
comunicacin, es de 9600 baudios que ofrece rapidez
y confiabilidad. Por ultimo la transmisin de datos se
efecta con la instruccin HSEROUT, y la recepcin
de datos con la instruccin HSERIN, como se muestra
en el siguiente ejemplo:
Elabore un programa en lenguaje Basic
que transmita el texto "Guatemala" por
el puerto serial a una velocidad de 9600
baudios hacia una
computadora
personal.
El mensaje debe
ser visualizado en
el computador
utilizando
el
programa Hyper
Te r m i n a l ,
configurando el
mismo para una
velocidad de
recepcin de
9600 baudios
(bits
por
Segundo), 8 bits
de datos, ningn
bit de paridad y
control de flujo
por hardware.

Solucin:
TRISC.6 = 0 'pin TX de salida
TRISC.7 = 1 'pin RX de entrada
HSEROPEN 9600
WAITMS 1000
INICIO:
HSEROUT "Guatemala"

2..3.13 CONFIGURACIN DEL


CONVERTIDOR A/D, D/A
El modulo convertidor analgico - Digital provisto en
el PIC16F877A cuenta con 8 canales de entrada que
reconocemos con las terminales AN0 a AN7 y es capaz
de efectuar la conversin de un solo canal a la vez.
El ADC provee una conversin de 10 bits de
resolucin con voltajes de referencia programables.
A continuacin se muestra el diagrama de bloques
simplificado de su estructura interna:

Figura 128 - Diagrama a bloques del convertidor Analgico - Digital del PIC16F877A.

MICROPROCESADORES Y MICROCONTROLADORES

107

M I C R O C O N T R O L AD O R E S

Figura 129 - Detalle del un pin de entrada del convertidor analgico - digital.

Para que la conversin efectuada por este mdulo


se realice de forma correcta, es necesario cumplir
con ciertos requerimientos estipulados por el
fabricante.
En la hoja de datos del dispositivo se observa el
detalle de un pin de entrada analgico conectado al
convertidor.
En el diagrama anterior VA y RS representan la
fuente de voltaje externa y su resistencia interna
sobre la cual se har la conversin Analgico Digital.
El fabricante recomienda que la resistencia RS de la
fuente no sea mayor a 2.5 Kohm.

En la prctica esta resistencia debe ser lo ms


pequea posible para no tener errores de
conversin, de lo contrario el capacitor Chold no
se logra cargar con rapidez y la conversin se efecta
con un valor de voltaje errneo.
La programacin de este mdulo requiere el control
del registro de funcin especial llamado ADCON1.
Los bits que nos interesan de este registro son
el conjunto PCFG3 :PCFG0, que sirven para
seleccionar que terminales del microcontrolador
sern usadas como entradas analgicas, entradas
/ salidas digitales y que terminales sern usadas
como voltajes de referencia, segn la tabla dada
por el fabricante que se muestra a continuacin:

Figura 130 - Registro ADCON1

108

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Figura 131 - Configuracin de los bits PCFG3:PCFG0.

En esta tabla A representa una entrada analgica, D


representa una entrada/salida digital, Vref representa
una terminal asociada a un voltaje de referencia.
Puede notar que la cantidad y la ubicacin de las
terminales de entrada analgicas se definen por estos
bits PCFG3:PCFG0, de tal forma que en la
programacin necesitaremos configurarlos
adecuadamente antes de hacer cualquier conversin.

Elabore un programa en lenguaje Basic


que realice la funcin de un Vumetro
digital, con su entrada de voltaje
analgica en el pin RA0 y 8 salidas
digitales conectadas al puerto PORTB
con LEDS como se muestra en la
siguiente figura, de tal forma que los
LEDS se enciendan de acuerdo a la
magnitud del voltaje de entrada:

Dicho lo anterior, vea un ejemplo del uso del


convertidor Analgico - Digital.

MICROPROCESADORES Y MICROCONTROLADORES

109

M I C R O C O N T R O L AD O R E S

Figura 132 - Vumetro Digital con PIC16F877A

Solucin: primero se define la fuente de reloj para el


convertidor con la instruccin Define ADC_CLOCK,
donde el nmero se escoge de acuerdo a la frecuencia
del oscilador del microcontrolador, en este caso para
un oscilador de 4 MHz se escoge el valor de 3. Despus
se define el tiempo de muestreo en microsegundos
usando Define ADC_SAMPLEUS. Luego se debe
dimensionar una variable tipo WORD que guarde el
resultado de la conversin, en este caso DIM
ANVALUE AS WORD hace esta funcin. Por ltimo
se configura el registro ADCON1 para que permita la
entrada analgica en el pin AN0 y se procede a hacer
la conversin con la instruccin ADCIN 0, ANVALUE,
donde el primer argumento describe el canal de
entrada analgico y el segundo argumento describe la
variable de destino donde se guarda la conversin
efectuada.

110

DEFINE ADC_CLOCK = 3
DEFINE ADC_SAMPLEUS = 10
DIM ANVALUE AS WORD
TRISA = 0XFF
TRISB = 0
ADCON1 = 0
INICIO:
ADCIN 0, ANVALUE
If anvalue < 100 Then PORTB = %00000000
If anvalue > 100 Then PORTB = %00000001
If anvalue > 200 Then PORTB = %00000011
If anvalue > 300 Then PORTB = %00000111

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

If anvalue > 400 Then PORTB = %00001111


If anvalue > 500 Then PORTB = %00011111
If anvalue > 600 Then PORTB = %00111111
If anvalue > 700 Then PORTB = %01111111
If anvalue > 800 Then PORTB = %11111111
WAITMS 1
GOTO INICIO

Bsicamente el microcontrolador PIC tiene 2 modos


de operacin:
- Operacin en modo Normal
- Operacin en modo SLEEP.
Operacin en modo normal:

En la operacin en modo normal el microcontrolador


est al 100% de sus capacidades y consume toda la
energa necesaria para ello. El microcontrolador
siempre trabajar en este modo a menos que en la
programacin se le indique que pase al modo SLEEP.
Es posible regresar del modo SLEEP al modo normal
a travs de una interrupcin o RESET.

- Seal del Perro Guardin (Watchdog), si est activada.


- Cualquier Interrupcin producida por las siguientes
fuentes:
Interrupcin en el pin RB0/INT

2.3.14 MODOS DE OPERACIN

- RESET externo producido en el pin MCLR

Operacin en modo SLEEP:

Esta operacin fue diseada para que el


microcontrolador entre en un estado de bajo consumo
de energa o adormecimiento (del ingls SLEEP que
significa dormir) En este estado el oscilador principal
es apagado y los puertos conservan su ltimo estado
lgico presente al momento de ejecutar la orden de
SLEEP que puede ser nivel alto, bajo o alta impedancia.
Dado que el oscilador principal es apagado, el
programa no se sigue ejecutando.
El dispositivo puede ser despertado (wake-up) del
modo SLEEP a travs de cualquiera de los siguientes
eventos:

Interrupcin por cambio de estado en los


pines RB4:RB7
Interrupcin por escritura completa de
la memoria EEPROM.
Al momento de despertar del modo SLEEP, el
microcontrolador enciende todos sus mdulos y
contina con la ejecucin normal del programa.
La operacin SLEEP se utiliza cuando el
microcontrolador no tiene carga de trabajo y espera
solamente una seal de entrada para seguir la ejecucin
de un proceso determinado. En ese momento el
microcontrolador puede entrar en el modo SLEEP
consumiendo muy poca energa mientras espera la
seal que lo haga despertar y continuar con la ejecucin
normal del programa.
Para entrar al modo sleep se debe utilizar la instruccin
en assembler SLEEP desde la programacin.
En lenguaje Basic se debe utilizar el siguiente cdigo:
ASM: SLEEP

2.3.15 APLICACIONES
A continuacin se ofrecen 2 ejemplos de aplicacin
tpicos de los microcontroladores:
Semforo de 2 vas: Se necesita
desarrollar un proyecto de bajo costo que
permita el control de un sistema de
semforos de 2 vas. Desarrollar el
diagrama esquemtico del circuito

MICROPROCESADORES Y MICROCONTROLADORES

111

M I C R O C O N T R O L AD O R E S

Figura 133 - Diagrama esquemtico de un semforo de 2 vas

necesario utilizando LEDS y el


Firmware o programa en lenguaje
Basic. Los tiempos de encendido y
apagado de cada luz del semforo deben
ser parametrizables desde el inicio del
programa.
Solucin: dado que la aplicacin es
sencilla y requiere solamente 6 salidas se
utiliza el microcontrolador de bajo costo
PIC16F84A como se muestra en la
siguiente figura
Firmware:
'------------ Encabezado ---------------'Programa: Semforo de 2 vas
'Autor:
'Fecha:
'Versin: 1.0
'Pic: 16F84A
'Oscilador: XTAL 4 MHZ

112

'---------- Parmetros ---------------Const tverde1 = 4000


Const tamarillo1 = 1000
Const tverde2 = 2000
Const tamarillo2 = 1000
'----------- SMBOLOS -----------------Symbol lverde1 = PORTB.0
Symbol lamarillo1 = PORTB.1
Symbol lrojo1 = PORTB.2
Symbol lverde2 = PORTB.3
Symbol lamarillo2 = PORTB.4
Symbol lrojo2 = PORTB.5
'-------------------------------------TRISB = 0
PORTB = 0

'todo el PORTB de salida


'apagar todos los LEDS

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

inicio:

End

lrojo2 = 1
lverde1 = 1
WaitMs tverde1
lverde1 = 0
lamarillo1 = 1
WaitMs tamarillo1
lamarillo1 = 0
lrojo2 = 0
lrojo1 = 1
lverde2 = 1
WaitMs tverde2
lverde2 = 0
lamarillo2 = 1
WaitMs tamarillo2
lamarillo2 = 0
lrojo1 = 0

'encender luz roja sem.2


'encender luz verde sem.1
'esperar <parametro>
'apagar luz verde sem.1
'encender luz amarilla sem.1
'esperar <parametro>
'apagar luz amarilla sem.1
'apagar luz roja sem.2
'encender luz roja sem.1
'encender luz verde sem.2
'esperar <parametro>
'apagar luz verde sem.2
'encender luz amarilla sem.2
'esperar <parametro>
'apagar luz amarilla sem.2
'apagar luz roja sem.1

Goto inicio

'saltar a inicio
'fin del programa

Note que se utiliz un encabezado que no es


obligatorio, pero sirve para dar referencia al programa.
Adems se utilizaron smbolos para definir cada uno
de los pines del microcontrolador donde se conectarn
los leds del semforo, de tal forma que la programacin
sea ms fcil de comprender al momento de
desarrollar la secuencia.
Para terminar, el programa se puede simular para
verificar su correcto funcionamiento como se observa
a continuacin.

Control de movimiento y velocidad de


un motor Stepper unipolar de 4 fases:
Disear el Hardware y Firmware
necesarios para controlar la velocidad
y giro de un motor Stepper Unipolar
de 4 fases.
El control debe tener 5 botones
pulsadores que obedezcan a los
siguientes comandos:

Giro en direccin de las


manecillas del reloj CW

Giro en contra de las manecillas


del reloj CCW

Parada con las fases energizadas

Incremento de velocidad de giro

Decremento de velocidad de giro

Solucin:
La respuesta de los comandos debe
ser inmediata por lo que se
implementar con interrupciones.
La frecuencia de oscilacin del
microcontrolador en este caso no es
crtica por lo tanto, se utilizar
oscilador RC.
A continuacin se observa el Diseo
del Hardware.

Figura 134 - Simulacin del comportamiento del semforo de 2 vas.

MICROPROCESADORES Y MICROCONTROLADORES

113

M I C R O C O N T R O L AD O R E S

Figura 135 - Diagrama esquemtico del circuito de control de motor Stepper

Los interruptores tienen las siguientes funciones:


- S1 - Incremento de velocidad de giro
- S2 - Giro en sentido de las manecillas del reloj
CW
- S3 - Parada con las fases energizadas
- S4 - Giro en contra de las manecillas del reloj
CCW
- S5 - Decremento de velocidad de giro.
Las salidas de las 4 fases se obtienen de los bornes
JP1, JP2, JP3 y JP4.

114

La energa suministrada debe ser de 5 voltios y se


conecta sobre los bornes JP5 y JP6 respetando su
polaridad.
Firmware:
'programa:
'
'fecha:
'autor:
'PIC:
'Oscilador:
'observaciones:

control de velocidad y giro de


motor stepper unipolar 4 fases
20 / 1 / 2006
ERMJ
16F84A
RC
Proyecto de aplicacin Industrial.

inicio:
Dim vel As Word 'variable de control de velocidad
Dim stop As Bit 'control de paro

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

stop = 1

pos = pos + 1 'next pos


If pos > 4 Then pos = 1 'reset pos
Endif

'stop del motor activado

'---------- Parametrizacion -------------------------------Const vinc = 100


Const minvel = 1
Const maxvel = 1000

If dir = 0 Then
pos = pos - 1
If pos = 0 Then pos = 4
Endif
Endif
Goto sec

'incremento de
velocidad
'velocidad minima
'velocidad maxima

'--------------------------------------------------------------End
Dim dir As Byte

'variable de control de
direccion
Dim st(5) As Byte 'secuencia del motor
Dim pos As Byte 'posicion del vector motor
TRISA = 0xff
TRISB = 0x01
PORTB = 0
vel = 300
pos = 1

'set all PORTA pins as


outputs
'portb salidas
'inicializacion del portb
'valor inicial de reterdo en
milisegundos
'inicializacion de la posicion
del motor

INTCON.INTE =1 'enable RB0/INT interrupts


INTCON.GIE = 1 'enable all un-masked
interrupts
st(1) = %11000000
st(2) = %01100000
st(3) = %00110000
st(4) = %10010000

On Interrupt

'interrupt routine

INTCON.INTF = 0 'enable new RB0/INT


interrupts
If PORTA.0 = 1 Then
dir = 1
stop = 0
Endif
If PORTA.1 = 1 Then
dir = 0
stop = 0
Endif
If PORTA.2 = 1 Then
vel = vel + vinc
If vel > maxvel Then vel = maxvel
Endif
If PORTA.3 = 1 Then
If vel > vinc Then vel = vel - vinc
If vel < vinc Then vel = minvel
Endif

sec:
If stop = 0 Then
PORTB = st(pos) 'motor step
WaitMs vel
'retardo (velocidad)
If dir = 1 Then

If PORTA.4 = 1 Then stop = 1

Resume

MICROPROCESADORES Y MICROCONTROLADORES

115

M I C R O C O N T R O L AD O R E S

Figura 136 - Montaje de componentes y diseo de pistas para el circuito de control del motor Stepper.

2.4

CONFIGURACIN DE
MICROCONTROLADORES

Al momento de grabar un programa en el


microcontrolador se debe configurar la forma de
operacin del mismo.
Esta configuracin se hace desde el software de
programacin y se configuran los siguientes aspectos:
- Modo de operacin del Oscilador

- Proteccin del Cdigo o programa y de la


memoria EEPROM
- Utilizacin del modulo Watchdog Timer
- Power-Up Timer
- Brown-out Reset
- Low Voltaje Program
- Flash Program Write
- In-Circuit Debugger

116

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

En la siguiente figura se observa la ventana del software


programador EpicWin, donde se debe efectuar dicha
configuracin antes de grabar el programa en el
microcontrolador.
Es necesario aclarar que cada herramienta de software
viene diseada para trabajar con un circuito
programador especfico, de tal forma que un software
determinado no necesariamente es compatible con
cualquier circuito programador.
En este caso se utilizara el software EpicWin junto con
su hardware programador.

Proteccin del Cdigo (Code Protection)

Si se activa esta rea, no ser posible la lectura


posterior del programa grabado. Esto se hace para
evitar que se copie el programa grabado en el
microcontrolador, protegiendo as los derechos de
autor. Esto no afecta de ninguna forma la ejecucin
normal del programa.

Perro Guardin (Warchdog Timer)

Desde esta casilla se habilita o deshabilita el Watchdog


del microcontrolador.

Power-up Timer:

La activacin de esta casilla hace que el


microcontrolador espere cierto tiempo despus de
ser conectado o Reseteado para empezar la ejecucin
del programa. Esto se hace con el objeto de esperar
la estabilizacin del oscilador y de las seales elctricas
al momento de ser conectadas o Reseteadas, evitando
as comportamientos indeseables producidos por los
transitorios.

Figura 137 - Configuracin del microcontrolador PIC16F877A en el


software programador EpicWin

Oscilador (Oscillator)

En esta rea se configura el modo de operacin del


oscilador que se utilizara en el circuito.

Brown-out Reset:

La activacin de esta casilla, hace que el


microcontrolador se Resetee automticamente
cuando el voltaje de alimentacin decae a valores por
debajo del nivel de operacin normal. Este reseteo
automtico previene un comportamiento aleatorio que
puede tener el microcontrolador a causa de la falta de
energa.

Programacin de bajo voltaje


(Low Voltaje Program)

Esta casilla debe activarse si el microcontrolador se


programar con niveles bajos de voltaje. Esta opcin
no esta disponible en todos los microcontroladores y

MICROPROCESADORES Y MICROCONTROLADORES

117

M I C R O C O N T R O L AD O R E S

es necesario un circuito programador especial para


cumplir con esta operacin.

Depuracin en el Circuito
(In-Circuit Debugger ICD)

La depuracin en el circuito permite visualizar el


comportamiento de los registros y la memoria del
microcontrolador mientras ste est operando en el
circuito, con el objeto de detectar y corregir errores
de programacin.
Esta opcin necesita de un mdulo especial que se
conecta al microcontrolador y que est a la venta por
la compaa Microchip. A continuacin se muestra uno
de estos mdulos

DE CARGA
2.5 PROCESO
DE PROGRAMA
2.5.1 CONJUNTO DE
INSTRUCCIONES
Los microcontroladores PIC manejan un conjunto de
instrucciones reducido (RISC) en lenguaje
ensamblador. En total suman 35 instrucciones que se
dividen en tres grupos principales:
- Instrucciones de operacin entre registros de tipo
Byte o (Byte - Oriented File Register Operations)
- Instrucciones de operacin entre registros de tipo
Bit o (Bit - Oriented File Register Operations)
- Instrucciones de Operacin
con literales y de control
(Literal and Control
Operations)

Figura 138 - Depurador en el Circuito (In-Circuit Debugger) ICD2 de la compaa Microchip.

118

Las instrucciones de tipo byte


permiten la transferencia de
informacin y la
operacin entre registros
usando 1 byte (8 bits) a la
vez. Las instrucciones de tipo
bit permite el control y
transferencia de informacin
de un bit a la vez. Por ltimo
las
instrucciones
de
operacin con literales
transfieren
valores
especficos a los registros, y
las operaciones de control
permiten la gestin del
programa
y
del
microcontrolador de forma
sencilla. A continuacin se
observa el conjunto de
instrucciones definido por el
fabricante
para
los
microcontroladores
PIC16XXXX.

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Figura 139 - Conjunto de instrucciones en lenguaje ensamblador para los PIC16XXXX

2.5.2 ESQUELETO
DE UN PROGRAMA
Todo programa tiene una estructura sobre la cual se
debe realizar. En el lenguaje Basic existe una estructura
vertical formada por 3 columnas en donde se establece
el uso de las etiquetas, instrucciones y comentarios.

Tambin existe una estructura horizontal en donde se


establece donde se escribir el programa principal,
donde se ubicarn las subrutinas o procedimientos, y
donde se ubicar la rutina de servicio de interrupcin.
Podemos entonces establecer 3 bloques bsicos
- Programa principal
- Subrutinas o procedimientos
- Rutina de servicio de interrupcin

MICROPROCESADORES Y MICROCONTROLADORES

119

M I C R O C O N T R O L AD O R E S

Figura 140 - Esqueleto de un programa en lenguaje Basic.

Note que al final del programa principal se debe


escribir la instruccin END, al final de las subrutinas
se escribe RETURN y el bloque de interrupciones debe
empezar con el delimitador ON INTERRUPT y debe
terminal con el delimitador RESUME.

2.5.3 USO DE PROCEDIMIENTOS


Para cargar un programa en el microcontrolador se
deben seguir el siguiente procedimiento en orden:
Escribir el programa en un software compilador,
grabarlo y ejecutar la compilacin y ensamble
(compile & assemble) verificando la ausencia de
errores. De haber errores, deben corregirse y realizar
de nuevo la compilacin. A continuacin se observa
un software compilador de lenguaje Basic y la opcin
de compilacin y ensamble (Compile & Assemble)

120

Figura 141 - Software Compilador de lenguaje Basic

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Si la compilacin es correcta el software crear un


archivo con el nombre del programa y una extensin
hex, que corresponde al cdigo hexadecimal del
programa compilado.

Conecte a la computadora el hardware


programador y encindalo,

Figura 144 Seleccin del PIC


a grabar.

Configure el oscilador, cdigo de proteccin,


watchdog, etc. Desde la ventana de configuracin
que puede seleccionar en el men View Configuration.

Figura142 - Hardware para rogramar Microcontroladores PIC

Luego ejecute el software suministrado con el


programador y abra el archivo.hex creado en el paso
1 como se observa a continuacin:

Figura143 - Software Programador de Microcontroladores PIC

Una vez abierto el programa, asegrese de


seleccionar el PIC apropiado en la ventana
principal del software de programacin, observe la
siguiente figura:

Figura 145 - Configuracin del microcontrolador

MICROPROCESADORES Y MICROCONTROLADORES

121

M I C R O C O N T R O L AD O R E S

Configure las opciones de grabacin como se


muestra a continuacin o a conveniencia.

Firmware:
Define LCD_BITS = 8
Define LCD_DREG = PORTC
Define LCD_DBIT = 0
Define LCD_RSREG = PORTE
Define LCD_RSBIT = 2
Define LCD_EREG = PORTE
Define LCD_EBIT = 1
Define LCD_RWREG = PORTE
Define LCD_RWBIT = 0
ADCON1 = 0x02
Lcdinit
Lcdout " Electrnica "

Figura 146 - Opciones de grabacin

Proceda a grabar el microcontrolador


presionando del botn correspondiente, vea la
siguiente figura:

Figura 147 - Botn de grabacin

End
Observaciones: las directivas Define especifican los
puertos y nmero de bits en donde se conectar en
modulo LCD, la instruccin Lcdinit inicializa el mdulo
LCD y por ltimo la instruccin Lcdout es la que crea
los mensajes en la pantalla.
Es posible simular a travs de software el
comportamiento del programa, a continuacin se
observa la simulacin:

2.5.4 APLICACIONES
Las siguientes aplicaciones se pueden efectuar
utilizando el mdulo de prueba de microcontroladores
PIC.
Creacin de mensajes en pantallas LCD de
caracteres: Disear un programa que muestre el
mensaje " Electrnica " en la pantalla LCD del
mdulo de prueba de microcontroladores.
Solucin: La pantalla LCD del mdulo de prueba se
encuentra conectada al PIC16F877, por ello usaremos
este en la programacin.

122

Figura 148 - Simulacin de Pantalla LCD

Existen ms funciones para pantallas LCD disponibles


en lenguaje Basic, y estas se detallan en la ayuda del
software compilador.

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Define LCD_RWREG = PORTE


Define LCD_RWBIT = 0
Dim val As Word
TRISA = 0xff
TRISE = 0x00
ADCON1 = 0x02
Lcdinit
loop:
Adcin 2, val
Lcdcmdout LcdClear
Lcdout "Anlisis de"
Lcdcmdout LcdLine2Home
Lcdout "Temperatura: ", #val
WaitMs 500
Goto loop
End
Figura 149 - Mdulo de prueba de microcontroladores PIC

A continuacin se observa la simulacin del programa:

Medidor de temperatura con pantalla LCD:


El mdulo de prueba cuenta con el Integrado LM35
que es capaz de medir la temperatura, y ste se
encuentra conectado a la entrada Analgica AN2 del
PIC16F877.
El programa que realizaremos efectuar una lectura
del puerto analgico y la traducir a un valor entre 0 y
1024 que determinar la temperatura del circuito
integrado.
Firmware:
Define ADC_CLOCK = 3
Define ADC_SAMPLEUS = 10
Define LCD_BITS = 8
Define LCD_DREG = PORTC
Define LCD_DBIT = 0
Define LCD_RSREG = PORTE
Define LCD_RSBIT = 2
Define LCD_EREG = PORTE
Define LCD_EBIT = 1

Figura 150 - Simulacin del medidor de temperatura

Programar microcontroladores

Disear el programa en lenguaje Basic para el


microcontrolador

Programar el microcontrolador en lenguaje Basic

MICROPROCESADORES Y MICROCONTROLADORES

123

M I C R O C O N T R O L AD O R E S

INSTRUCCIONES:
Con la ayuda y orientacin del (de la) facilitador (a) y
la consulta de los contenidos estudiados, realice las
siguientes actividades.

Investigacin de Microcontroladores:

De forma individual el participante debe presentar por


escrito una investigacin acerca de los
microcontroladores, su funcionamiento y aplicacin,
obtenida de fuentes de informacin como bibliotecas
o Internet.

Hojas de datos de los Microcontroladores:

De forma individual el participante debe presentar por


escrito una investigacin acerca de las hojas de datos
de los dispositivos microcontroladores PIC16F84A y
PIC16F877A, incluyendo una descripcin de los
mdulos que estos tienen internamente y de las
caractersticas bsicas de cada uno.

Aplicaciones industriales
del microcontrolador:

En grupos de 3, los participantes deben proponer


proyectos de implementacin en la industria nacional
que se puedan desarrollar con microcontroladores, y
deben entregar un reporte con el costo aproximado
del proyecto (detallado), tiempo aproximado de
desarrollo (detallado), diagrama a bloques del sistema,
diagrama esquemtico del circuito, listado del
programa a realizar y una descripcin del
funcionamiento.

Simulacin de programas:

Formando parejas los participantes deben simular los


programas de ejemplo provistos en el manual,
haciendo uso de Software de simulacin y
programacin.

Proyectos aplicados:

Los participantes formando grupos de 3, debern


resolver uno o varios proyectos propuestos por el
facilitador donde apliquen la programacin y diseo
de sistemas con microcontroladores. Los participantes
debern entregar un reporte con el diseo del circuito
y la programacin respectiva del microprocesador.

124

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Circuito integrado o chip que incluye en su interior las


tres unidades funcionales de un ordenador: CPU,
Memoria y Unidades de E/S, es decir, se trata de un
computador completo en un solo circuito integrado.
Aunque sus prestaciones son limitadas, adems de
dicha integracin, su caracterstica principal es su alto
nivel de especializacin
Un microcontrolador tpico tendr un generador de
reloj integrado y una pequea cantidad de memoria
RAM y ROM/EPROM/EEPROM, significando que para
hacerlo funcionar, todo lo que se necesita son unos
pocos programas de control y un cristal de
sincronizacin. Los microcontroladores disponen
generalmente tambin de una gran variedad de
dispositivos de entrada/salida, como convertidores
analgico a digital, temporizadores, UARTs y buses de
interfaz serie especializados, como I2C y CAN.
Frecuentemente, estos dispositivos integrados pueden
ser controlados por instrucciones especializadas desde
el programa.

Los modernos microcontroladores frecuentemente


incluyen un lenguaje de programacin integrado, como
el BASIC que se utiliza bastante con este propsito.
Los microcontroladores negocian la velocidad y la
flexibilidad para facilitar su uso. Debido a que se utiliza
bastante espacio en el chip para incluir funcionalidad,
como los dispositivos de entrada/salida, la memoria y
los sistemas de comunicacin, usualmente no hay que
agregar mucha circuitera a su exterior para realizar
una aplicacin.
Para terminar, el crecimiento en la aplicacin de los
microcontroladores se ha debido a que estos son
dispositivos de alta funcionalidad, bajo costo, mucha
flexibilidad, tamao reducido, consumen muy poca
energa y son hasta cierto punto fciles de programar,
permitiendo as, aadir inteligencia casi a cualquier
aparato.

MICROPROCESADORES Y MICROCONTROLADORES

125

M I C R O C O N T R O L AD O R E S

Instrucciones:
A continuacin encontrar una serie de enunciados con, cuatro opciones de respuesta, subraye la correcta de
acuerdo a los contenidos estudiados.
1.

Los microcontroladores PIC16F84A y


16F877A tienen una capacidad de
procesamiento de: ___ bits.
A)
B)
C)
D)

2.

3.

A)

4
8
16
32

B)
C)
D)

Los registros de funcin especial SFR de


los microcontroladores PIC sirven para:
A)
B)
C)
D)

Los registros de propsito general o GPR


de los microcontroladores PIC sirven para:

Establecer un espacio de memoria para


el usuario
Guardar el programa del
microcontrolador
Ejecutar el programa del
microcontrolador
Establecer el funcionamiento de los
mdulos del microcontrolador

4.

Registro interno del microcontrolador PIC


que sirve para configurar una terminal
como entrada o salida de datos:
A)
B)
C)
D)

5.

TRIS
PORT
ADCON
INTCON

En las terminales OSC1 y OSC2 de un


microcontrolador PIC debe conectarse:
A)
B)
C)
D)

126

Establecer un espacio de memoria para


el usuario
Guardar el programa del
microcontrolador
Ejecutar el programa del
microcontrolador
Establecer el funcionamiento de los
mdulos del microcontrolador

La alimentacin del dispositivo


El circuito de RESET
Un circuito resonante de seal de reloj
Una entrada o salida de datos

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

BIT:
Unidad fundamental de memoria
BYTE:
Conjunto de 8 bits

EEPROM:
Memoria de slo lectura elctricamente borrable y
programable.

WORD:
Conjunto de 16 bits

PIO:
Circuito Integrado controlador del Puerto de entrada
/ salida

ALU:
Unidad Aritmtica y Lgica

SIO:
Circuito Integrado controlador del Puerto Serial

REGISTROS:
Espacios de memoria destinados a guardar informacin

USB:
Bus Serial Universal de comunicacin.

PMOS:
Mosfet de canal P

CDROM:
Disco Compacto de memoria de slo lectura

NMOS:
Mosfet de canal N

DVDROM:
Disco multicapa de memoria de slo lectura

CMOS:
Semiconductor Complementario de metal - xido.

RAM:
Memoria de acceso aleatorio

RISC:
Computadora de Set de Instrucciones Reducido

DRAM:
Memoria de acceso aleatorio dinmica

CISC:
Computadora de Set de Instrucciones Complejo

SRAM:
Memoria de acceso aleatorio esttica.

ROM:
Memoria de slo Lectura

ADDRESS:
Direccin

PROM:
Memoria de slo lectura programable

DATA:
Dato

EPROM:
Memoria de slo lectura elctricamente programable

ENABLE:
Habilitar

MICROPROCESADORES Y MICROCONTROLADORES

127

M I C R O C O N T R O L AD O R E S

DISABLE:
Deshabilitar

SOFTWARE:
Programas, procedimientos y reglas para la ejecucin
de tareas especficas en un sistema de cmputo

OUTPUT:
Salida
INPUT:
Entrada
FLASH:
Tipo especial de memoria EEPROM.
BUS:
Conjunto de lneas que desarrollan la misma funcin
REFRESH:
Actualizacin peridica de la memoria RAM dinmica
RESET:
Reinicializacin del funcionamiento del sistema
WRITE:
Escribir

HARDWARE:
Soporte fsico o conjunto de elementos materiales que
componen un ordenador. En dicho conjunto se
incluyen, los dispositivos electrnicos y
electromecnicos, circuitos, cables, tarjetas, armarios
o cajas, perifricos de todo tipo y otros elementos
fsicos.
FIRMWARE:
Conjunto de instrucciones de programa para
propsitos especficos, grabado en una memoria tipo
ROM, que establece la lgica de ms bajo nivel que
controla los circuitos electrnicos de un dispositivo
de cualquier tipo. Al estar integrado en la electrnica
del dispositivo es en parte hardware, pero tambin es
software, ya que proporciona lgica y se dispone en
algn tipo de lenguaje de programacin
USART:
Mdulo de comunicacin serial universal sincrona y
asncrona.

READ:
Leer

I2C:
Protocolo de comunicacin entre integrados

CPU:
Unidad central de proceso
LABEL:
Etiqueta, delimitador de una posicin especfica del
programa

LCD Display:
Pantalla de cristal lquido
ADC:
Convertidor analgico digital

COMPILADOR:
Software encargado de traducir un tipo de lenguaje
en otro.

128

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

ANEXO
En el presente anexo, se incluyen algunas hojas de datos de importancia de los microcontroladores PIC, donde se
encuentra informacin del funcionamiento y configuracin de los dispositivos. Debido a que toda la documentacin
que proveen los fabricantes se encuentra en idioma ingls, es necesario familiarizarse con esta terminologa tcnica.
ANEXO A: CARACTERSTICAS ELCTRICAS DEL PIC16F84A.

Figura 1 - Caractersticas elctricas del PIC16F84A

MICROPROCESADORES Y MICROCONTROLADORES

129

M I C R O C O N T R O L AD O R E S

DIAGRAMA A BLOQUES DEL PIC16F84A

Figura 2 - Diagrama a bloques del PIC16F84A

130

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

SUMARIO DE REGISTROS DE FUNCIN ESPECIAL DEL PIC16F84A

Figura 3 - Sumario de registros de funcin especial del PIC16F84A

MICROPROCESADORES Y MICROCONTROLADORES

131

M I C R O C O N T R O L AD O R E S

ANEXO B. CARACTERSTICAS ELCTRICAS DEL PIC16F877A

Figura 4 - Caractersticas elctricas del PIC16F877A

132

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

DIAGRAMA A BLOQUES DEL PIC16F877A

Figura 5 - Diagrama a bloques del PIC16F877A

MICROPROCESADORES Y MICROCONTROLADORES

133

M I C R O C O N T R O L AD O R E S

MAPA DE REGISTROS DEL PIC16F877A

Figura 6 - Mapa de registros del PIC16F877A

134

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

SUMARIO DE REGISTROS DE FUNCIN ESPECIAL DEL PIC16F877A

MICROPROCESADORES Y MICROCONTROLADORES

135

M I C R O C O N T R O L AD O R E S

Continuacin...

136

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

Continuacin...

MICROPROCESADORES Y MICROCONTROLADORES

137

M I C R O C O N T R O L AD O R E S

CONJUNTO DE INSTRUCCIONES

BIT b,(IY+d)
Test bit b of location (IY+d).

A continuacin se muestra el conjunto completo de


instrucciones de programacin en orden alfabtico
para el microprocesador Z80 dadas por el fabricante.

BIT b,r
Test bit b of register r.

ADC HL,ss
Add with carry register pair ss to HL.
ADC A,s
Add with carry operand s to accumulator.
ADD A,n
Add value n to accumulator.

CALL cc,nn
Call subroutine at location nn if condition CC is true.
CCF
Complement carry flag.
CP s
Compare operand s with accumulator.

ADD A,r
Add register r to accumulator.

CPD
Comapre location (HL) and acc., decrement HL and
BC,

ADD A,(HL)
Add location (HL) to acccumulator.

CPDR
Perform a CPD and repeat until BC=0.

ADD A,(IX+d)
Add location (IX+d) to accumulator.

CPI
Compare location (HL) and acc., incr HL, decr BC.

ADD A,(IY+d)
Add location (IY+d) to accumulator.

CPIR
Perform a CPI and repeat until BC=0.

ADD HL,ss
Add register pair ss to HL.

CPL
Complement accumulator (1s complement).

ADD IX,pp
Add register pair pp to IX.

DAA
Decimal adjust accumulator.

ADD IY,rr
Add register pair rr to IY.

DEC m
Decrement operand m.

AND s
Logical AND of operand s to accumulator.
BIT b,(HL)
Test bit b of location (HL).

DEC IY
Decrement IY.

BIT b,(IX+d)
Test bit b of location (IX+d).

138

DEC IX
Decrement IX.

DEC ss
Decrement register pair ss.

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

DI
Disable interrupts.

INC (HL)
Increment location (HL).

DJNZ e
Decrement B and jump relative if B=0.

INC IX
Increment IX.

EI
Enable interrupts.

INC (IX+d)
Increment location (IX+d).

EX (SP),HL
Exchange the location (SP) and HL.

INC IY
Increment IY.

EX (SP),IX
Exchange the location (SP) and IX.

INC (IY+d)
Increment location (IY+d).

EX (SP),IY
Exchange the location (SP) and IY.

INC r
Increment register r.

EX AF,AF
Exchange the contents of AF and AF.

INC ss
Increment register pair ss.

EX DE,HL
Exchange the contents of DE and HL.

IND
(HL)=Input from port (C). Decrement HL and B.

EXX
Exchange the contents of BC,DE,HL with BC,DE,HL.

INDR
Perform an IND and repeat until B=0.

HALT
Halt computer and wait for interrupt.

INI
(HL)=Input from port (C). HL=HL+1. B=B-1.

IM 0
Set interrupt mode 0.

INIR
Perform an INI and repeat until B=0.

IM 1
Set interrupt mode 1.

JP (HL)
Unconditional jump to location (HL).
JP (IX)
Unconditional jump to location (IX).

IM 2
Set interrupt mode 2.
IN A,(n)
Load the accumulator with input from device n.
IN r,(c)
Load the register r with input from device (C).

JP (IY)
Unconditional jump to location (IY).
JP cc,nn
Jump to location nn if condition cc is true.

MICROPROCESADORES Y MICROCONTROLADORES

139

M I C R O C O N T R O L AD O R E S

JR C,e
Jump relative to PC+e if carry=1.

LD HL,(nn)
Load HL with location (nn).

JR e
Unconditional jump relative to PC+e.

LD (HL),r
Load location (HL) with register r.

JR NC,e
Jump relative to PC+e if carry=0.

LD I,A
Load I with accumulator.

JR NZ,e
Jump relative to PC+e if non zero (Z=0).

LD IX,nn
Load IX with value nn.

JR Z,e
Jump relative to PC+e if zero (Z=1).

LD IX,(nn)
Load IX with location (nn).

LD A,(BC)
Load accumulator with location (BC).

LD (IX+d),n
Load location (IX+d) with n.

LD A,(DE)
Load accumulator with location (DE).

LD (IX+d),r
Load location (IX+d) with register r.

LD A,I
Load accumulator with I.

LD IY,nn
Load IY with value nn.

LD A,(nn)
Load accumulator with location nn.

LD IY,(nn)
Load IY with location (nn).

LD A,R
Load accumulator with R.

LD (IY+d),n
Load location (IY+d) with value n.

LD (BC),A
Load location (BC) with accumulator.

LD (IY+d),r
Load location (IY+d) with register r.

LD (DE),A
Load location (DE) with accumulator.

LD (nn),A
Load location (nn) with accumulator.

LD (HL),A
Load location (HL) with accumulator.
LD dd,nn
Load register pair dd with nn.
LD dd,(nn)
Load register pair dd with location (nn).

140

LD (nn),dd
Load location (nn) with register pair dd.
LD (nn),HL
Load location (nn) with HL.
LD (nn),IX
Load location (nn) with IX.

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

LD (nn),IY
Load location (nn) with IY.

NOP
No operation.

LD R,A
Load R with accumulator.

OR s
Logical OR of operand s and accumulator.

LD r,(HL)
Load register r with location (HL).

OTDR
Perform an OUTD and repeat until B=0.

LD r,(IX+d)
Load register r with location (IX+d).

OTIR
Perform an OTI and repeat until B=0.

LD r,(IY+d)
Load register r with location (IY+d).

OUT (C),r
Load output port (C) with register r.

LD r,n
Load register r with value n.

OUT (n),A
Load output port (n) with accumulator.

LD r,r
Load register r with register r.

OUTD
Load output port (C) with (HL), decrement HL and
B.

LD SP,HL
Load SP with HL.

OUTI
Load output port (C) with (HL), incr HL, decr B.

LD SP,IX
Load SP with IX.

POP IX
Load IX with top of stack.

LD SP,IY
Load SP with IY.

POP IY
Load IY with top of stack.

LDD
Load location (DE) with location (HL), decrement
DE,HL,BC.

POP qq
Load register pair qq with top of stack.

LDDR
Perform an LDD and repeat until BC=0.

PUSH IX
Load IX onto stack.

LDI
Load location (DE) with location (HL), incr DE,HL;
decr BC.

PUSH IY
Load IY onto stack.

LDIR
Perform an LDI and repeat until BC=0.
NEG
Negate accumulator (2s complement).

PUSH qq
Load register pair qq onto stack.
RES b,m
Reset bit b of operand m.

MICROPROCESADORES Y MICROCONTROLADORES

141

M I C R O C O N T R O L AD O R E S

RET
Return from subroutine.

RRCA
Rotate right circular accumulator.

RET cc
Return from subroutine if condition cc is true.

RRD
Rotate digit right and left between accumulator and
(HL).

RETI
Return from interrupt.

RST p
Restart to location p.

RETN
Return from non-maskable interrupt.
RL m
Rotate left through operand m.
RLA
Rotate left accumulator through carry.
RLC (HL)
Rotate location (HL) left circular.
RLC (IX+d)
Rotate location (IX+d) left circular.
RLC (IY+d)
Rotate location (IY+d) left circular.
RLC r
Rotate register r left circular.
RLCA
Rotate left circular accumulator.
RLD
Rotate digit left and right between accumulator and
(HL).
RR m
Rotate right through carry operand m.
RRA
Rotate right accumulator through carry.
RRC m
Rotate operand m right circular.

SBC A,s
Subtract operand s from accumulator with carry.
SBC HL,ss
Subtract register pair ss from HL with carry.
SCF
Set carry flag (C=1).
SET b,(HL)
Set bit b of location (HL).
SET b,(IX+d)
Set bit b of location (IX+d).
SET b,(IY+d)
Set bit b of location (IY+d).
SET b,R
Set bit b of register r.
SLA m
Shift operand m left arithmetic.
SRA m
Shift operand m right arithmetic.
SRL m
Shift operand m right logical.
SUB s
Subtract operand s from accumulator.
XOR s
Exclusive OR operand s and accumulator.
Tabla 4 Conjunto de instrucciones para el
Microprocesador Z80.

142

MICROPROCESADORES Y MICROCONTROLADORES

M I C R O C O N T R O L AD O R E S

CAMPOS, Manuel F. Implementacin de Sistemas utilizando PIC. Primera


edicin, fuente electrnica (e-book). Universidad de Guadalajara, Mxico, 1998.
LEVENTHAL, Lance. Z80 Assembly Language Programming, Edicin
nica, Editorial Osborne/McGraw - Hill, Berkeley, California.
PREDKO, Mike. Programming and Customizing microcontrollers. Second
Edition. Fuente electrnica (e-book). 2005.
STEVENS, Roger. PIC Microcontroller Serial Comunications. Primera
Edicin. Fuente electrnica (e-book). 2005.
Pginas web visitadas:
Hojas de datos y manuales del fabricante. Microchip. www.microchip.com.
Hojas de datos y manuales del fabricante. Zilog. www.zilog.com.
Hojas de datos y manuales del fabricante. Intel. www.Intel.com.

MICROPROCESADORES Y MICROCONTROLADORES

143