Você está na página 1de 193

UNIVERSIDAD DE SANTIANGO DE CHILE

FACULTAD TECNOLOGICA

APUNTES
Tecnologa Digital y Microprocesadores
Versin: Primer Semestre 2007

Profesor: Roberto Bahamondes A

Notas del Profesor:


Estimado Estudiante, espero que este ramo sea una oportunidad ms para
incentivarte en el proceso de formacin de la carrera que has elegido y por tanto
veas en l un estimulo y complemento de tu especialidad. Muchas veces los
manuales de los fabricantes de equipo dan por sabido estos conocimientos y
suelen no explicar detalles de puestas en marcha, configuraciones o
actualizaciones que se deben hacer ms a menudo de lo que se piensas. Por
ejemplo si alguna vez debes elegir entre un equipo cuyo programa esta contenido
en una Eprom, versus otro que esta contenido en una flach, Qu haras, por cual
decides?, por otro lado si estas probando un equipo con una configuracin que no
logra levantar un sistema de control industrial y de repente te das cuenta que
debes cambiar un parmetro y que despus y a pesar del cambio ves que no
resulta, Qu est pasando?, Qu debes hacer?, Qu pasos debes seguir?, vas al
manual y es poco claro, entonces recuerda que estas mquinas trabajan sobre la
base de tecnologa de microprocesadores y por tanto habr que tener presente
ciertas reglas bsicas de funcionamiento. Los conocimientos que vas a adquirir
en este ramo sern un buen complemento de los otros que ya has adquirido y vas
a adquirir para enfrentar en un futuro cercano los desafos que te va ha plantear el
mundo profesional. Te invito a responder las preguntas que han quedado sin
respuesta en este prrafo, durante el semestre.
El profesor ha preparado estos apuntes para ser usado como complemento y
material de profundizacin de las materias vistas en las clases en el ramo de
Tecnologa Digital y Microprocesadores, en ningn caso pretende ser un
reemplazo de las clases, ya que estas, no son slo de carcter expositivo, si no
ms bien se hacen bajo un concepto de la metodologa constructivista, donde es
el estudiante que por medio de la gua del profesor va descubriendo los
conocimientos que debe alcanzar clase a clase.
Este ramo tiene la caracterstica de contener materia que esta ampliamente
imbricada, donde los conceptos de cada unidad, muchas veces no pueden
entenderse fuera del contexto global, habiendo materias que para ser
comprendidas debe tenerse una visin de las materias que vienen ms adelante,
por lo cual es fundamental la labor en clase, donde el profesor ira dosificando la
materia por pasar segn sean las conductas de entrada de los estudiantes en
relacin a la materia que se esta viendo. Por ello debes utilizar estos apuntes a
modo de consulta y referencia con el nico objeto de profundizar y aclarar dudas
que puedan surgir fuera del saln de clases.
Buena suerte . Roberto Bahamondes A

Sistema de numricos
Estamos habituados al sistema de numeracin decimal y nos parece lgico usarlo en todo
momento. Pero hay ocasiones en donde no es el ms apropiado. Uno de esos mundos en los
que existen sistemas ms descriptivos de los fenmenos que el decimal es el de los
procesadores. Por su naturaleza digital, los procesadores son mquinas esencialmente
binarias.
Tanto el sistema binario, como el decimal y el hexadecimal, son sistemas en los que la
posicin de cada dgito representa informacin de mucha importancia. Veamos un ejemplo
de cmo se descompone posicionalmente un numero decimal:
El nmero 7935 = 1000 * 7 + 100 * 9 + 10 * 3 + 1 * 5
Como hay diez smbolos (del 0 al 9), una decena representa 10 unidades, una centena
representa 10 decenas. Como se puede ver cada posicin o digito tiene un peso que esta
dado por una potencia de 10 ( esto es porque el sistema numrico decimal, contiene 10
smbolos). Luego el digito de mas a la derecha tiene un peso de 10 elevado a 0, luego el
siguiente, avanzando a la izquierda tiene peso 10 elevado a 1, y as sucesivamente.
En el sistema binario, con dos smbolos solamente, cada posicin a la izquierda vale el
doble de la que le sigue a la derecha. Es decir los pesos de los digitos son potencias de dos
(esto porque el sistema binario consta de dos smbolos 1 y 0). Segn esto la relacin entre
las sucesivas posiciones se da segn la sucesin
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 .....

la que a su vez puede expresarse como potencias crecientes de 2:


20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 210 , 211 , 212 , 213 , 214 , 215 , 216 .....

Para el sistema de numeracin binaria, valen las dos reglas prcticas siguientes:

Un nmero de n bits puede representar a un decimal de un valor de hasta 2n - 1


El multiplicador del bit de posicin n vale 2n

Ejemplos: un nmero de 8 bits cuenta desde 0 hasta 255. El multiplicador del bit 7 es 128.
Notar que siempre se comienza a contar desde cero. En un nmero binario, al igual que en
un decimal, el bit menos significativo (correspondiente al multiplicador 2 0, o sea 1) es el
que se escribe ms a la derecha:
bit#

15

14

13

12

11

10

Mult 32768 16384 8192 4096 2078 1024 512

256

128

64

32

16

Transformacin de numero Binario a Decimal


Veamos como ejemplo prctico un nmero de 7 bits cualquiera como 1001101 (notar que
los bits se ordenan 6...0)
1001101 = 64 * 1 + 32 * 0 + 16 * 0 + 8 * 1 + 4 * 1 + 2 * 0 + 1 * 1
Esto nos proporciona una forma de traducir (cambiar de base) un nmero binario a
decimal. Basta sumar aquellos multiplicadores cuyos bits estn en 1 e ignorar aquellos
cuyo bit es 0. En nuestro anterior ejemplo es:
1001101 = 64 + 8 + 4 + 1 = 77 decimal
Transformacin de Decimal a Binario
Para el traspaso de decimal a binario, hay que dividir siempre por 2 y contar slo los restos,
de atrs hacia adelante. Obsrvese que el resto no es otra cosa que el multiplicador de las
potencias de dos en las anteriores igualdades, las que pueden ser definidas como la
sumatoria de los productos de los restos por sus potencias de dos respectivas Por ejemplo,
para el 77 decimal obtenemos los restos:
opreracin

Resto

pot.de 2
1

77 / 2 = 38

r=1
2

38 / 2 = 19

r=0
4

19 / 2 = 9

r=1
8

9/2=4

r=1

4/2=2

r=0

2/2=1

r=0

1/2=0

r=1

16
32
64

Ordenando los restos segn las potencias decrecientes de 2, obtenemos nuevamente


1001101.
Los nmeros binarios son los que efectivamente fluyen dentro de un sistema
microprocesador en un PC, se guardan en memoria o disco, o se transmiten (modulados)
por modem. Pero para nosotros no resulta agradable manipular con facilidad nmeros
como:

1101 0011 0101 0110 1010 0101 1100 0011


que es de 32 bits (hay 32 smbolos en el nmero, desde el bit 31 a la izquierda hasta el bit 0,
a la derecha) y se ha ordenado ex-profeso en grupos de a cuatro por cuestiones de
comodidad que sern evidentes cuando se trabaje con procesadores de 32 o mas bits, un
ejemplo de procesador de 32 bits es el CPU 80386 que manipula sin problemas nmeros de
32 bits. Una persona necesita manejarlo de otra manera y por eso se justifica que
manejemos el sistema hexadecimal, con 16 smbolos, ya que si uno agrupa cuatro bits
obtiene 16 combinaciones posibles (24 = 16). Esto tiene una razn. Nuestro sistema decimal
no se corresponde en la cantidad de dgitos con el binario en cambio, el hexadecimal si,
porque cada cuatro bits representan un dgito hexadecimal exacto.
De tal manera, el anterior nmero de 32 bits se traduce al hexadecimal como uno de 8
dgitos (32 bits agrupados de a 4). Para la conversin podemos usar la tabla binario-decimahexa qe est algo ms adelante. En un sistema hexadecimal, necesitamos 16 smbolos (1, 2,
3, 4, 5, 6, 7, 8 ,9 y otros seis A, B, C, D, E y F ).
El anterior numero binario de 32 bits pasa a ser:

D356A5C3

hexa, es igual a

Hexadecimal

3.545.671.107

en decimal

Decimal

Nota: Cuando se usan programas ensambladores debemos diferenciar los distintos tipos de
nmeros, y por ejemplo los Hexadecimales comienzan muchas veces con "0x" del
comienzo, para significar que lo que sigue es un nmero hexadecimal. Otro estilo es poner
una "h" final, con la precaucin de colocar un cero adelante si el nmero comienza con A,
B, C, D, E o F. Para aqul nmero de 32 bit utilizado como ejemplo, adoptamos como
notacin :
0D356A5C3h
o
Ox D356A5C3
Para finalizar con este tema, aqui hay una tabla que convierte (los primeros 4 bits) a
decimal y a hexa. Usted con ella debe poder convertir cualquier numero binario en hexa y
viceversa:
Binario

decimal

hexa

binario

decimal

hexa

0000

1000

0001

1001

0010

1010

10

0011

1011

11

0100

1100

12

0101

1101

13

0110

1110

14

0111

1111

15

Operaciones Binarias
En lo que sigue se adopta como convencin la lgica positiva, lo que implica:
verdadero = 1 = activo, ------, falso = 0 = inactivo
Hay cinco operaciones binarias bsicas: AND, OR, NOT, XOR y ADD. La resta,
multiplicacin y divisin se derivan de estas cinco anteriores. Cualquiera sea la longitud de
la palabra o palabras objeto de la operacin, siempre se hace de a un bit por vez de derecha
a izquierda (tal como si fuera una suma o resta con nmeros decimales). Esto permite una
definicin de cada operacin que es independiente de la longitud del o de los operando(s).
La operacin NOT es la nica que se realiza sobre un slo operando (es unaria), y las otras
cuatro sobre dos operandos.
o
o
o
o
o

La operacin AND (Y) tiene resultado 1 si sus dos operandos son ambos 1
La operacin OR (O) tiene resultado 1 si cualquiera de sus operandos es 1
La operacin XOR tiene resultado 1 si los operandos son distintos (uno en 0
y el otro en 1)
La operacin NOT (NO) tiene resultado 1 si el operando es 0 y viceversa
La operacin ADD (SUMA) se define igual que con los nmeros decimales

AND

OR

XOR

NOT

SUMA

0*0=0

0+0=0

0X0=0

NOT 1 = 0

0+0=0

0*1=0

0+1=1

0X1=1

NOT 0 = 1

0+1=1

1*0=0

1+0=1

1X0=1

---

1+0=1

1*1=1

1+1=1

1X1=0

---

1 + 1 = 10

Le extra el resultado de la suma? Sin embargo es lo que hacemos en la suma decimal


5+5=10 (nos llevamos "1" para la operacin del dgito siguiente). Este llevarse "1" es
vastamente usado entre los procesadores digitales y tiene un nombre especial: carry (lo ver
abreviado como CY, C o CF-por carry flag), lo que en castellano se traduce como "acarreo"
(que suena muy mal, asi que le seguiremos llamando carry). Estas operaciones tambin se
llaman "booleanas" ya que se basan en el lgebra de Boole (invito al lector a rememorar
cuando en la escuela secundaria se preguntaba, igual que yo, si el lgebra de Boole le
servira alguna vez para algo).

Compuertas lgicas Y Consideraciones Elctricas


Compuertas lgicas
Todos los circuitos lgicos digitales, desde el ms simple contador hasta el ms sofisticado
micro-procesador, son hechos interconectando combinaciones de simples "bloques de
construccin", llamados compuertas lgicas(Logic gates).
Hay cuatro compuertas bsicas, y ellas son diseadas de acuerdo a su funcin como
compuertas inversora o negador NOT, compuerta AND o Y, compuerta OR o O,
o sea, las tres expresiones sencillas mnimas con las cuales se puede responder a todas las
situaciones posibles, mediante combinaciones, de all el nombre que se da a los circuitos
digitales que se construyen en base a estas compuertas bsicas: Lgica Combinacional
Cada una de estas compuertas bsicas tiene una o ms entradas, una sola salida, y una
pareja de terminales para conexin a la fuente de poder(pilas, bateras, adaptador de
corriente, etc.). En las compuertas bipolares, hechas con la misma tecnologa de los
transistores corrientes PNP o NPN, conocidas como compuertas TLL, el voltaje de la fuente
de alimentacin debe estar entre 4.75 y 5.25 voltios, por lo que popularmente se trabaja con
el punto medio de este rango, o sea 5 voltios Vcc. Las compuertas hechas con tecnologa
CMOS son ms susceptibles a daarse por la electricidad esttica debido al manipuleo
mientras se instalan en el circuito a ensamblar, pero luego permiten un rango bastante
amplio en el voltaje de alimentacin: funcionan desde 3 Vcc hasta 15 Vcc.
Varias combinaciones de los BITS* binarios 0 y 1 pueden ser aplicadas a las entradas de
una compuerta, asumiendo que un cierto voltaje bajo representa al !cero! y un cierto voltaje
alto equivale al bit "uno", esto es llamado lgica positiva; en la lgica negativa se invierten
las
definiciones.
*BIT: Es una sigla formada con las palabras "dgito binario", y se refiere a los dos smbolos
0 y 1 utilizados en el sistema binario para calcular y medir. Por simple conveniencia, para
facilitar el paso de un sistema al otro, se adopt el bit "cero" como igual al nmero decimal
"0", y el bit "uno" como igual al nmero decimal "1"(se conservaron igual estos dos
smbolos), pero las combinaciones se leen diferentes. Veamos un ejemplo: La expresin

numrica 110 tiene en decimal 3 cifras y se lee "ciento diez"; tiene en binario tres bits y se
lee "uno-uno-cero".
En electrnica digital, ms concretamente en el sistema numrico binario, no se habla de
nmeros de "tantas cifras", como en el sistema decimal, sino que se dice que es un WORD
de "tantos bits". WORD significa "palabra" en ingles, pero en este caso se emplea ms bien
como sinnimo de nmero, o combinacin de varios smbolos para expresar una cierta
cantidad.
Aunque un word puede tener cualquier cantidad de bits, se ha popularizado entre los
especialistas de computadoras en uso de words con ocho bits; estos son llamados
sencillamente BYTES. Un word que tenga cuatro bits es denominado NIBLE. Veamos un
ejemplo:
0001011100101001 Es un word con diecisis bits; es un word con dos bytes, o
sencillamente
es
un
word
con
cuatro
nibles.
0001 0111 0010 1001 Es un word igual al anterior, pero separados los bytes para una mejor
visualizacin. Igual que en el sistema decimal, los bits "cero" al comienzo de un word(lado
izquierdo) no representan ninguna cantidad, pero se acostumbra colocarlos para facilitar el
manejo en los circuitos electrnicos de computo, tal como veremos cuando lleguemos al
estudio de los micro-procesadores y computadores.
La compuerta "NO" invierte o complementa el estado lgico de su nica entrada, por lo que
se le conoce tambin como INVERSOR. La funcin "NO" es generalmente indicada por
una barra o vnculo sobre el smbolo, para indicar que una entrada o una salida ha sido
invertida. As, si la entrada es un 1 lgico aproximadamente 5 Volt entonces en su
salida
hay
un
0
lgico,
aproximadamente
un
0
Volts.
La compuerta que simula la condicin "Y" (AND) es un circuito con capacidad para
"decidir", con dos o ms entradas. La nica salida de la compuerta AND es nivel lgico 0, a
menos que todas sus entradas tengan nivel lgico 1. Solamente cuando las entradas A y B y
C... estn en "uno", la salida ser tambin "uno".
La compuerta que simula la condicin "0" (OR) es tambin un circuito que hace decisiones,
con dos o ms entradas. Su salida es lgica 1 cuando cualquiera o todas sus entradas tienen
un nivel lgico 1. Basta con que cualquiera de las entradas A o B o C estn en 1, para que la
salida pase a 1.

Circuitos lgicos compuestos


Combinando dos o ms de las compuertas bsicas se puede obtener un circuito lgico
compuesto, con caractersticas de operacin muy importantes. Los dos ms populares
circuitos lgicos compuestos son el AND-NOT ( Y - NO ) y el OR-NOT ( 0 - NO ). Se les
conoce como compuertas NAND y NOR, con los smbolos y tablas de verdad mostrados en
la figura 3 en figura de la figura 22.
.

CONSIDERACIONES ELECTRICAS A TOMAR EN CUENTA EN CIRCUITOS


DIGITALES
FAN
OUT-FAN
IN:
El trmino "fan" se traduce "ABANICO", y se emplea en los circuitos integrados digitales
para expresar su capacidad de "empuje" (FAN OUT) o de "succin" (FAN IN), para con
otros circuitos lgicos. Para entender mejor lo anterior, imaginemos el siguiente ejemplo:
Supongamos que la salida de una compuerta TTl es algo as como "un ventilador" (abanico)
funcionando, empujando aire, fan out. Si colocamos al frente de este gran ventilador
soplador, los abanicos sin energa (terminales de entrada, fan in) de otros circuitos TTL,
veremos cmo el viento de la compuerta empujadora es capaz de "moverlos".
En la prctica existe en cada familia de circuitos lgicos 8TTL, CMOS, etc.) una cierta
proporcin entre la corriente que necesitan para activar sus entradas (FAN IN) y la corriente
mayor que suministran en su salida (FAN OUT). esto ha permitido facilitar el trabajo al
diseador-ensamblador de proyectos lgicos, ya que no se tiene que preocupar por hacer

cuentas de corrientes suministro-consumo cuando quiera implementar un circuito, sino que


busca en el catlogo el FAN OUT. Por ejemplo, una compuerta 7400 (TTL) suministra 16
miliamperios en su salida, y necesita 1.6 miliamerios para cada entrada en nivel bajo (en
nivel alto consume mucho menos), lo que, aplicando la expresin <B< OUT>, nos permite
afirmar que su fan out es 10 y su fan in es 1. A la salida de cada compuerta de este tipo, no
se le debe recargar con ms de 10 entradas de otros circuitos, cuando se trata de
implementar una funcin lgica.

La tabla de la figura 29 resume las capacidades de fan out para distintos productos de la
familia TTL. Podemos ver, por ejemplo, que cualquier producto de la serie que comienza
por 74 (sin letras posteriores) puede mover otros 10 de su misma clase; 8 de las entradas
que comiencen por 74H; 40 de las iniciadas por 74L 20 de las 74LS. De igual manera, la
serie iniciada por 74S tiene un fan out 100 cuando se trata de activar entradas de la serie
74L, de solamente 0.18 miliamperios de corriente de entrada nivel bajo.

OUTPUTS (SALIDAS)
Como podemos apreciar en la figura 30, son tres las configuraciones bsicas empleadas
para dar la salida de seal en los distintos circuitos electrnicos lgicos. Dos de ellas son
simples, utilizan solamente un transistor, y, de acuerdo a la manera como est colocado su
terminal colector, reciben el nombre de OPEN-COLLECTOR OUTPUT O TOTEMPOLE OUTPUT.
Estas dos salidas se encuentran indistintamente en todos los tipos de compuertas bsicas y
circuitos combinacionaleslgicos. La tercera configuracin es la COMPLEMENTARY
OUTPUT, empleada en los circuitos secuenciales para implementar las salidas Q y no-Q. A
diferencia de las otras, en la salida complementaria se usan dos transistores.
THREE - STATE LOGIC:
Todos nosotros estamos ya bastante familiarizados con los dos estados lgicos 1 y 0 de las
compuertas (salida nivel alto y salida nivel bajo), y segn nuestros actuales conocimientos,
son suficientes para implementar cualquier funcin. Lo anterior es cierto, los TWO STATE LOGIC son bastante tiles y empleados pero intencionalmente hemos olvidado
mencionar un caso que se puede presentar. Sumpongamos, por ejemplo, que necesitamos
conectar las salidas de dos o ms compuertas a un terminal comn, tal como la entrada de
otra compuerta. Eso est bien hacerlo en el raro evento que todas las salidas tengan siempre
igual estado y cambien al unsono. Pero, qu sucede si las salidas estn en diferentes
estados lgicos? Obviamente, no es posible colocar estados lgicos 1's y 0's en un terminal
comn sin crear un monton de confusin y posteriormente dao irreparable en algunas de
las compuertas.

Hemos hecho incapi en dos estados lgicos definidos; y que cuando falta el uno, aparece
el otro. Haciendo la comparacin, eso sera como decir que todos los ascensores que no
estn subiendo es porque estn bajando, lo cual no es completamente cierto; hace falta un
tercer estado lgico, el "three-state logic", que nos permita DETENER al ascensor en uno
cualquiera de los pisos del edificio.
La salida de una compuerta convencional se coloca siempre en un nivel alto o bajo tan
pronto como se le aplica corriente. Una compuerta three-state (tres estados), sin embargo,
emplea un hbil circuito para aislar la compuerta propiamente dicha y separarla de su
terminal de salida, con lo cual a los ya existentes estados alto y bajo se suma un tercer
estado: El estado de alta impedancia, o simplemente "estado-High-Z".
En el estado estado-High-Z, la salida de una compuerta three-state es desconectada
electrnicamente de la compuerta, como si entre las dos hubiese en serie un imaginario
interruptor en posicin Off, manejable desde el exterior por un terminal de CONTROL
(tambin llamado ENABLE). Cuando este "interruptor" es puesto ON, en el terminal de
salida se manifiesta inmediatamente el nivel alto o bajo que tenga la compuerta en dicho
momento.

La muestra dos buffer con salida three-state. Cuando sus entradas de control son activadas,
estos buffer pasan el estado lgico de sus entradas a sus salidas. Cuando los buffer no estn
capacitados (controles inactivos), las salidas pasan a un estado de alta resistencia elctrica,

impedancia, que impide la circulacin de corriente en cualquier sentido. El estado de alta


impedancia (high-Z) permite que las salidas de una docena o ms buffers (o cualquier otra
compuerta lgica three-state) puedan ser conectados a un terminal comn, si solamente uno
de ellos est capacitado con el control en cualquier instante.
Al terminal comn se le conoce como BUS, y es muy usado en los microporcesadores y
memorias para transmitir bits binarios y words. No est permitido conectar al BUS las
salidas de varios circuitos capacitados (enabled) al mismo tiempo, ya que se corre el riesgo
de unir dos estados lgicos opuestos, el 0 y el 1.
THREE - STATE MULTIPLEXER:
Un multiplexer es un selector de datos. Permite comunicar a su nica salida el estado alto o
bajo que posea una determinada entrada, de las varias que pueda tener.
La figura 32 muestra la implementacin de un multiplexer 4-a-1 lnea, utilizando para ello
un buffer three-state, tal como el integrado 74125. Las entradas CONTROL (enable) de los
buffer son usadas como entradas selectoras de datos (addres). Recordemos, solamente un
buffer puede ser capacitado a un tiempo. Las X que aparecen en las columnas de la tabla de
verdad significan "don't care", que no tiene importancia el estado 1 0 que pueda tener la
entrada, ya que la otra condicin se considera prioritaria para determinar el nivel de la
salida.

SISTEMAS DE MICROPROCESADORES
INTRODUCCION
El chip ms importante de cualquier sistema digital inteligente, es el microprocesador o
simplemente procesador. Sin l, un computador o sistema de control no podra funcionar. A
menudo a este componente se le denomina CPU (Central Processing Unit, Unidad de
procesamiento central), que descrbe a la perfeccin su papel dentro del sistema. El
procesador es realmente el elemento central del proceso de tratamiento de datos.
La CPU gestiona cada paso en el proceso de los datos. Acta como el conductor y el
supervisor de los componentes de hardware del sistema. Asimismo, est unida, directa o
indirectamente, con todos los dems componentes del sistema. Por lo tanto, muchos grupos
de componentes reciben rdenes y son activados de forma directa por la CPU .
El procesador est equipado con buses de direcciones, de datos y de control, que le
permiten llevar a cabo sus tareas. Estos sistemas de buses varan dependiendo de la
categora del procesador, lo cual se analizar ms adelante.
Tambin durante el desarrollo de los computadores personales han ido variando las
unidades funcionales internas de los procesadores, evolucionando drsticamente. Se ha
incorporado un nmero de transistores y circuitos integrados cada vez mayor , y dentro de
un espacio cada vez ms reducido, a fin de satisfacer las demandas cada vez ms exigentes
de mayores prestaciones por parte del software. Por ejemplo, el microprocesador Pentium

contiene, ubicados sobre una placa de cermica de aproximadamente 6 milmetros


cuadrados, ms de tres millones de transistores.
Por todo lo expuesto, se hacen lgicamente necesarios unos procesos de fabricacin
tambin complejos y especiales. Esta tcnica permite construir elementos casi
microscpicos (un micrmetro, o la millonsima parte de un metro). Esta tcnica
desarrollada por Intel se conoce como CHMOS-IV .Para apreciar la miniaturizacin en
cuestin, pensemos que un solo pelo humano tiene un dimetro, que se extendera sobre
100 unidades de este tipo.
La configuracin y capacidad de este procesador son los criterios fundamentales que
determinan el rendimiento de todo el computador .
La unidad central de proceso (CPU), procesador o microprocesador, es el verdadero cerebro
del computador o sistema de control. Su misin consiste en controlar y coordinar todas las
operaciones del sistema. Para ello extrae, una a una, las instrucciones del programa que est
en la memoria, las analiza y emite las rdenes necesarias para su completa realizacin.

TIPOS de Arquitecturas de Sistemas uP


Arquitectura Von Neumann: Tradicionalmente los microprocesadores se basan en la
estructura de Von Neumann, como la de la figura siguiente, que se caracteriza por disponer
de una nica memoria principal en la que se almacenan los datos y las instrucciones. A esta
memoria se accede a travs de un sistema de buses nico:

Bus de datos
Bus de direcciones
Bus de control

Arquitectura segn el modelo de Von Neumann

Arquitectura Hardvard
El modelo Harvard , representado en la figura siguiente, dispone de dos memorias:

Memoria de datos
Memoria de Programa

Adems cada memoria dispone de su respectivo bus, lo que permite, que la CPU pueda
acceder de forma independiente y simultnea a la memoria de datos y a la de instrucciones.
Como los buses son independientes stos pueden tener distintos contenidos en la misma
direccin .

Arquitectura segn el modelo HARVARD

Arquitectura OrtogonalArquitectura Ortogonal: Cualquier instruccin puede utilizar


cualquier elemento de la arquitectura como fuente o destino.
Arquitectura basada en banco de registrosArquitectura basada en banco de registros:
Implica que todos los elementos del sistema, es decir, temporizadores, puertos de
entrada/salida, posiciones de memoria, etc, estn implementados fsicamente como
registros.

PARTES DEL SISTEMA uP


El sistema uP independiente de su estructura u arquitectura va a estar compuesto por los
siguientes bloques y buses:
1.- Bloque de Memoria
2.- Bloque de I/O (Entradas y salidas)
3.- Buses de:
Datos
Direccin
Control
4.- La CPU propiamente tal
Empezaremos el estudio del sistema de microprocesador tratando de explicar que lo que es
un Bus por lo tanto vale la siguiente pregunta:
Que son y como Funcionan los buses dentro de un sistema uP?
Un bus se puede definir como un conjunto de lneas conductoras de hardware utilizadas
para la transmisin de datos entre los componentes de un sistema informtico. Un bus es en
esencia una ruta compartida que conecta diferentes partes del sistema, como el
microprocesador, la memoria y los puertos de entrada/salida (E/S), para permitir la
transmisin de informacin.
En el bus se encuentran dos pistas separadas, el bus de datos y el bus de direcciones. La
CPU escribe la direccin de la posicin deseada de la memoria en el bus de direcciones
accediendo a la memoria, teniendo cada una de las lneas carcter binario. Es decir solo
pueden representar 0 o 1 y de esta manera forman conjuntamente el nmero de la posicin
dentro de la memoria (es decir: la direccin). Cuantas ms lneas hayan disponibles, mayor
es la direccin mxima y mayor es la memoria a la cual puede dirigirse de esta forma. Por
ejemplo un bus de direcciones de 20 lneas (A0-A19) , ya que con 20 bits se puede dirigir a
una memoria de 1.
Aparte del bus de datos y de direcciones existen tambin ms de lneas de seal en la
comunicacin entre la CPU, la memoria y las I/O a las cuales tambin se acude, se trata del
bus de control donde se manejan seales como RD, WR, MEM, RESET, las lneas de
interrupciones y otras.
El siguiente cuadro muestra la cantidad de lneas que manejan los buses de datos y
direccin los distintos uP de la serie INTEL a lo largo de su evolucin..

Los datos son enviados por el bus de datos. El bus de datos del CPU 8088 tena solo 8 bits
con lo cual slo poda transportar 1 byte a la vez (en cada acceso a memoria) . Si la CPU
quera depositar el contenido de un registro de 16 bits o por valor de 16 bits, tena que
desdoblarlos en dos bytes y efectuar la transferencia de datos uno detrs de otro, es decir
hacer esta operacin en dos accesos a memoria.

La memoria
Empezaremos por estudiar el bloque de memoria, ya que es aqu de donde la CPU obtiene
las instrucciones que ejecuta ( programa), almacena o lee la informacin procesada o a
procesar
La base de las unidades de memoria son los Latch y Flip-Flop, con los cuales se construyen
las memorias de un Bit, esta claro entonces que con 8 memorias de 1 bits, se construyen
registros de 1 byte, y que con n registros de 1 Byte se construyen memorias masivas de
n Bytes. Por ello vamos a estudiar los Flip-Flop mas elementales tipo R-S , J-K y otros
que son la base adems de la electrnica digital secuencial, base de lo que ser el sistema
microprocesador que no es otra cosa que una maquina secuencial digital programable, y por
ende flexible.

Circuitos lgicos secuenciales


(Como conceptos bsicos para entender el funcionamiento de las unidades de memoria del
uP)
A diferencia de los circuitos lgicos combinacionales, los circuitos secuenciales tiene
memoria; pueden reflejar en su salida el efecto de una seal de entrada que hubo segundos
o das antes.
Los circuitos AND, OR y NOT funcionan sin memoria. Por ejemplo, en el caso del
circuito AND, una salida lgica 1 es obtenida nicamente durante el tiempo que todas las
entradas estn simultneamente en lgica 1. Si cada entrada pasa por lgica 1 de una

manera secuencial, no-simultnea, la salida permanecer en lgica 0. De aqu la necesidad


de un circuito electrnico que se pueda colocar en uno cualquiera de los dos estados lgicos
indefinidamente, hasta que sea intencionalmente pasado al estado contrario. Tal circuito es
conocido como BIESTABLE, o simplemente FLIP-FLOP. El biestable, en efecto, provee
una memoria, ya que puede "recordar" el ltimo estado en el que haba sido colocado.
Los circuitos flip-flops desempean un papel muy importante en la electrnica digital. Ellos
son usados para medir frecuencia, computar el tiempo, dividir trenes de pulsos por una
constante fija, generar seales en secuencia, memorizacin de registros(words), etc. Aunque
hay muchas clases de flip-flop, todos ellos tienen por fin primordial almacenar un bit
binario, representado por un estado elctrico alto o bajo. El circuito secuencial ms simple
es un Flip-Flop tipo RS.
RS FLIP - FLOP
Un RS flip-flop llamado algunas veces un "set-reset" flip-flop, es un circuito con dos
entradas y dos salidas. Las salidas son complementos entre s, o sea que, cuando la una est
en alto, la otra estar en bajo. Deriva su nombre del hecho de poder quitar (reset) y poner
(set) el estado alto en la salida Q. cuando se aplique un pulso en cada una de las dos
entradas: un pulso alto en la entrada S (set) quita, "borra", el pulso alto puesto en
anterioridad en Q. En la prctica la polaridad del pulso de manejo depender del tipo de
compuertas con las cuales se haya implementado el RS flip-flop, tal como se puede
observar en la figura 13.

De las tablas de verdad podemos deducir su funcionamiento teniendo en cuenta que,


cuando Q tiene lgica 1, el flip-flop se considera "set" (puesto), y cuando Q tiene lgica 0
es porque el flop-flop est "reset" (cleared, borrado). Las dos salidas Q y no-Q son
simtricas(iguales) en lo que a caractersticas elctricas se refiere, por lo que, de acuerdo
con las circunstancias, se podr tomar una u otra como tal.
RS FLIP-FLOP
El flip-flop RS bsico es "asynchronous" (no-sincronizado), responde a las entradas tan
pronto como ellas ocurren; muestra cambios en la salida cada que se presentan cambios en
Set y Reset. En ciertos procesos se requiere "to-synchronize" (sincronizar) la operacin del
RS flip-flop, de tal manera que slo se produzcan cambios en la salida cuando se cumpla
cierto requisito anterior. En caso contrario, las acciones se SET y RESET no deben alterar
la salida Q. Una manera de sincronizar la operacin de un RS Flip-Flop con otros circuitos
lgicos, es colocar una compuerta a cada entrada, de tal forma que ellas respondan a S y R
solamente cuando sean "habilitadas" (capacitadas) por un lgico 1 (nivel alto) procedente
de un CLOCK. (un clock es un circuito secuencial generador de un tren de pulsos, "ceros" y
"unos" de manera alternada). La figura 14 muestra un clocked Rs flip-flop(controlado, no
sincronizado).

EL DATA o D FLIP FLOP (TIPO D)


El flip - flop tipo D es una cierta modficacin introducida al flip-flop clocked
Rs(controlado en su funcionamiento por los pulsos Clock en una sola lnea comn de
entreda). El principio bsico se muestra en la figura 15.

Podemos apreciar que, es agregado un


inversor a una de las dos entradas del flipflop, de tal forma que la entrada restante y
la entrada del inversor queden unidas. Lo
anterior garantiza que las entradas a la
seccin RS sean siempre complementarias
una de otra, y asegura que el estado lgico
en la salida Q sser siempre el mismo
estado lgico, alto o bajo, del ltimo pulso
que lleg a la entrada D.

La informacin dada tiene un carcter general, ya que no se pueden dar conceptos


concretos por razn de la amplia variedad de flip-flop que se fabrican en circuito integrado,

an dentro de un mismo tipo. Nos servir para dejar cimentados ciertos principios, los
cuales nos ayudarn a interpretar luego las diferentes tablas de verdad, dadas por el
fabricante para facilitar al experimentador la comprensin del funcionamiento de una u otra
referencia.
EL JK FLIP - FLOP
Probablemente es el flip-flop ms usado en los circuitos secuenciales lgicos, por su
capacidad para CONTAR y DIVIDIR. Entrega un pulso completo de salida por cada dos
pulsos de entrada, caracterstica tenida en cuenta por muchos para denominarlo, tambin,
"toggle"(basculante, ondulante, Si - No - Si - No, etc.) flip-flop, o sencillamente un T flipflop.
Bsicamente, el JK flip-flop es un biestable RS flip-flop con compuertas (clocked)
dispuestas de tal forma que la accin PONER - QUITAR (set - reset) sea llevada a cabo por
una sola lnea de entrada.
Bsicamente, se puede considerar el JK flip-flop como un circuito biestable con una sola
entrada y dos salidas, completamente entre s. En la prctica, el circuito integrado dispone
de dos entradas auxiliares, marcadas J y K, dispuestas para "condicionar}" el estado que
debe tomar la salida a partir del momento que llegue la prxima transicin activa del pulso
clock.

La figura 16 muestra el circuito lgico y tabla de verdad para este flip-flop.


Se puede observar que, de acuerdo a como se encuentren las entradas J y K, la salida Q
puede operar como toggle o quedarse indefinidamente en un determinado estado, sin
importar los pulsos en la entrada clock. Cuando se utiliza al flip-flop como contador o
divisor, se pueden dejar libres las entradas J y K; en este caso, los pulsos cuya frecuencia se
desea modificar, se deben poner en la entrada correspondiente al clock.

Funciones que realiza la Memoria

La memoria de un sistema microprocesador se puede definir como los circuitos que


permiten almacenar y recuperar la informacin. En un sentido ms amplio, puede referirse
tambin a sistemas externos de almacenamiento, como las unidades de disco o de cinta,
pero en este curso la memoria es considerado como lo mas bsico, los discos y cintas son
en si mismos sistemas en base a microprocesador encargados de almacenar grandes
cantidades de informacin.
Hoy en da se requiere cada vez ms memoria para poder utilizar complejos programas y
para gestionar complejas redes de computadores.

Elementos que la componen


Una memoria vista desde el exterior, tiene la estructura mostrada en la figura 3-1. Para
efectuar una lectura se deposita en el bus de direcciones la direccin de la palabra de
memoria que se desea leer y entonces se activa la seal de lectura (R); despus de cierto
tiempo (tiempo de latencia de la memoria), en el bus de datos aparecer el contenido de la
direccin buscada. Por otra parte, para realizar una escritura se deposita en el bus de datos
la informacin que se desea escribir y en el bus de direcciones la direccin donde deseamos
escribirla, entonces se activa la seal de escritura (W), pasado el tiempo de latencia, la
memoria escribir la informacin en la direccin deseada. Internamente la memoria tiene
un registro de direccin (MAR, memory address register), un registro buffer de memoria o
registro de datos (MB, memory buffer, o MDR, memory data register) y, un decodificador
como se ve en la figura 3-2. Esta forma de estructurar la memoria se llama organizacin
lineal o de una dimensin. En la figura cada lnea de palabra activa todas las clulas de
memoria que corresponden a la misma palabra.

Elementos que componen la memoria


Por otra parte, en una memoria ROM programable por el usuario con organizacin
lineal, las uniones de los diodos correspondientes a lugares donde deba haber un "0" deben
destruirse. Tambin se pueden sustituir los diodos por transistores y entonces la clula de
memoria tiene el esquema de la figura 3-3 en este caso la unin que debe destruirse para
grabar un "0" es la del emisor.

En el caso de una memoria RAM esttica con organizacin lineal cada clula de memoria
toma la forma mostrada en la figura 3-4. En este esquema las primeras puertas AND slo
son necesarias en el una de las clulas de cada palabra. Se debe comentar la necesidad de la
puerta de tres estados a la salida del biestable: esta puerta se pone para evitar que se unan
las salidas de los circuitos de las clulas de diferentes palabras a travs del hilo de bit. Si
esa puerta no se pusiera (o hubiera otro tipo de puerta en su lugar, como una puerta AND)
la informacin correspondiente a la palabra activa entrara por los circuitos de salida de las
dems clulas, lo que los daara.
Organizar 1a memoria de esta forma, tiene el inconveniente de que la complejidad del
decodificador crece exponencialmente con el nmero de entradas y, en una memoria de
mucha capacidad, la complejidad del decodificador la hace inviable. Esto hace necesaria
una alternativa que simplifique los decodificadores. Esta alternativa la constituye la
organizacin en dos dimensiones en que los bits del registro de direccin se dividen en dos
partes y cada una de ellas va a un decodificador diferente. En este caso, las lneas
procedentes de ambos decodificadores (X e Y) se cruzan formando un sistema de
coordenadas en que cada punto de cruce corresponde a una palabra de memoria. Dado que
en cada decodificador slo se activa una lnea, slo se activar la palabra correspondiente al
punto de cruce de las dos lneas activadas. Fcilmente se puede comprender que los
decodificadores se simplifican mucho ya que cada uno tiene la mitad de entradas que en el
caso anterior. Hay que decir, sin embargo, que la clula de memoria se complica un poco
porque hay que aadir una puerta AND en cada palabra para determinar si coinciden las
lneas X e Y.

La organizacin de la memoria en dos dimensiones tambin es til para las memorias


dinmicas ya que el refresco de estas memorias se realiza por bloques y stos pueden
coincidir con una de las dimensiones (la que corresponda a los bits de direccin de mayor
peso).
En la prctica, las memorias dinmicas son ms lentas que las estticas y adems son de
lectura destructiva, pero resultan ms baratas, aunque necesiten circuitos de refresco, si la
memoria no es de mucha capacidad.

Tipos de memoria - Jerarqua de memoria


Jerarqua de memoria
En un computador hay una jerarqua de memorias atendiendo al tiempo de acceso y a la
capacidad que normalmente son factores contrapuestos por razones econmicas y en
muchos casos tambin fsicas. Comenzando desde el procesador al exterior, es decir en
orden creciente de tiempo de acceso y capacidad, se puede establecer la siguiente jerarqua:
- Registros de procesador: Estos registros interaccionan continuamente con la CPU
(porque forman parte de ella). Los registros tienen un tiempo de acceso muy pequeo y una
capacidad mnima, normalmente igual a la palabra del procesador (1 a 8 bytes).
- Registros intermedios: Constituyen un paso intermedio entre el procesador y la memoria,
tienen un tiempo de acceso muy breve y muy poca capacidad.
- Memorias cach: Son memorias de pequea capacidad. Normalmente una pequea
fraccin de la memoria principal. y pequeo tiempo de acceso. Este nivel de memoria se
coloca entre la CPU y la memoria central. Hace algunos aos este nivel era exclusivo de los
ordenadores grandes pero actualmente todos los ordenadores lo incorporan. Dentro de la
memoria cach puede haber, a su vez, dos niveles denominados cach on chip, memoria
cach dentro del circuito integrado, y cach on board, memoria cach en la placa de circuito

impreso pero fuera del circuito integrado, evidentemente, por razones fsicas, la primera es
mucho ms rpida que la segunda. Existe tambin una tcnica, denominada Arquitectura
Harvard, en cierto modo contrapuesta a la idea de Von Newmann, que utiliza memorias
cach separadas para cdigo y datos. Esto tiene algunas ventajas como se ver en este
captulo.
- Memoria central o principal: En este nivel residen los programas y los datos. La CPU
lee y escribe datos en l aunque con menos frecuencia que en los niveles anteriores. Tiene
un tiempo de acceso relativamente rpido y gran capacidad.
- Extensiones de memoria central: Son memorias de la misma naturaleza que la memoria
central que amplan su capacidad de forma modular. El tiempo de similar, a lo sumo un
poco mayor, al de la memoria central y su capacidad puede ser algunas veces mayor.
- Memorias de masas o auxiliares: Son memorias que residen en dispositivos externos al
computador, en ellas se archivan programas y datos para su uso posterior. Tambin se usan
estas memorias para apoyo de la memoria central en caso de que sta sea insuficiente
(memoria virtual). Estas memorias suelen tener gran capacidad pero pueden llegar a tener
un tiempo de acceso muy lento. Dentro de ellas tambin se pueden establecer varios niveles
de jerarqua.

Clasificacin de memorias
Clasificacin de memorias semiconductoras de acceso aleatorio
Las memorias se clasifican, por la tecnologa empleada y, adems segn la forma en que se
puede modificar su contenido, A este respecto, las memorias se clasifican en dos grandes
grupos:
1) Memorias RAM: Son memorias en las que se puede leer y escribir, si bien su nombre
(Random access memory) no representa correctamente este hecho. Por su tecnologa
pueden ser de ferritas (ya en desuso) o electrnicas. Dentro de stas ltimas hay memorias
estticas (SRAM, static RAM), cuya clula de memoria est basada en un biestable, y
memorias dinmicas (DRAM, dinamic RAM, en las que la clula de memoria es un
pequeo condensador cuya carga representa la informacin almacenada. Las memorias
dinmicas necesitan circuitos adicionales de refresco ya que los condensadores tienen muy
poca capacidad y, a travs de las fugas, la informacin puede perderse, por otra parte, son
de lectura destructiva.
2) Memorias ROM (Read 0nly Memory): Son memorias en las que slo se puede leer.
Pueden ser:
a) ROM programadas por mscara, cuya informacin se graba en fbrica y no se puede
modificar.
b) PROM, o ROM programable una sola vez.

c) EPROM (erasable PROM) o RPROM (reprogramable ROM), cuyo contenido puede


borrarse mediante rayos ultravioletas para regrabarlas.
d) EEPROM (electrically alterable ROM) o (electrically erasable ROM), que son
memorias que est en la frontera entre las RAM y las ROM ya que su contenido puede
regrabarse por medios elctricos, estas se diferencian de las RAM en que no son voltiles.
En ocasiones a este tipo de memorias tambin se las denomina NYRAM (no voltil RAM).
e) Memoria FLASH, denominada as por la velocidad con la que puede reprogramarse,
utilizan tecnologa de borrado elctrico al igual que las EEPROM. Las memorias flash
pueden borrar-e enteras en unos cuantos segundos, mucho ms rpido que las EPROM.
Bsicamente las memorias ROM se basan en una matriz de diodos cuya unin se puede
destruir aplicando sobre ella una sobretensin (usualmente comprendida ente -12.5 y -40
v.). De fbrica la memoria sale con 1's en todas sus posiciones, para grabarla se rompen las
uniones en que se quieran poner 0's. Esta forma de realizar la grabacin se denomina
tcnica de los fusibles.
ENTRADAS Y SALIDAS
Funciones que realiza
Vamos a sealar las funciones que debe realizar un microprocesador para ejecutar trabajos
de entrada/salida:
- Direccionamiento o seleccin del dispositivo que se debe llevar a cabo en la operacin
de E/S.
- Transferencia de los datos entre el procesador y el dispositivo (en uno u otro sentido, In
o Out ).
- Sincronizacin y coordinacin de las operaciones.
Esta ltima funcin es necesaria debido a la diferencia de velocidades entre los dispositivos
I/O y la CPU y a la independencia que debe existir entre los perifricos y la CPU (por
ejemplo, suelen tener relojes diferentes).
Se define una transferencia elemental de informacin como la transmisin de una sola
unidad de informacin (normalmente un byte) entre el procesador y el perifrico o
viceversa. Para efectuar una transferencia elemental de informacin son precisas las
siguientes funciones:
Establecimiento de una comunicacin fsica entre el procesador y el perifrico para la
transmisin de la unidad de informacin.
Control de los perifricos, en que se incluyen operaciones como prueba y modificacin

del estado del perifrico. Para realizar estas funciones la CPU gestionar las lneas de
control necesarias.
Se Define una operacin de E/S como el conjunto de acciones necesarias para la
transferencia de dato entre una I/O y la CPU.
Clasificacin de Unidades de I/O elementales
Esta clasificacin responde a la mas bsica de todas, ya que cualquier otro tipo de I/O que
usted encuentre corresponder a una combinacin de estas. Por ejemplo en un computador
personal un teclado es considerado como una entrada, sin embargo desde esta perspectiva el
teclado en su conjunto es un sistema de microprocesador, ya que el teclado de nuestro PC,
adems del teclado ( el conjunto de teclas contactos on-off) esta compuesto de un uP que
procesa cual es la tecla presionada, le asocia un cdigo y posteriormente lo transmite por
una interfaz serial al computador. Segn lo anterior la clasificacin mas elemental de E/S o
I/O es:
1.- Digitales
I/O
2.- Anlogas

1.- Dentro de las I/O Digitales:


a.- Paralelas
b.- Orientadas al Pin ( usadas normalmente en micro controladores)
c.- Paralelo-Serie / Serie-Paralelo
2.- Dentro de las Anlogas
a.- Conversores Anlogos a Digital ( Input)
b.- Conversores Digitales a Anlogo (Output)

Entradas y Salidas Digitales tipo Paralelo/Serie


CONVERTIDORES PARALELO/SERIE:
Algunas veces es necesario convertir datos paralelos a datos serie, y viceversa. Dicho
proceso es llevado a cabo fcilmente usando un registro para almacenar los datos, y luego
transfiriendo los datos a su salida en la forma deseada.

La figura 26 muestra una manera de convertir datos paralelos a datos en serie. Primero que
todo, los flip-flops RS son reset a lgica 0 por medio de un pulso activo en la lnea de
reposicin "reset line". Los datos son presentados simultneamente y cintnuamente a todas
las entradas (A, B Y C).
Cuando se presenta un pulso en la lnea de carga (load line) estos datos son transferidos a
travs de las compuertas AND marcadas LC. LB, LA, para reponer los flip-flops
correspondientes. Si una entrada particular est en lgica 1, el flip-flop es puesto en lgica
1. Si la entrada es lgica 0, el flip-flop permanece en su estado 0. Los datos estn ahora
almacenados en los flip-flops y se conservarn all hasta que sean removidos por cualquier
reposicin o por "clocking out".
"clocking out" es el nombre en ingles que se le da al proceso mediante el cual se extraen en
SERIE los datos acumulados en registro por desplazamiento. Una seal clock es una serie
de pulsos que se presentan por cada cierta proporcin de datos; es una seal de
sincronizacin. Cada vez que hay un pulso clock, las compuertas marcadas TC, no-TC, TB,
no-TB y 00 son "enabled" (capacitadas, abiertas). Si est presente un nivel lgico 1 en la
otra entrada de estas compuertas, su salida ser lgica 1 durante el tiempo que dure el pulso
clock. Por ejemplo, si la carga de los datos coloc al primer flip-flop A en el estado lgico
1, entonces el primer pulso clock har que la salida de la compuerta 00 pase a ser lgica 1.
Si la salida del flip-flop B es conectada a la entrada SET del flip-flop A, y el complemento
de B (complemento de B es no-B) es alimentado a la entrada RESET de A, entonces cada
vez que sea aplicado un pulso CLOCK se transferirn hacia A los pulsos contenidos en B.

La conexin similar de C a B proporciona una transferencia de C a B con cada pulso clock.


Es como si los datos estuviesen siendo "empujados" de izquierda a derecha con cada pulso
clock, lo cual hace que stos salgan en SERIE de su almacenamiento a una rata
determinada por la rata del clock. Vale la pena recordar que, "rata" se usa para expresar
porcentaje, cantidad, velocidad, etc.

La figura 27 representa un mtodo para convertir datos SERIE a datos PARALELOS. Se


aplican los mismos principios del convertidor anterior, pero en este caso se lleva a cabo la
funcin inversa. Los datos presentados a la entrada, izquierda, son sincronizados con el
clock; por ejemplo, los datos estn presentes durante el mismo intervalo de tiempo que lo
est el pulso clock.
Todos los flip-flops son devueltos a lgica 0 por la lnea reset. El primer bit de los datos es
transferido al flip-flop C a travs de la compuerta AND marcada LC, por la accin del
primer pulso clock. El segundo pulso clock pasa este bit del flip-flop C al flip-flop B y
transfiere el segundo bit de los datos al recin desocupado flip-flop C. De esta manera se
sigue procediendo, hasta que todos los flip-flops sean cargados de izquierda a derecha con
todos los datos.
En el momento apropiado, se coloca un pulso de lectura (READ) sobre la lnea read, el cual
capacita (ENABLE) las compuertas AND, RA, RB y RC para que suministren los datos
simultnea y paralelamente en las salidas A, B y C.

Entradas y Salidas Analogas

CONVERTIDORES ANALOGICO/DIGITAL:
Muchos procesos de inspeccin y funciones de control requieren que un voltaje o una
corriente anlogas sean convertidas a forma digital (pulsos), de tal forma que puedan ser
manejadas o interconectadas a circuitos digitales. Tal es el caso de los nuevos multmetros
digitales para el taller, los cuales requieren de un convertidor analgico/digital para
"traducir" en dgitos lo que su punta de prueba est "viendo", como diferentes niveles de
voltaje o corriente (para medir resistores, se hace pasar por tal elemento una mnima
corriente de voltaje conocido, y de acuerdo con su "caida" se deduce por analoga el valor
de la resistencia elctrica ( ley de ohm ). Dicha corriente es suministrada por el circuito del
multmetro, razn por la cual algunos modelos disponen de pilas internas.
Todos los parmetros fsicos conocidos tienen naturaleza analgica, por lo que fenmenos
tales como presin, temperatura, velocidad, intensidad de luz, aceleracin, etc., pueden ser
convertidos a un equivalente digital que permita su tratamiento como simples datos
binarios. Comercialmente se consiguen distintas clases de convertidores A/D (Analogic-todigital) en circuito integrado, algunos con salida lista para conectar un display, pero en el
fondo todos desempean el mismo trabajo: servir como "recolectores de datos" (DATA
ACQUISITION) para otros circuitos de "tratamiento de datos".
Simplemente como un ejemplo cualquiera, se muestra en la figura 28 el proceso completo
de conversin, formado por una pareja de circuitos integrados con funcin especfica: a)
procesador analgico (8052) de la seal de entrada y b) el rpocesador digital de datos
(7103), con su salida multiplexada para displays de 7 segmentos.

Conversor Digital-Anlogo
Un conversor digital-anlogo es un dispositivo electrnico que realiza la
funcin de conversin de un dato discreto y binario en un valor decimal
y anlogo, lo que entendido como una cadena de valores que se
ingresan al conversor, resultan ser una seal de valores continuos de
amplitud y de tiempo si se aplican los filtros pasa bajo correspondiente
en la salida anloga del conversor.
Electrnicamente, la conversin digital anlogo se basa en una
configuracin de un amplificador operacional trabajando como
sumador , tal como se ve en la figura:

El funcionamiento del circuito de la figura es de la siguiente forma:


La entrada del circuito se presentan en forma paralela, es decir, entran 8
niveles de tensin que pueden ser o o 5 Volts aprox. (0 o 1
lgico). En este caso las 8 entradas forman un byte, que forman 256
combinaciones binarias, lo que implica tambin 256 niveles de tensin
que deben ser limitados en forma conveniente ya que si todas las
entradas binarias se consideran en 1 Volt (reduccin de 5 a 1 Volts para

cada nivel lgico 1), tendramos una salida de 255 Volts si se


considerar que las amplificaciones de cada entrada tuviese una
relacin de 1, 2, 4, 8, 16, 32, 64, 128 respectivamente para las entradas
V1,v2,v3,v4,v5,v6,v7 y v8. Lo anterior implica una reduccin de la
entrada a valores de milsimas de volts, para obtener en la salida rango
que no superen los 15 o 20 Volts que normalmente se manejas en los
AMP OP. Ahora bien aunque tericamente el voltaje resultante fuese de
255 Volts, sabemos que esto tampoco es posible ya que pasado los
niveles + Vcc y Vcc de la fuente los Amp Op. Simplemente recortan la
seal de salida. En la ecuacin se puede ver el valor que toma la salida
de la configuracin del esquema electrnico mostrado en la figura
anterior:
R
R
R
R
R

Vout
*V 1
*V 2
*V 3
* V 4 .......................
*V 8
R2
R3
R4
R8
R1

De esta ecuacin de puede determinar que los valores de tensin,


generalmente representados por 0 o 5 (v) son los que determinan si el
bit se activa o no. Por otro lado, las fracciones representan los valores de
peso de los bits, es decir, mientras mas fracciones estn multiplicadas
con su valor de tensin, mayor ser el valor de la combinacin binaria.
Conversores anlogo-digital.
Este dispositivo realiza la funcin contraria que el anteriormente
descrito, esta encargado de hacer la conversin de una seal anloga a
una digital similar a convertir de un nmero decimal a un valor binario
formado por una combinacin de bits. Esta combinacin de bits esta
relacionado con la magnitud de tensin que esta entrando al conversor.
En el mundo real las seales analgicas varan constantemente, pueden
variar lentamente como la temperatura o muy rpidamente como una
seal de audio. Sucede que las seales analgicas no son directamente
manejables por los sistemas de uP por lo cual deben ser convertidas
seales digitales binarias, obviamente aquello trae aparejado errores
que despus no pueden ser recuperados por lo que en este proceso
siempre se contempla un error que varia y disminuye en la medida que
la cantidad de lneas de salidas del conversor CAD aumentan,
normalmente este error en el caso de las telecomunicaciones se asocia
con el ruido, llamndose normalmente a este error, ruido de
cuantificacin.
Si esta informacin analgica se convierte a informacin digital, se
podra manipular sin problema. La informacin manipulada puede

volver a tomar su valor analgico si se desea con un DAC (convertidor


Digital
a
Analgico)
Hay que definir que tan exacta ser la conversin entre la seal
analgica y la digital, para lo cual se define la resolucin que tendr.

Como Calcular el Error de Codificacin


Primero se define el nmero mximo de bits de salida (la salida digital
del conversor). Este dato permite determinar el nmero mximo de
combinaciones en la salida digital. Este nmero mximo est dado por:
2n donde n es el nmero de bits del CAD, finalmente el voltaje de
entrada anlogo es divido por el nmero de combinaciones y este por
dos, lo cual nos da el mximo error de codificacin cometido.

Conversor Anlogo Digital tipo Escalera


El siguiente esquema representa en forma general la configuracin de
un conversor anlogo-digital tipo escalera:

El funcionamiento de este conversor se basa en la comparacin de la salida del conversor


Digital Analgico (conv. D-A) que entra a la entrada Vin1 del comparador con la entrada
anloga que se quiere convertir a digital que entra por Vin del mismo comparador. Existe
un generador de impulsos que inyecta su seal en forma de un tren de impulsos en un
contador binario que alimenta a su vez al conversor Digital a Anlogo. La conversin parte
con el contador binario a cero, mientras que por Vin entra el nuevo valor de tensin
Anloga que se desea convertir, la que se compara con la que viene del conversor que
comienza a incrementarse, mientras y en todo momento se realiza la comparacin del
voltaje Vin y Vin1, si no son iguales, el contador binario sigue incrementndose y enviando
un dato digital conversor digital anlogo hasta que llega el momento en que las dos
entradas del comparador se igualan, cuando ocurre esto, la conversin Anloga a digital a
terminado y queda lista para ser leda por la salida del contador binario cuyo valor se enva

una compuerta de tres estados que permite que esta unidad se conecte con el bus de datos
de un sistema microprocesador.

Conversor Anlogo Digital tipo Rampa


El conversor de la figura tiene un funcionamiento que se basa en el uso
de un voltaje proveniente de un generador tipo rampa, que se genera
por un amplificador operacional en configuracin integrador, el cual se
compara con la entrada anloga que se desea convertir a digital. La
seal tipo rampa y la seal anloga entran a un comparador que segn
sea el nivel de la rampa en comparacin con la seal anloga, dejara o
no pasar un tren de pulsos proveniente de un generador al contador
binario el cual se empezara a incrementar desde cero a partir del
momento que se inicia la conversin anlogo a digital, cuando la rampa
y la seal digital se igualan, el tren de pulsos cesa en la entrada del
contador binario y por tanto se terminado la conversin Anloga a
Digital encontrndose su valor en la salida del contador binario, la cual
es llevada a un dispositivo de tres estados que permite que este valor
pueda ser ledo por un microprocesador en un bus de datos. Este CAD
trabaja a una velocidad determinada por la pendiente de la rampa, que
depende del valor del voltaje de referencia y de los parmetros R y C del
integrador.

Conversor anlogo-digital por aproximaciones sucesivas


La base del funcionamiento de este conversor esta en la comparacin
del valor entrante analgico con la salida del conversor Digital a

Analgico que recibe el valor de un registro donde se van probando unos


y ceros desde el bit que representa el digito con mayor peso, esto
implica una continua comparacin frente al seteo y reseteo del registro
hasta llegar a la instancia en que el valor de tensin entrante es igual a
la combinacin binaria que sale del conversor anlogo-digital.
El siguiente es un esquema general de cmo esta constituido este
conversor:

Este conversor trabaja de la siguiente forma:


Supongamos un conversor de 8 bits.
Al partir la conversin el registro es puesto a cero, en seguida se pone a uno el bits ms
significativo a uno y se compara la salida del conversor digital a analgico con la entrada
anloga que se desea convertir, si el valor de la salida del conversor supera al anlogo, el
bits es llevado a cero nuevamente, se avanza al bits siguiente menos significativo y es
colocado a uno, se vuelve a comparar la seal de salida del conversor digital a analgico
con la entrad anloga, si es mayor que la anloga el bits se retorna a cero, si es menor
continua en uno y se pasa al siguiente bits menos significativo inicindose un nuevo
proceso de prueba y error, para continuar una y otra vez hasta alcanzar al bits menos
significativo del conversor, punto donde la conversin anlogo a digital termina, tenindose
el valor de conversin en el registro, el cual es llevado a un buffer de tres estado que
permite que el microprocesador pueda conectar su bus de datos al conversor para leer el
resultado de la conversin.
Conversor tipo flash (o en paralelo)

Este es un dispositivo que realiza la conversin en forma mas rpida,


pero esto tambin implica la integracin de muchos componentes. Esta
basado en la ubicacin de comparadores que analizan nivel a nivel de
voltaje anlogo.
Este tipo de conversor se basa en tres etapas:
1.-Derivacin de voltaje
2.- Comparacin de voltajes ( referencias por derivacin con voltaje de
entrada anlogo.
3.- Codificador a valor binario equivalente.
Por ejemplo: un conversor anlogo-digital de 8 bits,
comparadores ser de 2 8 , es decir, 256 comparadores.
muy elevado de comparadores para la cantidad de
tecnologa de hoy en da ha logrado hacer que este
problema.

el nmero de
Es un nmero
bits, pero la
ya no sea un

Cada comparador esta sometido a un valor diferente de tensin, estando


as estos se activan en funcin al nivel de tensin entrante se la seal
anloga, por ende, se presenta un valor anlogo en la entrada, se
activan lo comparadores que detectan niveles de tensin iguales o
superiores a los de referencia y estos enva una seal al codificador,
dispositivo que trabaja en funcin a la entrada, es decir, entregara una
combinacin binaria equivalente al valor binario de la seal anloga de
entrada.

El siguiente es un esquema de la configuracin de este conversor:

Continuando con como funciona el codificador, este posee en su configuracin de trabajo,


una tabla que presenta la combinacin de salida, que esta directamente relacionada con las
seales de entrada, la siguiente corresponde a la tabla citada:

Como se puede ver en la figura, el codificador entrega una combinacin


binaria, cada vez mayor dependiendo del nivel de tensin entrante.

SAMPLE AND HOLD:


Este trmino es muy empleado cuando se habla de las caractersticas tcnicas de un
convertidor A/D por aproximacin sucesiva del registro. Su traduccin aproximada podra
ser "tomar una muestra y cerrar luego la entrada", para acomodarnos a su funcin como
circuito controlador del perodo lectura-conversin. El "sample and hold" se instala entre la
fuente de seal analgica (transductor adecuado) y el convertidor A/D, equivaliendo
SAMPLE al tiempo que permanece abierta la entrada durante el perodo de medida. Segn
el grado de exactitud (cantidad de bits que formarn el word binario equivalente a la
medida analgica), y aplicacin que se ha de dar al convertidor A/D, se pueden catalogar en
dos grandes grupos:
a) Los INTEGRATING, que, como su nombre lo implica, su salida representa el i9n tegral
o valor promedio de un voltaje de entrada durante un prefijado perodo de tiempo. No
requieren circuito "sample & hold"; son de bajo costo y precisos, pero tienen muy baja
velocidad (tpicamente, de 3 a 100 lecturas por segundo).
b) Los por SUCCESSIVE APROXIMATION, de alta velocidad de lectura (tpicamente,
hasta 100,000 conversiones por segundo), pero de alto costo y valores crticos en los
componentes. Necesitan circuito "sample & hold" en su entrada.

Arquitectura interna de un Microprocesador Clsico

Para entender cmo funciona un microprocesador, debemos primero conocer las partes o
bloques que lo componen. De otro modo, ser prcticamente imposible hacerse una idea
sobre su funcionamiento. De una forma global, podemos considerar al microprocesador por
complejo que sea siempre va a contener o se va a poder dividir en los siguientes tres
grandes bloques:

UNIDAD DE
DECODIFICACIN

UNIDAD DE
EJECUCIN

UNIDAD ARITMTICO- LGICA


(ALU)

UNIDAD DE DECODIFICACION Se encarga de decodificar la instruccin que se va a


ejecutar. Es decir, saber qu instruccin es. Cuando el microprocesador lee de memoria una
instruccin, el cdigo de esa instruccin le llega a esta unidad. Esta unidad se encarga de
interpretar ese cdigo para averiguar el tipo de instruccin a realizar. Por ejemplo,
instrucciones de suma, multiplicacin, almacenamiento de datos en memoria, etc.
UNIDAD DE EJECUCION Una vez que la unidad de decodificacin sabe cul es el
significado de la instruccin leda de memoria, se lo comunica a la unidad de ejecucin.
Esta unidad ser la encargada de la ejecucin y para ello activar las seales necesarias y en
un orden determinado. Es decir, es la encargada de dar las rdenes necesarias a las diversas
partes internas del microprocesador para poder ejecutar cada una de las instrucciones.
UNIDAD ARITMETICO LOGICA (ALU) La ALU (Aritmethic Logic Unit) es el
bloque funcional del microprocesador encargado de realizar todas aquellas operaciones
matemticas. Las operaciones que realiza son las siguientes: Todas las CPUs son capaces
de sumar y restar solamente, sin embargo hay varios ejemplos de otras que son capaces de
multiplicar y las menos dividir. Por otra parte estn las operaciones lgicas: AND, OR,
NOT, NAND, NOR, X-OR, etc).
En suma, saber cmo funciona un microprocesador, implica conocer cmo se van
ejecutando cada una de las instrucciones del programa que se almacena en memoria. Los
pasos globales que se siguen a la hora de consumar una instruccin son:

PARTE II
En esta segunda vamos a profundizar en las diferentes partes que componen un
microprocesador . Partiremos por considerar aquello medular a todo uP:
1.- La Unidad de control
2.- La Unidad aritmtico-lgica (ALU)

UNIDAD DE CONTROL
Es el centro nervioso del ordenador, ya que desde ella se controlan y gobiernan todas las
operaciones. Cmo funciones bsicas tiene:

tomar las instrucciones de memoria


decodificar o interpretar las instrucciones
ejecutar las instrucciones ( tratar las situaciones de tipo interno (inherentes a la
propia CPU) y de tipo externo (inherentes a los perifricos)

Para realizar su funcin, la unidad de control consta de los siguientes elementos:

Contador de programa
Registro de instrucciones
Decodificador
Reloj
Secuenciador

Contador de programa (Program-Counter) ( PC) . Contiene permanentemente la


direccin de memoria de la siguiente instruccin a ejecutar. Al iniciar la ejecucin de un
programa toma la direccin de su primera instruccin. Incrementa su valor en uno, de
forma automtica, cada vez que se concluye una instruccin, salvo si la instruccin que se
est ejecutando es de salto o de ruptura de secuencia, en cuyo caso el contador de programa
tomar la direccin de la instruccin que se tenga que ejecutar a continuacin; esta
direccin est en la propia instruccin en curso.
Registro de instruccin (RI). Contiene la instruccin que se est ejecutando en la unidad
de control. Esta instruccin llevar consigo el cdigo de operacin (un cdigo que indica
qu tipo de operacin se va a realizar, por ejemplo una suma)

Decodificador. Se encarga de extraer el cdigo de operacin (que est en el registro de


instruccin) de la instruccin en curso que la unidad de control debe ejecutar mediante la
secuencia de micro instrucciones que se generan en la unidad secuencia, lo analiza y emite
las seales necesarias al resto de elementos para su ejecucin a travs del secuenciador .
Reloj. Proporciona una sucesin de impulsos elctricos o ciclos a intervalos constantes
(frecuencia constante), que marcan los instantes en que han de comenzar los distintos pasos
de que consta cada instruccin.
Secuenciador. En este dispositivo se generan rdenes muy elementales (micrordenes)
que, sincronizadas por los impulsos de reloj, hacen que se vaya ejecutando poco a poco la
instruccin que est cargada en el registro de instruccin.
Recuerde que el secuenciador esta compuesto por una ROM de palabras muy grandes,
tantos bits como pines de control interno se necesiten para gobernar todos los recursos que
contiene la CPU en su interior, mas un contador que indica en todo momento donde esta la
micro instruccin.
Recuerde que una instruccin de maquina esta compuesta de muchas micro instrucciones,
comprendidas entre dos direcciones de la ROM del secuenciador.

UNIDAD ARITMTICO-LGICA (ALU)


Esta unidad se encarga de realizar las operaciones elementales de tipo aritmtico (sumas,
restas, productos, divisiones) y de tipo lgico (comparaciones). A travs de un bus interno
se comunica con la unidad de control la cual le enva los datos y le indica la operacin a
realizar .
La ALU est formada a su vez por los siguientes elementos:

Circuito operacional
Registros de entrada (REN)
Registro acumulador
Registro de estado que contiene (flags o banderas)

Circuito operacional. Contiene los circuitos necesarios para la realizacin de las


operaciones con los datos procedentes de los registros de entrada que contienen los
operandos (REN). Este circuito tiene unas entradas de rdenes para seleccionar la
operacin que debe realizar (suma, resta, etc).
Registros de entrada (REN). En ellos se almacenan los datos u operandos que intervienen
en una instruccin antes de la realizacin de la operacin por parte del circuito operacional.
Tambin se emplean para el almacenamiento de resultados intermedios o finales de las
operaciones respectivas.
Registro acumulador. Almacena los resultados de las operaciones llevadas a cabo por el
circuito operacional, la mayora de la veces REN2 es el Acumulador, es decir contiene un
operando y tambin va a contener el resultado de la operacin. Est conectado con los
registros de entrada para realimentacin en el caso de operaciones encadenadas. Asimismo
tiene una conexin directa al bus de datos para el envo de los resultados a la memoria
central o a la unidad de control.
Registro de estado (flags). Se trata de unos registros de memoria en los que se deja
constancia algunas condiciones que se dieron en la ltima operacin realizada y que habrn
de ser tenidas en cuenta en operaciones posteriores, como es el caso de una instruccin de
salto condicional, que salta si y solo si la operacin anterior resulto ser cero. Por ejemplo,
en el caso de hacer una resta, tiene que quedar constancia si el resultado fue cero, positivo o
negativo. Uno de los flags o bandera mas comn es Z ( que indica resultado igual a cero)

PARTE III
Set de Instrucciones
Se conoce como set de instrucciones al conjunto de instrucciones que es capaz de entender
y ejecutar un microprocesador.En funcin del tipo de microprocesador, concretamente si es
ms avanzado o no, podr entender y ejecutar ms o menos instrucciones.
Las instrucciones se clasifican segn su funcin en:

Instrucciones de transferencia de datos


Instrucciones de clculo ( Matemticas y Lgicas)
Instrucciones de transferencia del control del programa
Instrucciones de control

.Instrucciones de transferencia de datos. Estas instrucciones mueven datos (que se


consideran elementos de entrada/salida) desde la memoria hacia los registros internos del
microprocesador, y viceversa. Tambin se usan para pasar datos de un registro a otro del
microprocesador. Existen algunas instrucciones que permiten mover no slo un dato, sino
un conjunto de hasta 64 KBytes con una sola instruccin.
.Instrucciones de clculo. Son instrucciones destinadas a ejecutar ciertas operaciones
aritmticas, como por ejemplo sumar, restar, multiplicar o dividir, o ciertas operaciones
lgicas, como por ejemplo ANO, OR, as como desplazamiento y rotacin de bits.
.Instrucciones de transferencia del control del programa. Permiten romper la secuencia
lineal del programa y saltar a otro punto del mismo. Pueden equivaler a la instruccin
GOTO que traen muchos lenguajes de programacin.
.Instrucciones de control. Son instrucciones especiales o de control que actan sobre el
propio microprocesador. Permiten acceder a diversas funciones, como por ejemplo activar o
desactivar las interrupciones, pasar rdenes al coprocesador matemtico, detener la
actividad del microprocesador hasta que se produzca una interrupcin, etc.
Prcticamente todas las instrucciones estn formadas por dos elementos:

cdigo de operacin que indica el tipo de operacin se va a realizar


operandos, que son los datos sobre los que acta.

Por ejemplo, una instruccin que sume dos nmeros est formado por:

cdigo de operacin que indique "sumar"


primer nmero a sumar
segundo nmero a sumar

Existen instrucciones que slo tienen un operando o incluso que no tienen ninguno, estando
formadas solamente por el cdigo de operacin.
EJECUCIN DE LAS INSTRUCCIONES
Para que un programa pueda ser ejecutado por un CPU, ha de estar almacenado en la
memoria, generalmente ROM ( Nota, en el caso de computadores personales, los
programas son transferidos a la RAM y desde all son ejecutados por el uP.) . El
microprocesador tomar una a una las instrucciones que lo componen e ir realizando las
tareas correspondientes.

Se denomina ciclo de instruccin al conjunto de acciones que se llevan a cabo en la


realizacin de una instruccin.
Se compone de dos fases:

Fase de bsqueda
Fase de ejecucin

Fase de bsqueda. En esta fase se transfiere la instruccin que se va a ejecutar desde la


memoria central a la unidad de control que se encuentra en el interior del uP.
Fase de ejecucin. Consiste en la realizacin de todas las acciones que conlleva la propia
instruccin.
Una forma de clasificar los microprocesadores es en funcin de las instrucciones que son
capaces de ejecutar. Podemos encontrar dos tipos: microprocesadores: con tecnologa CISC
y RISC.

CISC Complex Instructions Set Computer, Ordenador con un conjunto de


instrucciones complejo.
RISC Reduced Instructions Set Computer, Ordenador con un conjunto de
instrucciones reducido.
Anteriormente hemos definido el set de instrucciones como el conjunto de instrucciones
que es capaz de entender y ejecutar un microprocesador. Si ese microprocesador entiende y
ejecuta muchas instrucciones (cientos de ellas), se trata entonces de un microprocesador
CISC. En cambio, si el microprocesador entiende y ejecuta muy pocas instrucciones
(decenas de ellas), se trata entonces de un microprocesador RISC.
En principio, parece que la tecnologa CISC es mucho ms ventajosa que la RISC. Pero no
es as: un micro CISC tarda mucho tiempo en ejecutar cada una de esas instrucciones. En
cambio un micro RISC, como slo entiende unas cuantas, su diseo interno le permite
ejecutarlas en muy poco tiempo, a una gran velocidad, mucho ms rpido que un
microprocesador CISC.
Cuando se desee que un microprocesador RISC ejecute cierta instruccin que no entiende,
sta se descompondr en varias instrucciones de las sencillas que s entiende. An as,
descomponiendo una instruccin compleja en varias sencillas, es capaz de operar mucho
ms rpido que el microprocesador CISC, el cual no tiene que descomponer esa instruccin
porque la entiende directamente.
Prcticamente, todos los microprocesadores que se utilizan en la fabricacin de ordenadores
personales (microprocesadores fabricados por Intel) son de tecnologa CISC. Intel, poco a
poco, va abandonando la tecnologa CISC y la sustituye por tecnologa RISC. As por
ejemplo, un Pentium, sin dejar de pertenecer a la categoria CISC incorpora algunas
caracteristicas de los micros RISC. Es de esperar que en un futuro, los micros fabricados
sean de tecnologa RISC; entonces los ordenadores sern muchsimo ms rpido de lo que
hoy los conocemos.
Intel no fabrica microprocesadores completamente RISC para no perder la compatibilidad
con los microprocesadores anteriores.
Microprocesadores CISC Interpretan y ejecutan un gran nmero de instrucciones.
Son ms lentos.
Microprocesadores RISC Interpretan y ejecutan slo unas pocas instrucciones. Son
mucho ms rpidos que los microprocesadores CISC.
Todos los microprocesadores utilizandos en la fabricacin de ordenadores personales,
son de tecnologa CISC.

Interrupciones
Interrupcin (tambin conocida como interrupcin hardware) es una seal recibida por
el CPU, indicando que debe "interrumpir" el curso de ejecucin actual del programa y pasar
a ejecutar cdigo especfico para tratar esta situacin.
Las interrupciones surgen de la necesidades que tienen los dispositivos perifricos de enviar
informacin al procesador principal de un sistema de computacin. La primera tcnica que
se emple fue que el propio procesador se encargara de sondear (polling) el dispositivo
cada cierto tiempo para averiguar si tena pendiente alguna comunicacin para l. Este
mtodo presentaba el inconveniente de ser muy ineficiente, ya que el procesador
constantemente consuma tiempo en realizar todas las instrucciones de sondeo.
El mecanismo de interrupciones fue la solucin que permiti al procesador desentenderse
de esta problemtica, y delegar en otro dispositivo la responsabilidad de comunicarse con el
procesador cuando lo necesitaba. El procesador, en este caso, no sondea a ningn
dispositivo, sino que queda a la espera de que estos le avisen (le "interrumpan") cuando
tengan algo que comunicarle o necesiten ser atendidos (ya sea un evento, una transferencia
de informacin, una condicin de error, etc.).

Funcionamiento del mecanismo de interrupciones


Cada dispositivo que desea comunicarse con el procesador por interrupciones debe tener
asignada una lnea nica capaz de avisar a ste de que le requiere para una operacin. Esta
lnea es la llamada IRQ ("Interrupt ReQuest", peticin de interrupcin).
Las IRQ son lneas que llegan al controlador de interrupciones, un componente hardware
dedicado a la gestin de las interrupciones, y que puede estar integrado en el procesador
principal o ser un circuito separado conectado al procesador principal. El controlador de
interrupciones debe ser capaz de habilitar o inhibir lneas de interrupcin (operacin
llamada comnmente enmascarar por la utilizacin de una mscara), y establecer
prioridades entre las distintas interrupciones habilitadas. Cuando varias lneas de peticin
de interrupcin se activan a la vez, el controlador de interrupciones utilizar estas
prioridades para escoger la interrupcin sobre la que informar al procesador principal. Sin
embargo hay interrupciones que no se pueden enmascarar o deshabilitar, las conocidas
como interrupciones no enmascarables o NMI.
Un procesador principal (sin controlador de interrupciones integrado) suele tener una nica
lnea de interrupcin llamada habitualmente INT. Esta lnea es activada por el controlador
de interrupciones cuando tiene una interrupcin que servir. Al activarse esta lnea, el
procesador consulta los registros del controlador de interrupciones para averiguar qu IRQ
es la que ha de atender. A partir del nmero de IRQ busca en el vector de interrupciones qu
rutina debe llamar para atender una peticin del dispositivo asociado a dicha IRQ.

Interrupcin no emascarable
Una interrupcin no emascarable (o NMI) es un tipo especial de interrupcin usada en la
mayora de los microprocesadores.
Una interrupcin no emascarable causa que el uP deje lo que esta haciendo, cambie el
puntero de instruccin ( PC ) para que apunte a una direccin particular y contine
ejecutando el cdigo de esa direccin. Se diferencia de los otros tipos de interrupcin en
que los programadores no pueden hacer que la uP las ignore, aunque algunos ordenadores
pueden por medios externos bloquear esa seal, dando un efecto similar al resto de las
interrupciones.

Usos
Al no poderse desactivar son empleadas por dispositivos para los que el tiempo de
respuesta es crtico, como por ejemplo el coprocesador matemtico Intel 8087 en el IBM
PC, el indicador de batera baja, o un error de paridad que ocurra en la memora, o
situaciones de riesgo en una maquina que requiere atencin urgente como exceso de
temperatura o presin en una caldera, aplicacin de freno en una superestructura, montura
azimutal o ecuatorial en un observatorio astronmico.
Tambin las NMI las puede usar el usuario, permitiendo interrumpir un programa en
ejecucin para permitir la depuracin. En este caso al provocar una NMI se suspende la
ejecucin del programa actual y el control se transfiere a un depurador para que el
programador pueda inspeccionar el estado de la memoria, los registros, etc. Las NMI se
pueden provocar de diferentes maneras, pulsando un botn, por medio de una combinacin
de teclas o por medio de un programa.

Vector de interrupciones
El Vector de interrupciones es el que contiene el valor que apunta realmente a la direccin
en memoria donde se encuentra el programa o rutina de atencin de interrupcin. En
muchas arquitecturas de computacin tpicas, los vectores de interrupcin se almacenan en
una tabla en una zona de memoria, la llamada tabla de vectores de interrupcin, de modo
que cuando se atiende una peticin de interrupcin de nmero n, el sistema, tras realizar
eventualmente algunas tareas previas (tales como salvar el valor de ciertos registros)
transfiere el control a la direccin indicada por el elemento n-simo de dicha tabla. Mas
simple todava son los sistemas donde el una interrupcin del tipo INT enva al CPU a una
direccin XXXX, a la interrupcin NMI a la direccin YYYY y es que a partir de esas
zonas se hace redireccin a las rutinas de interrupcin propiamente tal mediante el uso de
instrucciones de salto.
Usualmente, en las arquitecturas ms tpicas, la transferencia de control se efectuar de
modo anlogo a una llamada a funcin a nivel de mquina, almacenndose en una pila

(Zona de Stack) el estado actual del registro contador de programa (PC ), que ser
recuperado por una instruccin mquina de retorno de interrupcin (RETI), que restaurar
el estado correspondiente a la ejecucin normal de programa forzando la ejecucin de la
siguiente instruccin.

Microprocesadores Intel

Introduccin
Procesador
La unidad de procesamiento central
Unidad central de procesamiento (CPU)
Avance tecnolgico de los procesadores / Desde los primeros
8088/8086
80286
80386 DX y SX
80486DX/80486SX
80486DX2, 80486DX4, 80486SX2
Overdrives
La familia Pentium
Pentium Overdrive
Pentium Pro
Ejecucin dinmica
El futuro prximo de Intel
Anexos

INTRODUCCION

El microprocesador es uno de los logros ms sobresalientes del siglo XX. Esas


son palabras atrevidas, y hace un cuarto de siglo tal afirmacin habra parecido
absurda. Pero cada ao, el microprocesador se acerca ms al centro de nuestras
vidas, forjndose un sitio en el ncleo de una mquina tras otra. Su presencia ha
comenzado a cambiar la forma en que percibimos el mundo e incluso a nosotros
mismos. Cada vez se hace ms difcil pasar por alto el microprocesador como otro
simple producto en una larga lnea de innovaciones tecnolgicas.

Ninguna otra invencin en la historia se ha diseminado tan aprisa por todo el


mundo o ha tocado tan profundamente tantos aspectos de la existencia humana.
Hoy existen casi 15,000 millones de microchips de alguna clase en uso (el
equivalente de dos computadoras poderosas para cada hombre, mujer y nio del
planeta). De cara a esa realidad, quin puede dudar que el microprocesador no
slo est transformando los productos que usamos, sino tambin nuestra forma de
vivir y, por ltimo, la forma en que percibimos la realidad?
No obstante que reconocemos la penetracin del microprocesador en nuestras
vidas, ya estamos creciendo indiferentes a la presencia de esos miles de
mquinas diminutas que nos encontramos sin saberlo todos los das. As que,
antes de que se integre de manera demasiado imperceptible en nuestra diaria
existencia, es el momento de celebrar al microprocesador y la revolucin que ha
originado, para apreciar el milagro que es en realidad cada uno de esos chips de
silicio diminutos y meditar acerca de su significado para nuestras vidas y las de
nuestros descendientes.

Procesador

La unidad de procesamiento central


La unidad de procesamiento central (CPU) es donde se manipulan los datos. En
una microcomputadora, el CPU completo est contenido en un chip muy pequeo
llamado microprocesador. Todas las CPU tienen por lo menos dos partes bsicas,
la unidad de control y la unidad aritmtico lgica. Todos los recursos de la
computadora son administrados desde la unidad de control, cuya funcin es
coordinar todas las actividades de la computadora. La unidad de control contiene
las instrucciones de la CPU para llevar a cabo comandos. El conjunto de
instrucciones, que est incluido dentro de los circuitos de la unidad de control, es
una lista de todas las operaciones que realiza la CPU. Cada instruccin en el
conjunto de instrucciones es acompaado por un microcdigo, que son
instrucciones muy bsicas que le dicen a la CPU cmo ejecutar las instrucciones.
Cuando la computadora corre un programa, busca los comandos del programa
dentro del conjunto de instrucciones de la CPU y las ejecuta en orden. La unidad
aritmtico-lgico (ALU)es cuando la unidad de control encuentra una instruccin
que involucra aritmtica o lgica, le pasa el control al segundo componente de la
CPU. La ALU incluye un grupo de registros, es decir, memoria construida
directamente en la CPU que se usa para guardar datos que estn siendo
procesados por la instruccin actual.
Unidad Central de Procesamiento (CPU)

La CPU de una computadora contiene la inteligencia de la mquina; es donde se


realizan los clculos y las decisiones. El complejo procedimiento que transforma

datos nuevos de entrada en informacin til de salida se llama procesamiento.


Para llevar a cabo esta transformacin, la computadora usa dos componentes: el
procesador y la memoria. El procesador es el cerebro de la computadora, la parte
que interpreta y ejecuta las instrucciones. El procesador casi siempre se compone
de varios circuitos integrados o chips, estos estn insertados en tarjetas de
circuitos, mdulos rgidos rectangulares con circuitos que los unen a otros chips y
a otras tarjetas de circuitos.
El microprocesador moderno contiene unos 20 millones de transistores y cada
chip terminado es el producto de procesos ms complicados que los que se
utilizaron en el Proyecto Manhattan para construir la bomba atmica. Y no
obstante, pese a un proceso de manufactura extraordinariamente refinado, los
microchips se producen en volumen a razn de ms de 1,000 millones de
unidades por ao. Para poner esta complejidad en perspectiva, imagnese que
dentro de cada microprocesador diminuto existe una estructura tan compleja como
una ciudad de tamao mediano, incluidas todas sus lneas de energa elctrica,
lneas telefnicas, lneas de drenaje, edificios, calles y casas. Ahora imagine que
en esa misma ciudad, millones de personas se desplazan a la velocidad de la luz y
con la sincronizacin perfecta en una danza de coreografa muy complicada.
Y eso es tan slo un chip. De todas las estadsticas asombrosas que se utilizan
para describir el mundo del microprocesador, ninguna es ms extraordinaria que
sta: el nmero total de transistores que integran todos los microchips que se
producirn en el mundo este ao es equivalente al nmero de gotas de lluvia que
caern en California durante ese mismo periodo.

Avance Tecnolgico de los procesadores

8088 / 8086

En 1975 Intel decidi ponerse manos a la obra para construir su primer micro de
16 bits que sali al mercado en 1978. Se trataba del 8086, que defini el inicio de
su gama de productos ms famosa, la familia de microprocesadores x86.
La longitud de los registros del 8086 era de 16 bits (de ah su denominacin de 16
bits), haba versiones que funcionaban a 4.77 y 8 MHz, tena un bus de datos de
16 bits y un bus de direcciones de 20 bits, lo que le permita acceder a un mximo
de memoria de 1 Mb segn el clculo 2 elevado a 20. Seguidamente, en 1979,
Intel sac el 8088, que en contra de lo que podamos pensar no es mejor que el
8086. La diferencia era sustancial; el bus de datos era de 8 bits (la mitad). Este
paso hacia atrs estuvo provocado por el estado de la industria de la poca.
Utilizar un bus de datos de 16 bits supona forzar al mercado a desarrollar para 16
bits lo que implicaba un incremento en los costes de desarrollo de controladores

de perifricos y memorias. El sntoma fue que Intel se haba adelantado a su


poca.
Los japoneses, aprovechando la ocasin y dando fe a su fama de copiones
fabricaron unos clnicos de los 8086 y 8088. Fue NEC la que, por procedimientos
de ingeniera inversa, sac el diseo de estos micros y cre sus modelos V20 y
V30, que incrementaban el rendimiento respecto a los de Intel en un 10-30 por
ciento. Como os podris imaginar Intel demand a NEC, pero perdi el juicio. La
Justicia determin que el micro cdigo del chip poda registrarse pero Intel no
haba marcado en el chip el smbolo del copyright, con lo cual perda los derechos
de copia.
Se encuentra un error de diseo en el 8088 que afecta a la gestin de
interrupciones y al registro de pila SS (Stack Segment).
Intel fabric variaciones de estos modelos, sacando al mercado los 80C86, 80C88,
80186 y 80188 cuyas modificaciones fueron el ahorro de energa en las versiones
C para su instalacin en porttiles, y el rediseo interno para la optimizacin en las
versiones 1.
80286

En 1984 aparece el 80286 como base para una nueva generacin de ordenadores
de IBM, el IBM AT (Advanced Technology). Supone un nuevo salto tecnolgico.
Adems de incrementar el bus de direcciones de 20 bits a 24, lo que permita
acceder hasta los 16 Mb de RAM, se incrementaba la velocidad, llegando a ser
hasta un 25 por ciento ms rpidos que los 8086 y 8088 originales.
La novedad ms importante que se introdujo fue la gestin de memoria virtual. La
memoria virtual es una extensin de memoria en disco (o dispositivo de
almacenamiento secundario) aadida a la memoria fsica instalada. As, el 80286
es capaz de tratar hasta un total de 1 Gb, desglosado en 16 Mb de memoria fsica
ms 1008 Mb de memoria virtual. La memoria virtual solamente la utilizan los
programas que estn preparados para ello.
Aparece tambin un nuevo modo de operacin del microprocesador. Aparte del
modo real (el normal de operacin) que direcciona hasta 1 Mb de memoria fsica y
asegura la compatibilidad para aplicaciones diseadas par los 8086/8088, se tiene
el modo protegido que no es compatible con estos programas desarrollados para
los micros antes mencionados. El modo protegido es el que permite acceder a los
1.008 Mb de memoria virtual.
El 80286 trabaja en su arranque en modo real. El cambio a modo protegido, lo que
se conoce tcnicamente como upshift, no es reversible (downshift), siendo
necesario hacer un reset del microprocesador para volver al modo real; sin duda
un gran fallo de diseo.

El 80286 se present con velocidades de reloj de 2, 8, 10, 12, 16 y 20 MHz.


80386 DX y SX

Introducido en 1985, el 80386 DX supera un nuevo escaln en el avance


tecnolgico en microprocesadores. Se incorpora una nueva ampliacin y surge el
nmero mgico, el 32. Los buses de datos y de direcciones se amplan hasta 32
lneas de datos, ocurriendo lo mismo con el tamao de los registros. Esta
ampliacin supone un incremento en la memoria RAM fsica instalada. Puede
direccionar 4 Gb de memoria fsica (DX significa Double word eXternal) y 64 Tb de
memoria virtual, una cifra que en la actualidad est an muy por encima de las
posibilidades econmicas de los usuarios (a ver quin instala 4.000 Megabytes de
RAM, unos 20 millones de pesetas).
Arranca en modo real, al igual que el 80286, e incorpora un nuevo modo de
operacin: el modo real virtual del 8086, que permite tener varias sesiones 8086
trabajando simultneamente simulando una especie de pseudo multitarea.
En los microprocesadores anteriores la gestin de memoria se realizaba en
segmentos de 16 Kb. Con el 80286 este tamao de los segmentos de la memoria
se hacan muy pequeos y el programador tena que trabajar ms para adaptarse
a una gran cantidad de segmentos. El 80386 permite la definicin de segmentos
de memoria de tamao variable. Aparte, Intel corrigi la deficiencia del
downshifting, pudindose realizar por software.
Otra de las innovaciones en la inclusin de una memoria cache interna en el chip
destinada a almacenar instrucciones provenientes de memoria sin necesidad de
que la unidad de ejecucin intervenga. Intel comete un nuevo error en el diseo
del micro que genera inexactitudes en el clculo de 32 bits, que se presentan en
los micros lanzados al mercado hasta mayo del 1987. Los modelos corregidos van
etiquetados con una doble sigma mayscula o con el identificativo DX. Este error
afectaba a las operaciones de multiplicacin de 32 bits. Ocurra bajo las siguientes
circunstancias:

Se usa la memoria virtual y se produce una demanda de pgina.


El coprocesador matemtico 80387 est instalado y en uso.
Debe ocurrir una operacin de acceso directo a memoria (DMA).
El 80386 debe estar en estado de espera (Wait State).

Se detecta un segundo bug denominado POPAD bug. Su efecto es el vaciado del


registro acumulador EAX cuando se ejecuta una instruccin de acceso a memoria
inmediatamente despus de la ejecucin de la instruccin POPAD.
Aparecen variaciones que afectan al consumo de energa pensadas para
porttiles, se trataba de los 80386SL (Slow Low power) y 80386SLC (Slow Low
power Cache), que es propiedad de IBM aunque lo fabrique Intel. Las frecuencias
de funcionamiento eran de 12, 20, 25 y 33 MHz.

El 80386SX (SX significa Simple word eXternal) tiene las mismas caractersticas
que el 80386DX, salvo que el bus de direcciones externo se reduce a 16 bits.
Introducido en 1988 daba la potencia de un 80386 a precio de un 80286. Durante
mucho tiempo se rumore que el P9 podra ser compatible con los zcalos 80286,
pero al final no fue as. La razn es que el 80286 multiplexa todos sus buses para
conseguir con menos lneas el mismo resultado (menor coste) El 80386SX slo
multiplexa el bus de direcciones. Las frecuencias de funcionamiento eran de 16,
20, 25 y 33 MHz.

80486DX 80486SX

El 80486DX sali al mercado en 1989. La estructura interna hablando en trminos


numricos es igual a la de un 80386. El tamao de los registros y de los buses son
de 32 bits. Mantiene los tres modos de operacin: real, protegido y real virtual. Las
diferencias reales con los 80386DX son que tiene un flag ms, un estado de
excepcin ms, 2 bits ms en la tabla de entrada de pginas, 6 instrucciones y los
registros de control tienen una longitud de 9 bits.
Se realizan tambin cambios en la arquitectura interna. Se crea un mayor nmero
de lneas hardware lo que implica un incremento en la velocidad. Se imponen
reglas de diseo ms estrictas, lo que supone un reduccin del tamao del chip. Al
reducirse el tamao se reduce tambin el consumo y consiguientemente la
temperatura que alcanza el chip, con lo cual lo podemos hacer funcionar a un
mayor nmero de ciclos de reloj, lo que supondr la aparicin de los Overdrives.
Se incluye un coprocesador matemtico interno que dobla las prestaciones de un
80387 trabajando a la misma velocidad. Se logra un diseo mejor y la
comunicacin entre el chip principal y el coprocesador matemtico es interna, lo
que mejora la velocidad en las transferencias y unas sincronizaciones ms
estrechas.
La memoria cache (8 Kb) del microprocesador est dividida en 4 caches de 2 Kb
cada una. Esto agiliza la ejecucin de algunas aplicaciones. Si se asigna una
memoria cache secundaria (L2) el rendimiento del micro puede aumentar hasta un
30 por ciento ms.
El 80486SX es igual que un 80486DX, slo que el coprocesador matemtico est
inhabilitado. El coprocesador matemtico 80487SX es en realidad un 80486DX
puro que desactiva por completo el 80486SX, sin que podamos retirarlo de la
placa. Las velocidades a las que funcionan son de 25, 33, 40 y 50 MHz. Hay
versin SL para porttiles.

80486DX2, 80486DX4, 80486SX2

Estos modelos de microprocesadores en realidad son iguales que sus hermanos


menores. Internamente duplican la velocidad del reloj del sistema. Es igual que
revolucionar el motor de un coche para que corra ms. Las consecuencias son
obvias: un sobrecalentamiento del micro con una reduccin de potencia. Por este
motivo se recomienda utilizar un mtodo de disipacin de calor para que el
rendimiento no se vea reducido (laminillas disipadoras o ventiladores). Las
velocidades a las que trabajan son: 50, 66, 75 y 100 (slo para el DX4) MHz para
los DX2 y 40 y 50 MHz para los SX2.
Los 80486 tampoco estn libres del pecado original. En el 80486 cuando el
coprocesador matemtico detecta un error de limite del tamao de segmento,
algunas veces la CPU falla al generar la excepcin 13. Este error se genera bajo
las siguientes condiciones:

Segmento de datos de 64 Kb.


Operandos de direccionamiento de 16 bits.
Almacenar un valor de 8 bytes desde el coprocesador cuando la mitad est fuera de los
limites del limite del segmento.

Un segundo bug aparece en el clculo de la instruccin dedicada a calcular


arcotangentes.

Overdrives

Intel comenz una nueva poltica con la salida de los microprocesadores con la
denominacin Overdrive. Los Overdrive eran actualizaciones para los
microprocesadores instalados en los sistemas que dispusieran de un segundo
zcalo para tal propsito. En esta primera generacin de Overdrives los chips
disponan de un duplicador de frecuencia interno y tenan un pin ms, el nmero
169. Este pin se encargaba de inhabilitar el 80486 instalado en la placa dejando
como nico micro funcionando el Overdrive. No era posible la retirada del micro
anterior, puesto que el sistema dejaba de funcionar. La poltica de actualizacin
era buena, lo que no era tan bueno era la trampa para los usuarios. Si se puede
retirar el micro anterior se puede vender a usuarios que necesiten menos potencia,
no siendo tan gravosa la inversin de ms de 80.000 pesetas que costaban
cuando salieron los primeros en 1991.
En la segunda generacin de Overdrives se olvid el pin 169, teniendo los 168 que
los hacan compatibles con los zcalos de los 80486. En estos casos la
actualizacin es sencillsima: quitar el que estaba y poner el nuevo en el mismo
lugar.

La tercera generacin de Overdrives trabaja con un consumo


menor para reducir de este modo su alta temperatura. El
voltaje se reduce a 3.3 voltios de los 5 que necesitaban los
anteriores. Si vas a comprar un DX2 o DX4 fjate bien qu voltaje utiliza vuestra
placa. los Overdrives etiquetados como tal funcionan a 5V, los etiquetados
directamente como DX4, sin disipador, funcionan a 3.3V.
La familia Pentium
La quinta generacin de microprocesadores Intel tom el nombre de Pentium.
Aparecido en marzo de 1993 en frecuencias de trabajo de 60 y 66 MHz llega a ser
cinco veces ms potente que un 80486 a 33 MHz. Fabricados con un proceso
BiCMOS de geometra de 8 micras y con una arquitectura superescalar, los
microprocesadores Pentium se encuadran en un concepto RISC. Mientras que el
80386 y el 80486 tienen una unidad de ejecucin, el Pentium tiene dos, pudiendo
ejecutar dos instrucciones por ciclo de reloj con sus correspondientes clculos, ya
que tambin tiene dos unidades aritmtico-lgicas (ALU). El 80386 (CISC) ejecuta
un instruccin en varios ciclos de reloj y el 80486 ejecuta una instruccin por ciclo
de reloj (en trminos medios).
Intel toma como modelo la estructura separada para la memoria cache interna del
microprocesador. Consta de dos bloques de 8 Kb, uno para las instrucciones y
otro para los datos que funcionan bajo una estructura de asociacin de conjuntos
bidireccional. Para los extremadamente curiosos el algoritmo de sustitucin de
datos en la cache es el LRU (Least Recently Used, el menos utilizado
recientemente).
El coprocesador matemtico incluido utiliza algoritmos mejorados y aade
instrucciones de suma, multiplicacin y divisin de nmeros en punto flotante
integradas en el silicio, adems de incorporar un pipeline de 8 niveles para lograr
ejecutar operaciones en punto flotante en un solo ciclo de reloj.
Se integran nuevos avances tecnolgicos, adems de los ya comentados, como
por ejemplo la prediccin de ramificaciones, buses de datos internos de 256 bits,
bus de datos externo de 64 bits (que soporta transferencias de 258 Kbytes por
segundo) y memorias cache de escritura diferida.
La tecnologa de bus PCI se presenta junto con el Pentium, que incorporaba una
mejor implementacin del bus local. Permite tener hasta 10 conectores PCI en un
primer nivel, conectados al procesador a travs de la circuitera controladora PCI
(conexin no directa).
Intel apunta ahora hacia el mercado del entorno cliente/servidor. Con el Pentium
se puede construir un ordenador multiprocesador con 16 Pentium instalados,
pudiendo actuar uno de ellos como agente supervisor del sistema para entornos
que requieran un estricto control de errores (Functional Redundancy Checking ).
Aunque esto sirvi de poco en un principio. Seguro que recordis el famoso bug

de Pentium. La nueva y mejorada unidad de punto flotante cometa un error


garrafal al hacer una simple divisin. La siguiente funcin escrita para Visual
Basic detecta si un Pentium genera un fallo de clculo:
Function PentiumTest () As Double
Dim x As Double, y As Double, z As Double
x = 4195835#
y = 3145727#
z = x - (x / y) * y
PentiumTest = z
End Function

Recientemente han aparecido versiones del Pentium a 75, 90, 100 y 133 MHz,
siendo el ltimo, presentado el 23 de octubre, uno a 120 MHz diseado
especialmente para ordenadores porttiles.
Pentium Overdrive
Cmo no bamos a disponer de una versin "light" del Pentium compatible pin a
pin con nuestros microprocesadores 80486DX y DX2!
El 18 de septiembre de 1995 Intel anuncia la disponibilidad de un nuevo modelo
procesador de mejora Pentium Overdrive a 83 MHz (adems del modelo a 63 MHz
que ya exista) que permite la actualizacin de los microprocesadores 80486 DX,
DX2 y SX. Compatible pin a pin con estos microprocesadores en Pentium
Overdrive integra la tecnologa del Pentium en 3,3 voltios y 0'6 micras.

Aparte de ser como un Pentium genuino cabe destacar la presencia de una


memoria cache de 32 Kb, un regulador de tensin para reducir la tensin de 5 a
3,3 voltios, disipador y ventilador integrado y una circuitera interna que incrementa
en dos veces y media la frecuencia del bus del sistema (33 MHz * 2'5 = 82'5 MHz).
El incremento medio en las prestaciones respecto a un 80486 a 66 MHz es de un
50 por ciento aunque en aplicaciones puntuales (AutoCAD 13) puede ser de un 96
por ciento, lo que lo sita en las prestaciones de un Pentium genuino a 75 MHz. El
precio de venta al pblico es de unas 40.000 pesetas ms IVA.
Antes de comprarlo os recomiendo que llevis el ordenador a la tienda para que
sepan qu zcalo tiene para su actualizacin.

Pentium Pro

El Pentium Pro a 133 MHz, que fue presentado


el da 3 de noviembre de 1995 en el hotel Ritz
de Madrid es el primer microprocesador de la
tercera generacin de la gama Pentium. Est
preparado especficamente para ejecutar
aplicaciones compiladas y desarrolladas para
32 bits. Algunas aplicaciones desarrolladas para
entornos de 16 bits tienen una reduccin de
rendimiento en su ejecucin en sistemas
basados en un Pentium Pro respecto a los
Pentium normales a 133 MHz. Perfectamente
compatible con sus hermanos menores incorpora nuevas mejoras, de las cuales
destaca la ejecucin dinmica, tema al que dedicaremos un apartado especial y la
inclusin de una memoria cache secundaria integrada en el encapsulado del chip.

Fabricado en una geometra de 0'6 micras, Intel est realizando sus desarrollos
con vistas a reducirla a 0'35 micras como la de los Pentium actuales a 133 MHz, lo
que reducir su temperatura y podr elevarse la frecuencia de reloj hasta los 200
MHz.
Intel ha puesto mucho esfuerzo en probar el Pentium Pro para intentar salvarse de
los numerosos bugs que manchan su gran prestigio. Intel nos ofreci participar en
las pruebas de sus Pentium Pro, peticin a la cual respondimos afirmativamente,
pero al final, la drstica reduccin de unidades nos hicieron quedar fuera de los
elegidos (slo se probaron 100 unidades que estaran ms que asignadas de las
ms de 10.000 peticiones que recibi Intel a travs de Internet).
El Pentium Pro no es compatible con las placas que existen en el mercado. El
motivo principal es la inclusin de la memoria cache secundaria dentro del chip.

Se utiliza un bus interno que est optimizado para trabajar con las
temporizaciones de conexin directa, lo cual imposibilita la conexin de la
memoria cache externa (a mi entender no tiene la suficiente justificacin, puesto
que a nivel de SETUP la memoria cache secundaria se puede desactivar e incluso
anular retirando los integrados de sus zcalos. El tema de la sincronizacin ya es
otro cantar y probablemente sea el motivo real).
Este nuevo producto tiene un bus que ha sido diseado para conectar varios
Pentium Pro en paralelo que soporta el protocolo MESI, es un microprocesador de
32 bits que incorpora una instruccin ms (mover datos condicionalmente) que
supone una mayor prediccin de ramificaciones en la ejecucin. Tiene 21 millones
de transistores, 5'5 millones en el ncleo y 15'5 millones en la memoria cache
secundaria. La CPU consta de dos chips colocados en cavidades independientes
conectadas internamente. El chip correspondiente a la memoria cache es ms
pequeo que el del chip del ncleo, ya que la disposicin de los transistores
permite una mayor concentracin.
Ejecucin dinmica

La ejecucin dinmica es uno de los dos elementos clave en la ganancia de


prestaciones del Pentium Pro. Esta nueva forma de "pensar" del microprocesador
est basada en la combinacin de tres tcnicas: la prediccin de ramificaciones
mltiples, el anlisis del flujo de datos y la ejecucin especulativa.
Prediccin de ramificaciones mltiples.
El Pentium Pro utiliza un algoritmo de prediccin de ramificaciones mltiples para
anticipar saltos en la ejecucin del flujo de instrucciones. Predice dnde puede
encontrar en la memoria las siguientes instrucciones que debe ejecutar con una
precisin del 90%. Esto lo logra porque adems de extraer instrucciones para su
ejecucin, se adelanta y busca anticipadamente posibles nuevas instrucciones de
programa.
Anlisis del flujo de datos
El anlisis del flujo de datos permite saber al microprocesador en qu orden
ptimo puede o debe ejecutar las instrucciones, ya que sabe la dependencia de
unas respecto a otras.
Ejecucin especulativa
Cuando el Pentium Pro ejecuta instrucciones (5 por ciclo de reloj) utiliza la
ejecucin especulativa. Esto significa que las instrucciones no se ejecutan en el
mismo orden con el que entran al microprocesador, sino que se ejecutan en un
"orden desordenado", lo que paradjicamente hace que sea ms eficaz.

En el paso final, todos esos datos desordenados generados por la prediccin de


ramificaciones, se ordenan y se ensamblan esos paquetes de unidades de
proceso para montar el orden lgico en la secuencia de ejecucin del programa.
El futuro prximo de Intel

Intel est ya trabajando en sus modelos P55C, P68 y P7. El P55C ser una
versin Lite del Pentium Pro, presumiblemente compatible pin a pin con los
zcalos de 80486 y estar especialmente diseado para ejecutar aplicaciones de
Windows 95. Para cundo tendr el PC una ROM con rutinas grficas
preprogramadas para su uso por el sistema operativo? Tendr un precio inferior al
del Pentium Pro y parece que estar disponible a finales de 1996.
El P68 y el P7 corresponden a un nuevo escaln, ya que son micros de 64 bits
que se presentarn a lo largo de 1997. El primero es el sucesor del Pentium Pro
compatible con la familia x86, mientras que el P7 es una coproduccin de Intel y
Hewlett-Packard que utilizar la tecnologa PA-RISC de HP.
Resumiendo, Intel sigue con su poltica de "gstate un pastn en un ordenador
para despus tirarlo".

ANEXOS
TECNOLOGA
INTEL LANZA UN CHIP DE ALTA CAPACIDAD
Intel ha anunciado el lanzamiento al mercado de un chip que ha despertado
esperanzas de un gran desarrollo de la industria informtica y de las capacidades
de los microprocesadores, pero cuyo principio fundamental ya exista desde 1995.
El logro de este prodigioso chip est en que dobla la capacidad de los transistores
que lo forman. Hasta ahora, para aumentar las capacidades de los procesadores
se intentaba condensar miles de microscpicos transistores en el menor espacio
posible, para que cada uno de ellos almacenara un bit. Lo que se consigue con
esta tecnologa es que cada transistor almacene dos bits en vez de uno. Y se
aspira a que en un futuro sean ms de dos los bits albergados en cada transistor.
El mayor fabricante de chips del mundo, present el nuevo chip el mircoles en
Japn. La novedad se aplicar en una primera fase a cmaras digitales, telfonos
mviles y asistentes personales, pues consiste en memorias flash, las que no se
borran aunque el aparato se desconecte. Por ahora, no se usar en las memorias
RAM, las que usan los ordenadores, y que pierden lo almacenado cuando se corta
el fluido elctrico. De todos modos, el nuevo chip abre un nmero ilimitado de
posibilidades, y una carrera por su aplicacin con otros fabricantes de chips que
conocen mtodos parecidos o que trabajan en otros sistemas para aumentar la
capacidad de los microprocesadores.
La tecnologa de StrataFlash ya se conoca. En 1994 Intel anunci este sistema,
presentando un ao despus un prototipo que luego no desarroll. Desde
entonces hasta hoy, otros fabricantes como Sandisk e ISD han utilizado tecnologa
similar, aunque Intel ha sido la primera empresa en hacer su uso posible a gran
escala. Tanto que espera colocar en el mercado de 1 a1 10 millones de unidades
de estos StrataFlash en 1998. La competencia no est parada: ISD ya tiene chips

que almacenan varios bits por transistor de manera similar a StrataFlash, SanDisk
dispone de un sistema parecido en sus tarjetas PC, alcanzando capacidades de
almacenamiento similares. Lucent Technologies prepara para muy pronto otro tipo
de procesadores de seal digital (DSP), un tipo de chips utilizados en telfonos
celulares y estaciones de comunicacin digital, que siendo un 30% ms baratos de
los usados hoy, requieren slo una quinta parte de energa y memoria que los
chips de la competencia. En el terreno acadmico, la Universidad de North
Carolina en Charlotte anunci el descubrimiento de un chip capaz de usar
tecnologa elctrica y ptica a la vez, lo que aumenta su velocidad 100.000 veces
en relacin a los modelos actuales, aunque de momento se trata slo de un
prototipo desarrollado por Raphael Su y Qi Zhang, ingenieros elctricos.

TECNOLOGA
EL LTIMO CHIP DE SUN ALCANZA LOS 600 MHZ
En una carrera imparable plagada de nuevos chips cada vez ms potentes y
mtodos de fabricacin innovadores, Sun Microsystems present el lunes un
potente microprocesador que alcanza los 600 Mhz de velocidad de reloj, un
rendimiento que dobla la nueva generacin Pentium II recin estrenada por Intel,
que se present como un gran xito con "slo" 300 Mhz.
El nuevo chip de Sun, el UltraSparc-III constituye la tercera generacin de su
familia Sparc, el corazn de las estaciones de trabajo y de los servidores de Sun.
Una de sus caractersticas ms destacables es su escalabilidad, es decir, la
posibilidad de aadir ms chips al mismo sistema, de manera que trabajando en
paralelo, multipliquen las posibilidades de esta tecnologa. La empresa asegura
que mil de estos chips funcionando juntos pueden rivalizar con los
superordenadores ms potentes de hoy. Las aplicaciones para la red forman parte
de la comercializacin del prodigioso chip que, aplicado a los servidores, les
permitira soportar un mayor nmero de usuarios, abastecindolos de ms
informacin y ms rpidamente que los modelos actuales. Los primeros de estos
servidores estarn preparados para el prximo verano, y se gobernarn por el
sistema operativo de la casa, el Solaris.
Sun se adelanta as a Intel, ya que el UltraSparc-III utiliza una tecnologa de 64
bits, que Intel planeaba presentar como novedad en breves das bajo el nombre
clave de "Merced". Sin embargo, el gigante de los microprocesadores no se ha
quedado atrs y ha presentado a su vez una nueva generacin de chips para
servidores conocidos como i960 RISC que, diseados exclusivamente para redes
de telecomunicaciones, aceleran el trfico de datos a travs de este tipo de
mquinas gracias al protocolo I20. Marcas como Acer America, AST Computer,
Compaq, Dell, IBM, y Hewlett-Packard han anunciado ya que utilizarn este chip

en sus nuevos modelos de servidores, a presentar durante los prximos tres


meses.
Intel: un gigante en el Valle del Silicio
Pocas compaas pueden desafiar el claro dominio de Intel en la industria de
los semiconductores, ni siquiera las rivales de Japn y Corea del Sur
Louise Kehoe FT Intel es una organizacin nica en su categora. El gigante del
Valle del Silicio _el fabricante de chips ms grande del planeta, con un valor de
mercado superior a los 134 millardos de dlares_ produce la mayora de los
microprocesadores empleados por la industria de la computacin personal en todo
el planeta.
La enorme escala de las operaciones de Intel empequeecen las de casi todos
sus rivales. La compaa cerr 1997 con un volumen de ventas anual de 25,1
millardos de dlares, un aumento significativo en comparacin con los 20,8
millardos de dlares facturados en 1996. Gracias a un margen bruto de ganancias
cercano a 60%, la compaa genera ingresos a un ritmo que supera con creces el
de cualquiera de sus competidores.
Esto le permite a Intel invertir fuertes sumas en investigacin y desarrollo de
productos, adems de nuevas plantas y equipos. Este ao, por ejemplo, Intel tiene
un presupuesto de investigacin y desarrollo de 2,8 millardos de dlares y planea
desembolsar otros 5,3 millardos de dlares en nuevas lneas de produccin. Este
monto triplica las inversiones que realizar en este campo cualquier otro fabricante
de semiconductores.
Si se toman en cuenta la participacin dominante en el mercado de los
microprocesadores Pentium y el rpido ritmo de avance de la compaa en el
desarrollo de nuevas tecnologas, el liderazgo de Intel pudiera parecer
inexpugnable.
Sin embargo, varios cambios en el mercado de las computadoras personales
estn creando nuevos desafos para Intel, los cuales pudieran mermar su
crecimiento en el futuro. En particular, el lanzamiento al mercado de la 'PC bsica',
que se vende en Estados Unidos por menos de mil dlares, ha obligado a Intel a
replantear su estrategia. La compaa mejora incesantemente el rendimiento de
sus microprocesadores, por lo que una PC comprada un ao o incluso seis meses
atrs queda opacada por los nuevos modelos de mayor velocidad.
En el pasado, con el lanzamiento al mercado de cada nueva generacin de
microprocesadores, Intel sola disminuir los precios de las versiones anteriores,
por lo que los precios de PC permanecan bastante estables, al tiempo que el
rendimiento se incrementaba con celeridad. Microsoft y otras compaas de
software colaboraban en el ascenso de Intel mediante el desarrollo de programas
cada vez ms complejos que requieren hardware ms moderno.

Luego vino la 'PC bsica' que, en trminos generales, tiene como base un
microprocesador menos potente que alguno de los rivales de Intel. Al principio,
Intel rest importancia a esta nueva competencia. 'Quin deseara una PC de
menor capacidad?', se pregunt retricamente Intel. Empero, el precio de estas
mquinas resultaba muy conveniente y los compradores corrieron a comprarlas.
Se estima que el ao pasado 25% de las computadoras personales vendidas en
EEUU se ubicaron en el segmento de equipos con precios inferiores a los mil
dlares. El crecimiento de este nuevo mercado tom a Intel por sorpresa, lo que
obligo a la compaa a reevaluar la situacin. Intel poda ofrecer sus
microprocesadores viejos para que se usaran en estas PC, pero ello mermara los
mrgenes de ganancias que constituyen el orgullo de la compaa. Fue por ello
que Intel anunci recientemente planes para desarrollar chips especficamente
diseados para las PC de bajos precios.
En noviembre, Intel reorganiz sus grupos de productos para reflejar la nueva
estrategia. La compaa 'abarcar todos los segmentos' del mercado de la
computacin, seal Andrew Grove, director y presidente ejecutivo de Intel. A
mediados de ao la empresa planea ofrecer una versin de su microprocesador
Pentium II para mquinas PC de bajo precio. La compaa reducir el costo de sus
microprocesadores de mximo rendimiento mediante la eliminacin de los
costosos chips de memoria que acompaan la versin actual. Esto colocar el
Pentium II en el mismo nivel de precios que los chips ms lentos de sus
competidores.
Otro truco para reducir costos que Intel guarda bajo la manga es convertir
funciones actualmente realizadas por los chips en software que puede ser
ejecutado por el microprocesador. Aunque esto incrementa la carga de trabajo del
procesador central, tambin implica que incluso las computadoras personales
baratas necesitarn los microprocesadores de alto rendimiento de Intel.
La compaa tambin aspira liderar el mercado de chips para las nuevas
generaciones de codificadores de TV, los cuales permitirn a los suscriptores de
televisin por cable conectarse a Internet. Asimismo, ha realizado importantes
incursiones en el mercado de servidores. El ao pasado, la mayora de los
servidores vendidos por menos de 25 mil dlares tenan microprocesadores Intel.
En 1999, Intel lanzar al mercado una nueva generacin de microprocesadores
identificados con el nombre clave de Merced, orientada hacia servidores ms
complejos. Hewlett-Packard, que ocupa la segunda posicin entre las compaas
de computacin ms grandes de Estados Unidos, colabora con Intel en el
desarrollo de Merced y planea disear sus prximos productos para que utilicen
chips de Intel.
Esto establecera los chips de Intel como el estndar dominante para servidores y
convertira a la compaa en el mximo fabricante de microprocesadores de toda
la industria, un papel al que ninguna empresa puede aspirar.

Debido a que los fabricantes de chips ms grandes de Japn y Corea del Sur
enfrentan una situacin de inestabilidad econmica, pocas compaas pueden
desafiar seriamente el dominio de Intel en la industria. Incluso si otro fabricante de
chips disea un producto mejor que los de Intel, ninguno posee su capacidad de
produccin.

Lenguaje de Bajo Nivel.


Se denomina lenguaje mquina a la serie de datos que la parte fsica de la
computadora o hardware, es capaz de interpretar.
Una computadora digital o, mejor dicho, su parte fsica, slo distingue datos de
tipo binario, es decir, constituidos por dos nicos valores a los que se denomina
valor 0 y valor 1 y que, fsicamente, se materializan con tensiones comprendidas
entre 0 y 4.0 voltios y entre 4 y 5 voltios, respectivamente. Para representar datos
que contengan una informacin se utilizan una serie de unos y ceros cuyo
conjunto indica dicha informacin.
La informacin que hace que el hardware de la computadora realice una
determinada actividad de llama instruccin. Por consiguiente una instruccin es un
conjunto de unos y ceros. Las instrucciones as formadas equivalen a acciones
elementales de la mquina, por lo que al conjunto de dichas instrucciones que son
interpretadas directamente por la mquina se denomina lenguaje mquina.
El lenguaje mquina fue el primero que empleo el hombre para la programacin
de las primeras computadoras. Una instruccin en lenguaje mquina puede
representarse de la siguiente forma:
011011001010010011110110
Esta secuencia es fcilmente ejecutada por la computadora, pero es de difcil
interpretacin, siendo aun mas difcil la interpretacin de un programa (conjunto de
instrucciones) escrito de esta forma. Esta dificultad hace que los errores sean
frecuentes y la correccin de los mismos costosa, cuando no imposible, al igual
que la verificacin y modificacin de los programas.
La anterior secuencia de dgitos binarios (bits) puede indicar a la computadora
que:
<<Traslade el contenido de la posicin de memoria X a la posicin de memoria
Y.>>

Si lo vemos escrito de esta forma, lo entenderemos fcilmente, ya que est en


nuestro lenguaje natural, pero la mquina elemental ser incapaz de entender
nada. Vemos, pues, que la forma de indicar a la mquina lo que debe hacer es
totalmente diferente de la indicar a un ser humano lo mismo, por lo que deben
emplearse
sistemas
de
traduccin
de
una
forma
a
otra.
Ya se ha dicho que en un principio el programador empleaba directamente el
lenguaje mquina. En este caso el traductor era el programador; pero vimos
tambin los problemas que esto causaba.
Con la prctica en el manejo de la mquina se cay en la cuenta de que se podra
utilizar la propia mquina para ayudar en la traduccin de estos programas. Es
decir, que si a una mquina elemental se le dotaba de un programa, tambin
elemental, que tradujera un nmero determinado de caracteres de caracteres
alfabticos en una secuencia de unos y ceros, se podra escribir un programa
constituido por una secuencia de grupos de caracteres alfabticos, en la que cada
uno de los grupos indicara una accin a realizar por el ordenador y, una vez
escrito el programa, sera la propia mquina la que pasara los grupos de
caracteres a bits.
Las ventajas de esto son evidentes, ya que para el hombre resulta mas fcil
manipular grupos de caracteres y la traduccin se hara de manera automtica.
Por ejemplo, se podra escribir:
TRASLADAR 11010110, 00011101
Esto indicara que el contenido de la posicin 11010110 haba que pasarlo a la
posicin 00011101 si se sabe que al grupo alfabtico TRASLADAR le corresponde
la secuencia de bits 11110101. La mquina traducira la anterior instruccin como:
11110101 11010110 00011101
Al grupo alfabtico se le denomina mnemotcnico, y existir un mnemotcnico por
cada instruccin. Se le da este nombre porque sirve para recordar con mayor
facilidad el conjunto de instrucciones de una determinada mquina.
De esta forma aparecieron los lenguajes ensambladores (Assembler, en ingls).
Poco a poco, con el avance de la programacin (Software), estas primeras y
sencillas ayudas se fueron haciendo ms complejas, permitiendo que, adems de
los mnemotcnicos correspondientes a la operacin a realizar, se pudieran
emplear otros para indicar, por ejemplo, los operandos. La anterior instruccin se
podra escribir de la siguiente forma:
TRASLADAR POS-A POS-B
Que nos resulta de ms fcil comprensin.

Tambin se introdujo la posibilidad de indicar a la computadora la direccin de un


salto en la secuencia de ejecucin de un programa mediante la utilizacin de
etiquetas.
A los programas que permiten pasar del programa escrito de esta manera
(programa fuente, en ensamblador) al lenguaje mquina tambin se les denomina
normalmente ensambladores. Estos traductores, como ya se ha dicho, se fueron
complicando cada vez ms para que la labor del programador fuera ms fcil,
incluyendo los denominados directivos del ensamblador, que son rdenes o
informaciones que el programador da al traductor, no instrucciones de lenguaje
mquina.
Aun con todas estas sofisticaciones y ayudas, el programador de lenguaje
ensamblador debe conocer perfectamente el sistema fsico (Hardware) de la
mquina con que trabaja, pues aunque emplee mnemotcnicos, etiquetas, etc.,
stas sirven para indicar una posicin de memoria determinada, un registro o
cualquier otra parte de la mquina.
Por eso se dice que el lenguaje ensamblador es un lenguaje de bajo nivel, es
decir, ligado con el <<hard>> concreto de una determinada mquina. Aqu radica
la diferencia importante con los lenguajes ms complejos, llamados de alto nivel,
como el Basic, Pascal, Cobol, etc., ya que en stos el programador no tiene
porque reconocer el <<hard>> de la mquina. Trabaja con variables, constantes e
instrucciones simblicas, y es el traductor quien las transforma en las direcciones
apropiadas.
1.2. VENTAJAS DE LOS LENGUAJES ENSAMBLADORES
El corazn de la computadora es el microprocesador, ste maneja las necesidades
aritmticas, de lgica y de control de la computadora.
El microprocesador tiene su origen en la dcada de los sesenta, cuando se diseo
el circuito integrado (IC por sus siglas en ingles) al combinar varios componentes
electrnicos en un solo componente sobre un "chip" de silicio.
Los fabricantes colocaron este diminuto chip en un dispositivo parecido a un
ciempis y lo conectaron a un sistema en funcionamiento. A principios de los aos
setenta Intel introdujo el chip 8008 el cual, instalado en una computadora terminal,
acompao a la primera generacin de microprocesadores.
En 1974 el 8008 evoluciono en el 8080, un popular microprocesador de la
segunda generacin para propsitos generales. En 1978 Intel produjo la tercera
generacin de procesadores 8086, para proporcionar alguna compatibilidad con el
8080 y que representan un avance significativo de diseo.
Despus, Intel desarrollo una variacin del 8086 para ofrecer un diseo sencillo y
compatibilidad con los dispositivos de entrada/salida de ese momento. Este nuevo
procesador, el 8088, fue seleccionado por IBM para su computadora personal en
1981. Una versin mejorada del 8088 es el 80188, y versiones mejoradas del
8086, son los 80186, 80286, 80386, 80486 y el Pentium, cada uno de ellos permite
operaciones adicionales y ms procesamiento.

La variedad de microcomputadoras tambin ocasiono un renovado inters en el


lenguaje ensamblado, cuyo uso conlleva a diferentes ventajas:
Un programa escrito en el lenguaje ensamblador requiere considerablemente
menos memoria y tiempo de ejecucin que un programa escrito en los conocidos
lenguajes de alto nivel, como Pascal y C.
El lenguaje ensamblador da a un programador la capacidad de realizar tareas muy
tcnicas que serian difciles, si no es que imposibles de realizar en un lenguaje de
alto nivel.
El conocimiento del lenguaje ensamblador permite una comprensin de la
arquitectura de la maquina que ningn lenguaje de alto nivel puede ofrecer.
Aunque la mayora de los especialistas en Software desarrolla aplicaciones en
lenguajes de alto nivel, que son ms fciles de escribir y de dar mantenimiento,
una practica comn es recodificar en lenguaje ensamblador aquellas rutinas que
han causado cuellos de botella en el procesamiento.
Los programas residentes y rutinas de servicio de interrupcin casi siempre son
desarrollados en el lenguaje ensamblador.
Los lenguajes de alto nivel fueron diseados para eliminar las particularidades de
una computadora especifica, mientras que un lenguaje ensamblador esta
diseado para una computadora especifica, o, de manera ms correcta, para una
familia especifica de microprocesadores.
A continuacin se listan los requisitos para aprender el lenguaje ensamblador de la
PC:
Tener acceso a una computadora personal de IBM (cualquier modelo) o una
compatible.
Una copia del sistema operativo MS-DOS o PC-DOS y estar familiarizados con su
uso.
Una copia de un programa ensamblador. Las versiones de Microsoft son
conocidas como MASM y QuickAssembler: TASM es de Borland y OPTASM es de
System.
Para el aprendizaje de lenguaje ensamblador no es necesario lo siguiente:
Conocimiento previo de un lenguaje de programacin, aunque tenerlo puede
ayudarle a comprender algunos conceptos de programacin ms rpido.
Conocimiento previo de electrnica o circuiteria.
2.1. UNIDADES FUNCIONALES
Un elemento importante del hardware de la PC es la unidad del sistema, que
contiene una tarjeta de sistema, fuente de poder y ranuras de expansin para

tarjetas opcionales. Los elementos de la tarjeta de sistema son un


microprocesador, memoria de solo lectura (ROM) y memoria de acceso aleatorio
(RAM).
El cerebro de la PC y compatibles es un microprocesador basado en la familia
8086 de Intel, que realiza todo el procesamiento de datos e instrucciones. Los
procesadores varan en velocidad y capacidad de memoria, registros y bus de
datos. Un bus de datos transfiere datos entre el procesador, la memoria y los
dispositivos externos.
Aunque existen muchos tipos de computadoras digitales segn se tenga en cuenta
su tamao, velocidad de proceso, complejidad de diseo fsico, etc., los principios
fundamentales bsicos de funcionamiento son esencialmente los mismos en todos
ellos.
Se puede decir que una computadora est formada por tres partes
fundamentales, aunque una de ellas es subdividida en dos partes no menos
importantes. En la figura 2.1 se muestran dichas partes, llamadas genricamente
unidades funcionales debido a que, desde el punto de vista del funcionamiento,
son independientes.

Figura 2.1. Unidades funcionales de una computadora.


El nombre de cada parte nos indica la funcin que realiza. As, la Unidad Central
de Proceso (CPU) es la que coordina el funcionamiento conjunto de las dems
unidades y realiza los clculos necesarios; por eso la podemos subdividir en una
Unidad de Control (UC) y en una unidad de clculo o Unidad Aritmtico-Lgica
(UAL).
La unidad de Memoria Principal (MP) se encarga de almacenar las instrucciones
que realizar la Unidad de Control al ejecutar un programa y los datos que sern
procesados. La Unidad de Entradas y Salidas ser la encargada de la

comunicacin con el exterior a travs de los perifricos. Estos perifricos pueden


ser: de entrada, como los teclados; de salida, como los tubos de rayos catdicos, y
de entrada y salida, como los discos magnticos.
2.1.1. UNIDAD CENTRAL DE PROCESO.
La CPU constituye el cerebro de una computadora digital, pues realiza todas las
operaciones aritmticas y lgicas sobre los datos y adems controla todos los
procesos que se desarrollan en la computadora. Por ejemplo, para que se ejecute
un a instruccin, sta debe estar en el interior de la CPU, concretamente en la UC
y si hay que realizar clculos, interviene la UAL. Veamos como funciona cada una
de ellas.
Unidad de Control.
Para realizar su tarea la UC necesita conocer, por un lado, la instruccin y, por
otro, una serie de informaciones adicionales que deber tener en cuenta para
coordinar, de forma correcta, la ejecucin de la instruccin. El resultado de la
interpretacin de dichas informaciones son una serie de rdenes a los diferentes
elementos de la computadora.
La UC no emite todas las rdenes a la vez, sino siguiendo una determinada
secuencia. Para ello utiliza un elemento que le va indicando el instante en que
debe ejecutar una determinada fase de la instruccin. A este elemento se le
denomina Reloj, y se dice que sincroniza las acciones de la UC; cuanto ms
rpido marque el tiempo, ms rpida ser la ejecucin de la instruccin. Sin
embargo, hay un limite, ya que, si marca excesivamente rpido, es posible que no
puedan cumplir adecuadamente las rdenes de los diferentes elementos, por lo
que se producirn errores.
En la figura 2.2 se esquematiza el conjunto de seales que utiliza la UC y las que
genera. Como informaciones adicionales a las instrucciones podemos ver los
impulsos de reloj y los indicadores de estado. Los indicadores de estado son una
serie de bits que se modifican segn resultados de las operaciones anteriores
guardando una memoria histrica de los acontecimientos precedentes para que,
en funcin de dichos acontecimientos, pueda la UC tomar decisiones.

Figura 2.2. Seales que intervienen en la UC.


La unidad de control esta formada, bsicamente por un elemento que interpreta
las instrucciones y varios elementos de memoria denominados registros. Uno de
estos registros almacena la instruccin mientras el intrprete est traduciendo su
significado, por lo que se denomina Registro de Instruccin (RI). El resto de las
instrucciones permanecen en la memoria, esperando que les toque su turno de
ejecucin.
La UC por otra parte deber conocer cul es la direccin de la prxima
instruccin, para poder ir a buscarla una vez que finaliza la ejecucin de la
instruccin en curso; direccin que guarda el registro llamado Contador de
Programa (CP).
Los indicadores de estado estn agrupados en un registro denominado Registro
de Estado (RE).
La Figura 2.3 muestra los elementos que acabamos de nombrar.

Figura 2.3. Elementos bsicos de la Unidad de Control.


Unidad Aritmtico - Lgica.
La unidad Aritmtico - Lgica (UAL) es la encargada de realizar los clculos. Los
datos sobre los que se realizan la operaciones se denominan operandos. Al
elemento encargado de ejecutar las operaciones se le denomina operador, y esta
formado por una serie de circuitos electrnicos que son capaces de sumar dos
nmeros binarios o hacer las operaciones lgicas elementales: disyuncin,
conjuncin y negacin; incluso algunos operadores son tambin capaces de
multiplicar, dividir y realizar otras operaciones mas complejas.
Para que el operador realice la operacin, los operandos se llevan a la UAL y se
guardan en unos registros denominados registros de trabajo. El resultado de la
operacin se guarda tambin en un registro antes de ser llevado a la memoria o a
la Unidad de Entradas y Salidas. Frecuentemente se utiliza un mismo registro para
guardar uno de los operandos y, tambin, el resultado, denominado registro
Acumulador.
El operador, adems de calcular el valor de la operacin, modifica el registro de
estado segn el resultado de la operacin. As, si el resultado es un valor negativo,
se modifica un bit de dicho registro, llamado bit negativo o bit N, ponindose a 1;
por el contrario, el bit N permanecer en estado 0 mientras el contenido del
acumulador no sea negativo. De igual forma indicara la UAL a la UC si el resultado
ha sido cero, o si ha producido algn acarreo, etc.
En la figura 2.4 se muestran los elementos de la UAL y las seales que
intervienen.

(a)

(a) UAL con tres registros: 2 para los operandos y 1 para el resultado.

(b)
(b) UAL con acumulador.
Figura 2.4. Elementos y seales de la AUL.
2.1.2. UNIDAD DE MEMORIA PRINCIPAL.
La memoria principal esta formada por un conjunto de unidades llamadas
palabras. Dentro de cada una de estas palabras se guarda la informacin que
constituye una instruccin o parte de ella (puede darse el caso de que una sola
instruccin necesite varia palabras), o un dato o parte de un dato (tambin un dato
puede ocupar varias palabras).
A la cantidad de palabras que forman la MP se le denomina capacidad de
memoria. De este modo, cuanto mayor sea el numero de palabras mayor ser el
numero de instrucciones y datos que podr almacenar la computadora.
Una palabra esta formada a su vez de unidades mas elementales llamadas bits,
del mismo modo que en el lenguaje natural una palabra esta formada por letras.
Cada bit solo puede guardar dos valores, el valor 0 o el valor 1; por eso se dice
que son elementos binarios.
El numero de bits que forman una palabra se llama longitud de palabra. Por regla
general, las computadoras potentes tienen memorias con longitud de palabra
grande, mientras que las computadoras pequeas tienen memorias con longitud
de palabra menor.
En la figura 2.5 se muestra como se puede estar organizada una Memoria
Principal.

Figura 2.5. Organizacin de una unidad de memoria.


Las palabras forman una matriz de 10 filas y 10 columnas. La primera palabra
corresponder con la direccin 00, la segunda con la 01, y la ultima, con la 99. La
capacidad de la memoria ser de 10 * 10 = 100 palabras. Tambin se muestra la
longitud de la palabra 38, que es de 8 bits, al igual que las dems, y la informacin
que contiene, que es el valor binario 10011010.
Las palabras se distinguen entre si por la posicin que ocupan en la MP, y se
puede guardar una informacin y luego recuperarla indicando el numero de dicha
posicin. A los nmeros que sealan las posiciones de memoria se les da el
nombre de direcciones de memoria.
La accin de guardar una informacin en una palabra de la memoria se llama
acceso de escritura, y la accin de recuperarla, acceso de lectura. Los accesos
son coordinados por la UC. La secuencia de ordenes que debe generar la UC se
indica en la tabla 2.1.
En la tabla 2.1 (a) se muestra un acceso de escritura. Obsrvese que la UC debe
indicar, adems de la posicin donde se debe guardar el dato, el valor del dato y
las indicaciones de control que le digan a la memoria que se desea guardar el dato
y el momento en que debe iniciarse la operacin de escritura.
Esta ultima orden la dar la UC cuando este segura de que los datos anteriores
han llegado correctamente a la MP. Despus de esta ultima orden, la UC espera
un tiempo para asegurar que se ha escrito la informacin en la MP.
En la tabla 2.1 (b) se muestra como se realiza un acceso de lectura. En este caso,
la UC no indica el dato, puesto es precisamente lo que espera recibir. Los dems
pasos son idnticos a los del acceso de escritura.
Desde que se inicia la secuencia hasta que finaliza transcurre un tiempo,
denominado tiempo de acceso, cuya duracin depende de la tecnologa con que
esta fabricada la MP.
Tabla 2.1. Secuencia de acceso a la memoria.

(a) Acceso de escritura.

(b) Acceso de lectura.

2.1.3 UNIDAD DE ENTRADAS Y SALIDAS.


Ya se ha visto en las secciones precedentes como funcionan la CPU y la MP, pero
puede decirse que es necesaria la comunicacin entre el interior de la
computadora y su entorno o periferia. Esta comunicacin se consigue a travs de
dispositivos de muy diversos tipos, como son: teclados, impresoras, pantallas,
discos magnticos, etc. Es estos dispositivos se les conoce con el nombre
genrico de perifricos.
En la figura 2.6 se muestran algunos perifricos conectados a la Unidad de E/S, la
cual hace de intermediaria entre los perifricos y la CPU. Las flechas indican el
sentido en que fluye la informacin.

Figura 2.6. La unidad de E/S hace de intermediaria entre la UCP y los perifricos.
La coordinacin de la comunicacin entre los perifricos y la CPU la realiza la
Unidad de E/S. Obsrvese que esta no es un perifrico sino un dispositivo que
gestiona a los perifricos siguiendo las ordenes de la CPU; es decir, la Unidad de
E/S recibe de la Unidad de Control informacin sobre el tipo de transferencia de
datos que debe realizar (si es de entrada o de salida) y perifrico que debe de
utilizar; si es de salida recibir tambin el dato que debe enviar y el momento de la
operacin.
Entonces, la Unidad de E/S seleccionara el perifrico y ejecutara la operacin
teniendo en cuanta las caractersticas propias de cada perifrico. Una vez
ejecutada la orden avisara a la UC de la terminacin de la transferencia.
Cada perifrico o parte de un perifrico tendr asignado un numero o direccin
que servir para identificarlo. Cuando la UC quiera seleccionarlo enviara dicho
numero a la Unidad de E/S.
Para solucionar el problema de la imposibilidad de saber cuanto tiempo durara una
transferencia de informacin con un perifrico se han desarrollado diversas
tcnicas de comunicacin entre la CPU y los perifricos.

Lo mas sencillo es que la CPU, cuando desee hacer una transferencia de


informacin con un perifrico, pregunte a la Unidad de E/S si dicho perifrico se
encuentra disponible. Si no lo esta, debe repetir la pregunta una y otra vez hasta
obtener una respuesta afirmativa, en cuyo caso se inicia la transferencia de
informacin.
Si se desea obtener mayor rendimiento del ordenador, se puede emplear otro
mtodo que se denomina sincronizacin mediante interrupcin. La caracterstica
de este mtodo es que la CPU, en lugar de dedicarse a preguntar a la Unidad de
E/S por el perifrico que desea utilizar, lo que hace es indicar a la Unidad de E/S
que desea hacer una transferencia con el perifrico, y seguidamente, si no esta el
perifrico preparado, empieza otra tarea, olvidndose momentneamente del
perifrico.
Cuando este preparado, la Unidad de E/S indicara a la CPU que puede realizarse
la transferencia; entonces, la CPU interrumpir la tarea que esta realizando y
atender al perifrico. De esta forma, la CPU no pierde tiempo esperando al
perifrico.
2.1.4. INTERCONEXION DE LAS UNIDADES FUNCIONALES.
En los apartados anteriores hemos visto las funciones que realiza cada unidad de
la computadora, y que se deben de comunicar entre ellas para pasarse
informacin. Estas informaciones se transmiten en forma de seales elctricas y,
por tanto, circulan a travs de conductores elctricos.
Ya sabemos que en un sistema digital las informaciones se encuentran codificadas
en binario formando grupos de bits. Cada bit de uno de estos grupos se suele
enviar de una unidad a otra por un conductor diferente al del resto de los bits. De
esta forma, si el grupo esta constituido por 8 bits, sern necesarios 8 conductores;
si lo forman 16 bits, se emplearan 16 conductores; etc. Se hace as para ahorrar
tiempo, ya que circulan todos los bits de un mismo grupo a la vez, cada uno por su
conductor. A esta forma de enviar los datos se denomina transmisin en paralelo.
Cuando la CPU quiere leer o escribir en una determinada posicin de memoria,
enviara la direccin, en paralelo, a la memoria por un conjunto de conductores
elctricos al que se denomina bus de direcciones, ya que se utiliza exclusivamente
para enviar direcciones. As mismo, los datos ledos o los que se quieren escribir
se trasladan mediante un conjunto de conductores elctricos denominado bus de
datos. Las ordenes de la CPU a la MP y las respuestas de la MP a la CPU son
enviadas por un tercer conjunto de conductores llamado bus de control.
En la figura 2.7 se muestran las conexiones de la CPU con la MP. Se han dibujado
en la figura 2.7 (a) todos los conductores elctricos suponiendo que se emplean 8
hilos para el bus de datos, 16 para el de direcciones y 3 para el de control. En la
practica no se dibujan todos los hilos para simplificar las figuras y se hace como
en las figuras 2.7 (b) y 2.7 (c).

(b) Indicando sobre una lnea el nmero de


conductores.

(a) Representando todos los hilos.


(c) Indicando el sentido de las informaciones.
Figura 2.7. Interconexiones entre la UCP y la MP.
Existen varias formas de interconectar las unidades funcionales de la computadora
entre si. Una de ellas emplea un nico conjunto de buses, como puede apreciarse
en la figura 2.8 (a), al que se conectan todas las unidades. Esto obliga a que, en
un determinado instante, solo dos unidades puedan estar haciendo uso del mismo;
si hay que enviar algo a la tercera unidad, se deber esperar a que quede libre.
La principal ventaja de este sistema de interconexin es su bajo costo, y la
principal desventaja, su mayor lentitud. Adems, si se emplea el mismo bus de
direcciones para indicar la de un perifrico y la de una posicin de memoria, no
podr coincidir el numero de ningn perifrico con ninguna direccin de memoria;
si as lo hicieran, se producirn errores al seleccionarse a la vez el perifrico y la
posicin de memoria. Por lo tanto, se tendr cuidado en asignar a los perifricos
direcciones que no coincidan con las de la MP. En estos casos se dice que los
perifricos estn mapeados en memoria, ya que la CPU no distingue entre las
transferencias a perifricos y a MP.
Otra forma de interconectar las unidades de la computadora consiste en emplear
conjuntos de buses diferentes para la Unidad de E/S y la MP. De esta forma,
aunque se encarece el sistema, se gana en velocidad y se pueden emplear
direcciones iguales para nombrar perifricos y a posiciones de memoria. La CPU,
si quiere seleccionar un perifrico, utiliza el bus de la Unidad de E/S, y si quiere

seleccionar una posicin de memoria, utiliza el bus de memoria. En este caso se


dice que los perifricos no estn mapeados en memoria. En la figura 2.8 (b) se
muestra una posible conexin con el bus mltiple.

(a) Empleando un solo conjunto de buses.

(b) Empleando dos conjuntos de buses diferentes.


Figura 2.8. Formas de interconexin.
2.2. REGISTROS INTERNOS DEL PROCESADOR.

Los registros del procesador se emplean para controlar instrucciones en ejecucin,


manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Los
registros son direccionables por medio de un nombre. Los bits por convencin, se
numeran de derecha a izquierda, como en:
... 15

14

13

12 11

10

Registros de segmento
Un registro de segmento tiene 16 bits de longitud y facilita un rea de memoria
para
direccionamiento
conocida
como
el
segmento
actual.
Registro CS. El DOS almacena la direccin inicial del segmento de cdigo de un
programa en el registro CS. Esta direccin de segmento, mas un valor de
desplazamiento en el registro apuntador de instruccin (IP), indica la direccin de
una instruccin que es buscada para su ejecucin.
Registro DS. La direccin inicial de un segmento de datos de programa es
almacenada en el registro DS. En trminos sencillos, esta direccin, mas un valor
de desplazamiento en una instruccin, genera una referencia a la localidad de un
byte especifico en el segmento de datos.

Registro SS. El registro SS permite la colocacin en memoria de una pila, para


almacenamiento temporal de direcciones y datos. El DOS almacena la direccin
de inicio del segmento de pila de un programa en le registro SS. Esta direccin de
segmento, mas un valor de desplazamiento en el registro del apuntador de pila
(SP), indica la palabra actual en la pila que esta siendo direccionada.
Registros ES. Alguna operaciones con cadenas de caracteres (datos de
caracteres) utilizan el registro extra de segmento para manejar el direccionamiento
de memoria. En este contexto, el registro ES esta asociado con el registro DI
(ndice). Un programa que requiere el uso del registro ES puede inicializarlo con
una direccin de segmento apropiada.
Registros FS y GS. Son registros extra de segmento en los procesadores 80386
y posteriores.
Registros de propsito general.
Los registros de propsito general AX, BX, CX y DX son los caballos de batalla del
sistema. Son nicos en el sentido de que se puede direccionarlos como una
palabra o como una parte de un byte. El ultimo byte de la izquierda es la parte
"alta", y el ultimo byte de la derecha es la parte "baja". Por ejemplo, el registro CX
consta de una parte CH (alta) y una parte Cl (baja), y usted puede referirse a
cualquier parte por su nombre.
Registro AX. El registro AX, el acumulador principal, es utilizado para operaciones
que implican entrada/salida y la mayor parte de la aritmtica. Por ejemplo, las
instrucciones para multiplicar , dividir y traducir suponen el uso del AX. Tambin,
algunas operaciones generan cdigo mas eficiente si se refieren al AX en lugar de
a los otros registros.

Registro BX. El BX es conocido como el registro base ya que es el nico registro


de propsito general que puede ser ndice para direccionamiento indexado.
Tambin es comn emplear el BX para clculos.

Registro DX. El DX es conocido como l registro de datos. Alguna operaciones de


entrada/salida requieren uso, y las operaciones de multiplicacin y divisin con
cifras grandes suponen al DX y al AX trabajando juntos.

Pude usar los registros de propsito general para suma y resta de cifras de 8, 16 o
32 bits.

Registro de Apuntador de Instrucciones.


El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento
de direccin de la siguiente instruccin que se ejecuta. El IP esta asociado con el
registro CS en el sentido de que el IP indica la instruccin actual dentro del
segmento de cdigo que se esta ejecutando actualmente. Los procesadores
80386 y posteriores tienen un IP ampliado de 32 bits, llamado EIP.
En el ejemplo siguiente, el registro CS contiene 25A4[0]H y el IP contiene 412H.
Para encontrar la siguiente instruccin que ser ejecutada, el procesador combina
las direcciones en el CS y el IP:
Segmento de direccin en el registro CS:
25A40H
Desplazamiento de direccin en el registro IP:
+ 412H
Direccin de la siguiente instruccin:
25E52H
Registros Apuntadores.
Los registros SP (apuntador de la pila) Y BP (apuntador de base) estn asociados
con el registro SS y permiten al sistema accesar datos en el segmento de la pila.
Registro SP. El apuntador de la pila de 16 bits esta asociado con el registro SS y
proporciona un valor de desplazamiento que se refiere a la palabra actual que esta
siendo procesada en la pila. Los procesadores 80386 y posteriores tienen un
apuntador de pila de 32 bits, el registro ESP. El sistema maneja de forma
automtica estos registros.
En el ejemplo siguiente, el registro SS contiene la direccin de segmento 27B3[0]H
y el SP el desplazamiento 312H. Para encontrar la palabra actual que esta siendo
procesada en la pila, la computadora combina las direcciones en el SS y el SP:

Registro BP. El BP de 16 bits facilita la referencia de parmetros, los cuales son


ampliado de 32 bits llamado el registro EBP. datos y direcciones transmitidos va
pila. Los procesadores 80386 y posteriores tienen un BP
Registros Indice.
Los registros SI y DI estn disponibles para direccionamiento indexado y para
sumas y restas.
Registro SI. El registro ndice fuente de 16 bits es requerido por algunas
operaciones con cadenas (de caracteres). En este contexto, el SI esta asociado
con el registro DS. Los procesadores 80386 y posteriores permiten el uso de un
registro ampliado de 32 bits, el ESI.
Registro DI. El registro ndice destino tambin es requerido por algunas
operaciones con cadenas de caracteres. En este contexto, el DI esta asociado con
el registro ES. Los procesadores 80386 y posteriores permiten el uso de un
registro ampliado de 32 bits, el EDI.

Registro de Banderas.
De los 16 bits del registro de banderas, nueve son comunes a toda la familia de
procesadores 8086, y sirven para indicar el estado actual de la maquina y el
resultado del procesamiento. Muchas instrucciones que piden comparaciones y
aritmtica cambian el estado de las banderas, algunas cuyas instrucciones pueden
realizar pruebas para determinar la accin subsecuente. En resumen, los bits de
las banderas comunes son como sigue:
OF (Overflow, desbordamiento). Indica desbordamiento de un bit de orden alto
(mas a la izquierda) despus de una operacin aritmtica.
DF (direccin). Designa la direccin hacia la izquierda o hacia la derecha para
mover o comparar cadenas de caracteres.
IF (interrupcin). Indica que una interrupcin externa, como la entrada desde el
teclado, sea procesada o ignorada.

TF (trampa). Permite la operacin del procesador en modo de un paso. Los


programas depuradores, como el DEBUG, activan esta bandera de manera que
usted pueda avanzar en la ejecucin de una sola instruccin a un tiempo, para
examinar el efecto de esa instruccin sobre los registros de memoria.
SF (signo). Contiene el signo resultante de una operacin aritmtica (0 = positivo
y 1 = negativo).
ZF (cero). Indica el resultado de una operacin aritmtica o de comparacin (0 =
resultado diferente de cero y 1 = resultado igual a cero).
AF (acarreo auxiliar). Contiene un acarreo externo del bit 3 en un dato de 8 bits
para aritmtica especializada.
PF (paridad). Indica paridad par o impar de una operacin en datos de 8 bits de
bajo orden (mas a la derecha).
CF (acarreo). Contiene el acarreo de orden mas alto (mas a la izquierda) despus
de una operacin aritmtica; tambin lleva el contenido del ultimo bit en una
operacin de corrimiento o de rotacin.
Las banderas estn en el registro de banderas en las siguientes posiciones:

Las banderas mas importantes para la programacin en ensamblador son O, S, Z


y C, para operaciones de comparacin y aritmticas, y D para operaciones de
cadenas de caracteres. Los procesadores 80286 y posteriores tienen algunas
banderas usadas para propsitos internos, en especial las que afectan al modo
protegido. Los procesadores 80286 y posteriores tienen un registro extendido de
banderas conocido como Eflags.
3.1. SEGMENTO.
Un segmento es un rea especial en un programa que inicia en un limite de un
prrafo, esto es, en una localidad de regularmente divisible entre 16, o 10
hexadecimal. Aunque un segmento puede estar ubicado casi en cualquier lugar de
la memoria y, en modo real, puede ser hasta de 64K, solo necesita tanto espacio
como el programa requiera para su ejecucin.
Un segmento en modo real puede ser de hasta 64K. Se puede tener cualquier
numero de segmentos; para direccionar un segmento en particular basta cambiar
la direccin en el registro del segmento apropiado. Los tres segmentos principales
son los segmentos de cdigo, de datos y de la pila.
Segmento de cdigo.

El segmento de cdigo (CS) contiene las instrucciones de maquina que son


ejecutadas por lo comn la primera instruccin ejecutable esta en el inicio del
segmento, y el sistema operativo enlaza a esa localidad para iniciar la ejecucin
del programa. Como su nombre indica, el registro del CS direcciona el segmento
de cdigo. Si su rea de cdigo requiere mas de 64K, su programa puede
necesitar definir mas de un segmento de cdigo.
Segmento de datos.
El segmento de datos (DS) contiene datos, constantes y reas de trabajo definidos
por el programa. El registro DS direcciona el segmento de datos. Si su rea de
datos requiere mas de 64K, su programa puede necesitar definir mas de un
segmento de datos.
Segmento de pila.
En trminos sencillos, la pila contiene los datos y direcciones que usted necesita
guardar temporalmente o para uso de sus "llamadas" subrutinas. El registro de
segmento de la pila (SS) direcciona el segmento de la pila.
LIMITES DE LOS SEGMENTOS.
Los registros de segmentos contienen la direccin inicial de cada segmento. La
figura 3.1 presenta un esquema de los registros CS, DS y SS; los registros y
segmentos no necesariamente estn en el orden mostrado. Otros registros de
segmentos son el ES (segmento extra) y, en los procesadores 80386 y
posteriores, los registros FS y GS, que contienen usos especializados.
Coma ya dijimos, un segmento inicia en un limite de prrafo, que es una direccin
por lo comn divisible entre el 16 decimal o 10 hexadecimal. Suponga que un
segmento de datos inicia en la localidad de memoria 045F0H.
Ya que en este y todos los dems casos el ultimo dgito hexadecimal de la
derecha es cero, los diseadores de computadora decidieron que seria
innecesario almacenar el dgito cero en el registro del segmento. As, 045F0H se
almacena como 045F, con el cero de la extrema derecha sobrentendido. En donde
sea apropiado, el texto indica al cero de la derecha con corchetes, como 045F[0].

Figura 3.1. Segmentos y registros.


3.2. DESPLAZAMIENTO.
En un programa, todas la localidades de memoria estn referidas a una direccin
inicial de segmento. La distancia en bytes desde la direccin del segmento se
define como el desplazamiento (offset).
Un desplazamiento de dos bytes (16 bits) puede estar en el rango de 0000H hasta
FFFFH, o bien, desde cero hasta 65, 535. As el primer byte del segmento de
cdigo tiene un desplazamiento 00, el segundo byte tiene un desplazamiento 01,
etc. hasta el desplazamiento 65, 535. Para referir cualquier direccin de memoria
en un segmento, el procesador combina la direccin del segmento en un registro
de segmento con un valor de desplazamiento.
En el ejemplo siguiente, el registro DS contiene la direccin de segmento del
segmento de datos en 045F[0]H y una instruccin hace referencia a una localidad
con un desplazamiento de 0032H bytes dentro del segmento de datos.

Por lo tanto, la localidad real de memoria del byte referido por la instruccin es
04622H;

Direccin del segmento DS: 045F0H


Desplazamiento:
+0032H
Direccin real:
04622H
Note que un programa tiene uno o mas segmentos, los cuales pueden iniciar casi
en cualquier lugar de memoria, variar en tamao y estar en cualquier orden.
3.3. METODOS DE DIRECCIONAMIENTO.
El campo de operacin de una instruccin especifica la operacin que se va a
ejecutar. Esta operacin debe realizarse sobre algunos datos almacenados en
registros de computadora o en palabras de memoria. La manera en que eligen los
operandos durante la ejecucin del programa depende del modo de
direccionamiento de la instruccin. El modo de direccionamiento especifica una
regla para interpretar o modificar el campo de direccin de la instruccin antes de
que se haga la referencia real al operando. Las computadoras utilizan tcnicas de
modo de direccionamiento para acomodar una o las dos siguientes
consideraciones:
1.- Proporcionar al usuario versatilidad de programacin al ofrecer facilidades
como apuntadores a memoria, contadores para control de ciclo, indexacin de
datos y reubicacin de datos.
2.- Reducir la cantidad de bits en el campo de direccionamiento de la instruccin.
La disponibilidad de los modos de direccionamiento proporciona al programador
con experiencia en lenguaje ensamblador la flexibilidad para escribir programas
mas eficientes en relacin con la cantidad de instrucciones y el tiempo de
ejecucin.
Para comprender los diferentes modos de direccionamiento que se presentaran en
esta seccin, es imperativo entender el ciclo de operacin bsico de la
computadora. La unidad de control de una computadora esta diseada para
recorrer un ciclo de instrucciones que se divide en tres fases principales:
1. Bsqueda de la instruccin de la memoria.
2. Decodificar la instruccin.
3. Ejecutar la instruccin.
Hay un registro en la computadora llamado contador de programa o PC, que lleva
un registro de las instrucciones del programa almacenado en la memoria. Pc
contiene la direccin de la siguiente instruccin que se va a ejecutar y se
incrementa cada vez que se recupera una instruccin de la memoria. La
decodificacin realizada en el paso 2 determina la operacin que se va a ejecutar,
el modo de direccionamiento de la instruccin y la posicin de los operandos.
Despus la computadora ejecuta la instruccin y regresa al paso 1 para hacer la
bsqueda de la siguiente instruccin en secuencia.
En algunas computadoras el modo de direccionamiento de la instruccin se
especifica con un cdigo binario distinto, como se hace con el cdigo de

operacin. Otras computadoras utilizan un cdigo binario nico que representa la


operacin y el modo de la instruccin. Pueden definirse instrucciones con diversos
modos de direccionamiento y, en ocasiones, se combinan dos o mas modos de
direccionamiento en una instruccin.
Aunque la mayora de los modos de direccionamiento modifican el campo de
direccin de la instruccin, hay dos modos que no necesitan el campo de
direccin. Son los modos implcito e inmediato.
MODO IMPLICITO.
En este modo se especifican los operandos en forma implcita en la definicin de
la instruccin. Por ejemplo, la instruccin "complementar acumulador" es una
instruccin de modo implcito porque el operando en el registro de acumulador
esta implcito en la definicin de la instruccin. De hecho todas las instrucciones
de referencia a registro que utilizan un acumulador son instrucciones de modo
implcito.
Las instrucciones de direccin cero en una computadora organizada con pila son
instrucciones de modo implcito porque esta implcito que los operandos estn en
la parte superior de la pila.
MODO INMEDIATO.
En este modo se especifica el operando en la instruccin misma. En otras
palabras, una instruccin de modo inmediato tiene un campo operando, en lugar
de una campo de direccin. Un campo de operando contiene el operando real que
se va a usar junto con la operacin especificada en la instruccin. Las
instrucciones de modo inmediato son tiles para inicializar registros en un valor
constante.
Se menciono antes que el campo de direccin de una instruccin puede
especificar una palabra de memoria o un registro de procesador. Cuando el campo
de direccin especifica un registro de procesador se dice que la instruccin esta
en modo de registro.
MODO DE REGISTRO.
En este modo, los operandos estn en registros que residen dentro de la CPU. Se
selecciona el registro particular de un campo de registro en la instruccin. Un
campo k bits puede especificar cualquiera de 2 a la k registros.
MODO INDIRECTO POR REGISTRO.
En este modo la instruccin especifica un registro en la CPU cuyo contenido
proporciona la direccin del operando en la memoria. En otras palabras, el registro
seleccionado contiene la direccin del operando en lugar del operando mismo.
Antes de utilizar una instruccin de modo indirecto por registro, el programador
debe asegurarse de que la direccin de memoria del operando esta colocada en el
registro del procesador con una instruccin previa. Entonces una referencia al
registro es equivalente a especificar una direccin de memoria. La ventaja de una
instruccin de modo de registro indirecto es que el campo de direccin de la
instruccin utiliza menos bits para seleccionar un registro de los que necesitara

para especificar una direccin de memoria en forma directa.


MODO DE DIRECCIONAMIENTO DIRECTO.
En este modo la direccin efectiva es igual a la parte de direccin de la
instruccin. El operando reside en memoria y su direccin la proporciona en forma
directa el campo de direccin de la instruccin. En una instruccin de tipo brinco el
campo de direccin especifica la direccin de transferencia de control del
programa real.
MODO DE DIRECCIONAMIENTO INDIRECTO.
En este modo, el campo de direccin de la instruccin proporciona la direccin en
que se almacena la direccin efectiva en la memoria. El control recupera la
instruccin de la memoria y utiliza su parte de direccin para accesar la memoria
una vez mas con el fin de leer la direccin efectiva.
Unos cuantos modos de direccionamiento requieren que el campo de direccin de
la instruccin se sume al contenido de un registro especifico en la CPU. En estos
modos la direccin efectiva se obtiene del calculo siguiente:
Direccin efectiva = Parte de la instruccin + El contenido de registro CPU.
EL registro de CPU utilizado en el calculo puede ser el contador de programa, un
registro de ndice o un registro base. En cualquier caso tenemos un modo de
direccionamiento diferente que se utiliza para una aplicacin distinta.
MODO DE DIRECCIONAMIENTO INDEXADO.
En este modo el contenido de un registro ndice se suma a la parte de direccin de
la instruccin para obtener la direccin efectiva. El registro ndice es un registro
CPU especial que contiene un valor ndice. Un campo de direccin de la
instruccin define la direccin inicial del arreglo de datos en la memoria. Cada
operando del arreglo se almacena en la memoria en relacin con la direccin
inicial.
La distancia entre la direccin inicial y la direccin del operando es el valor del
ndice almacenado en el registro de ndice. Cualquier operando en el arreglo
puede accesarse con la misma instruccin siempre y cuando el registro ndice
contenga el valor de ndice correcto. El registro ndice puede incrementarse para
facilitar el acceso a operandos consecutivos. Ntese que si una instruccin de tipo
ndice no incluye un campo de direccin en su formato, la instruccin se convierte
al modo de operacin de indirecto por registro.
Algunas computadoras dedican un registro de CPU para que funcione
exclusivamente como un registro ndice. De manera implcita este registro
participa cuando se utiliza una instruccin de modo ndice. En las computadoras
con muchos registros de procesador, cualquiera de los registros de la CPU pueden
contener el numero de ndice. En tal caso, el registro debe estar especificado en
forma explcita en una campo de registro dentro del formato de instruccin.

MODO DE DIRECCIONAMIENTO DE REGISTRO BASE.

En este modo, el contenido de un registro base se suma a la parte de direccin de


la instruccin para obtener la direccin efectiva. Esto es similar al modo de
direccionamiento indexado, excepto en que el registro se denomina ahora registro
base, en lugar de registro ndice. La diferencia entre los dos modos esta en la
manera en que se usan mas que en la manera en que se calculan. Se considera
que un registro base contiene una direccin base y que el campo de direccin de
la instruccin proporciona un desplazamiento en relacin con esta direccin base.
El modo de direccionamiento de registro base se utiliza en las computadoras para
facilitar la localizacin de los programas en memoria.

Introduccin a los microcontroladores

1.
2.
3.
4.
5.
6.
7.

Controlador y microcontrolador.
Diferencia entre microprocesador y microcontrolador.
Aplicaciones de los microcontroladores.
El mercado de los microcontroladores.
Qu microcontrolador emplear?
Recursos comunes a todos los microcontroladores.
Recursos especiales

Los microcontroladores estn conquistando el mundo. Estn presentes en nuestro trabajo,


en nuestra casa y en nuestra vida, en general. Se pueden encontrar controlando el
funcionamiento de los ratones y teclados de los computadores, en los telfonos, en los
hornos microondas y los televisores de nuestro hogar. Pero la invasin acaba de comenzar y
el nacimiento del siglo XXI ser testigo de la conquista masiva de estos diminutos
computadores, que gobernarn la mayor parte de los aparatos que fabricaremos y usamos
los humanos.

Controlador y microcontrolador.
Recibe el nombre de controlador el dispositivo que se emplea para el gobierno de uno o
varios procesos. Por ejemplo, el controlador que regula el funcionamiento de un horno
dispone de un sensor que mide constantemente su temperatura interna y, cuando traspasa
los lmites prefijados, genera las seales adecuadas que accionan los efectores que intentan
llevar el valor de la temperatura dentro del rango estipulado.
Aunque el concepto de controlador ha permanecido invariable a travs del tiempo, su
implementacin fsica ha variado frecuentemente. Hace tres dcadas, los controladores se
construan exclusivamente con componentes de lgica discreta, posteriormente se
emplearon los microprocesadores, que se rodeaban con chips de memoria y E/S sobre una
tarjeta de circuito impreso. En la actualidad, todos los elementos del controlador se han
podido incluir en un chip, el cual recibe el nombre de microcontrolador. Realmente consiste
en un sencillo pero completo computador contenido en el corazn (chip) de un circuito
integrado.
Un microcontrolador es un circuito integrado de alta escala de integracin que incorpora la
mayor parte de los elementos que configuran un controlador.
Un microcontrolador dispone normalmente de los siguientes componentes:
Procesador o UCP (Unidad Central de Proceso).
Memoria RAM para Contener los datos.
Memoria para el programa tipo ROM/PROM/EPROM.
Lneas de E/S para comunicarse con el exterior.
Diversos mdulos para el control de perifricos (temporizadores, Puertas Serie y Paralelo,
CAD: Conversores Analgico/Digital, CDA: Conversores Digital/Analgico, etc.).
Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema.
Los productos que para su regulacin incorporan un microcontrolador disponen de las
siguientes ventajas:
Aumento de prestaciones: un mayor control sobre un determinado elemento representa una
mejora considerable en el mismo.

Aumento de la fiabilidad: al reemplazar el microcontrolador por un elevado nmero de


elementos disminuye el riesgo de averas y se precisan menos ajustes.
Reduccin del tamao en el producto acabado: La integracin del microcontrolador en un
chip disminuye el volumen, la mano de obra y los stocks.
Mayor flexibilidad: las caractersticas de control estn programadas por lo que su
modificacin slo necesita cambios en el programa de instrucciones.
El microcontrolador es en definitiva un circuito integrado que incluye todos los
componentes de un computador. Debido a su reducido tamao es posible montar el
controlador en el propio dispositivo al que gobierna. En este caso el controlador recibe el
nombre de controlador empotrado (embedded controller).

Diferencia entre microprocesador y microcontrolador.


El microprocesador es un circuito integrado que contiene la Unidad Central de Proceso
(UCP), tambin llamada procesador, de un computador. La UCP est formada por la
Unidad de Control, que interpreta las instrucciones, y el Camino de Datos, que las ejecuta.
Las patitas 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 y configurar
un computador implementado por varios circuitos integrados. 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 1.1.)

Figura 1.1. 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.
Si slo se dispusiese de un modelo de microcontrolador, ste debera tener muy potenciados
todos sus recursos para poderse adaptar a las exigencias de las diferentes aplicaciones. Esta
potenciacin supondra en muchos casos un despilfarro. En la prctica cada fabricante de

microcontroladores oferta un elevado nmero de modelos diferentes, desde los ms


sencillos hasta los ms poderosos. Es posible seleccionar la capacidad de las memorias, el
nmero de lneas de E/S, la cantidad y potencia de los elementos auxiliares, la velocidad de
funcionamiento, etc. Por todo ello, un aspecto muy destacado del diseo es la seleccin del
microcontrolador a utilizar.

Figura 1.2. El microcontrolador es un sistema cerrado. Todas las partes del computador
estn contenidas en su interior y slo salen al exterior las lneas que gobiernan los
perifricos.

Aplicaciones de los microcontroladores.


Cada vez existen ms productos que incorporan un microcontrolador con el fin de aumentar
sustancialmente sus prestaciones, reducir su tamao y coste, mejorar su fiabilidad y
disminuir el consumo.
Algunos fabricantes de microcontroladores superan el milln de unidades de un modelo
determinado producidas en una semana. Este dato puede dar una idea de la masiva
utilizacin de estos componentes.
Los microcontroladores estn siendo empleados en multitud de sistemas presentes en
nuestra vida diaria, como pueden ser juguetes, horno microondas, frigorficos, televisores,
computadoras, impresoras, mdems, el sistema de arranque de nuestro coche, etc. Y otras
aplicaciones con las que seguramente no estaremos tan familiarizados como
instrumentacin electrnica, control de sistemas en una nave espacial, etc. Una aplicacin
tpica podra emplear varios microcontroladores para controlar pequeas partes del sistema.
Estos pequeos controladores podran comunicarse entre ellos y con un procesador central,
probablemente ms potente, para compartir la informacin y coordinar sus acciones, como,
de hecho, ocurre ya habitualmente en cualquier PC.

El mercado de los microcontroladores.

Aunque en el mercado de la microinformtica la mayor atencin la acaparan los desarrollos


de los microprocesadores, lo cierto es que se venden cientos de microcontroladores por
cada uno de aqullos.
Existe una gran diversidad de microcontroladores. Quiz la clasificacin ms importante
sea entre microcontroladores de 4, 8, 16 32 bits. Aunque las prestaciones de los
microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, la realidad es que los
microcontroladores de 8 bits dominan el mercado y los de 4 bits se resisten a desaparecer.
La razn de esta tendencia es que los microcontroladores de 4 y 8 bits son apropiados para
la gran mayora de las aplicaciones, lo que hace absurdo emplear micros ms potentes y
consecuentemente ms caros. Uno de los sectores que ms tira del mercado del
microcontrolador es el mercado automovilstico. De hecho, algunas de las familias de
microcontroladores actuales se desarrollaron pensando en este sector, siendo modificadas
posteriormente para adaptarse a sistemas ms genricos. El mercado del automvil es
adems uno de los ms exigentes: los componentes electrnicos deben operar bajo
condiciones extremas de vibraciones, choques, ruido, etc. y seguir siendo fiables. El fallo
de cualquier componente en un automvil puede ser el origen de un accidente.
En cuanto a las tcnicas de fabricacin, cabe decir que prcticamente la totalidad de los
microcontroladores actuales se fabrican con tecnologa CMOS 4 (Complementary Metal
Oxide Semiconductor). Esta tecnologa supera a las tcnicas anteriores por su bajo
consumo y alta inmunidad al ruido.
La distribucin de las ventas segn su aplicacin es la siguiente:
Una tercera parte se absorbe en las aplicaciones relacionadas con los computadores y sus
perifricos.
La cuarta parte se utiliza en las aplicaciones de consumo (electrodomsticos, juegos, TV,
vdeo, etc.)
El 16% de las ventas mundiales se destin al rea de las comunicaciones.
Otro 16% fue empleado en aplicaciones industriales.
El resto de los microcontroladores vendidos en el mundo, aproximadamente un 10% fueron
adquiridos por las industrias de automocin.
Tambin los modernos microcontroladores de 32 bits van afianzando sus posiciones en el
mercado, siendo las reas de ms inters el procesamiento de imgenes, las
comunicaciones, las aplicaciones militares, los procesos industriales y el control de los
dispositivos de almacenamiento masivo de datos.

Qu microcontrolador emplear?
A la hora de escoger el microcontrolador a emplear en un diseo concreto hay que tener en
cuenta multitud de factores, como la documentacin y herramientas de desarrollo
disponibles y su precio, la cantidad de fabricantes que lo producen y por supuesto las
caractersticas del microcontrolador (tipo de memoria de programa, nmero de
temporizadores, interrupciones, etc.):
Costes. Como es lgico, los fabricantes de microcontroladores compiten duramente para
vender sus productos. Y no les va demasiado mal ya que sin hacer demasiado ruido venden
10 veces ms microcontroladores que microprocesadores.
Para que nos hagamos una idea, para el fabricante que usa el microcontrolador en su
producto una diferencia de precio en el microcontrolador de algunas pesetas es importante

(el consumidor deber pagar adems el coste del empaquetado, el de los otros
componentes, el diseo del hardware y el desarrollo del software). Si el fabricante desea
reducir costes debe tener en cuenta las herramientas de apoyo con que va a contar:
emuladores, simuladores, ensambladores, compiladores, etc. Es habitual que muchos de
ellos siempre se decanten por microcontroladores pertenecientes a una nica familia.

Aplicacin.
Antes de seleccionar un microcontrolador es imprescindible analizar los requisitos de la
aplicacin:
Procesamiento de datos: puede ser necesario que el microcontrolador realice clculos
crticos en un tiempo limitado. En ese caso debemos asegurarnos de seleccionar un
dispositivo suficientemente rpido para ello. Por otro lado, habr que tener en cuenta la
precisin de los datos a manejar: si no es suficiente con un microcontrolador de 8 bits,
puede ser necesario acudir a microcontroladores de 16 32 bits, o incluso a hardware de
coma flotante. Una alternativa ms barata y quiz suficiente es usar libreras para manejar
los datos de alta precisin. Entrada Salida: para determinar las necesidades de Entrada/Salida del sistema es
conveniente dibujar un diagrama de bloques del mismo, de tal forma que sea sencillo
identificar la cantidad y tipo de seales a controlar. Una vez realizado este anlisis puede
ser necesario aadir perifricos hardware externos o cambiar a otro microcontrolador ms
adecuado a ese sistema.
Consumo: algunos productos que incorporan microcontroladores estn alimentados con
bateras y su funcionamiento puede ser tan vital como activar una alarma antirrobo. Lo ms
conveniente en un caso como ste puede ser que el microcontrolador est en estado de bajo
consumo pero que despierte ante la activacin de una seal (una interrupcin) y ejecute el
programa adecuado para procesarla.
Memoria: para detectar las necesidades de memoria de nuestra aplicacin debemos
separarla en memoria voltil (RAM), memoria no voltil (ROM, EPROM, etc.) y memoria
no voltil modificable (EEPROM). Este ltimo tipo de memoria puede ser til para incluir
informacin especfica de la aplicacin como un nmero de serie o parmetros de
calibracin.
El tipo de memoria a emplear vendr determinado por el volumen de ventas previsto del
producto: de menor a mayor volumen ser conveniente emplear EPROM, OTP y ROM. En
cuanto a la cantidad de memoria necesaria puede ser imprescindible realizar una versin
preliminar, aunque sea en pseudo-cdigo, de la aplicacin y a partir de ella hacer una
estimacin de cunta memoria voltil y no voltil es necesaria y si es conveniente disponer
de memoria no voltil modificable.
Ancho de palabra: el criterio de diseo debe ser seleccionar el microcontrolador de menor
ancho de palabra que satisfaga los requerimientos de la aplicacin. Usar un
microcontrolador de 4 bits supondr una reduccin en los costes importante, mientras que
uno de 8 bits puede ser el ms adecuado si el ancho de los datos es de un byte. Los
microcontroladores de 16 y 32 bits, debido a su elevado coste, deben reservarse para
aplicaciones que requieran sus altas prestaciones (Entrada/Salida potente o espacio de
direccionamiento muy elevado).

Diseo de la placa: la seleccin de un microcontrolador concreto condicionar el diseo


de la placa de circuitos. Debe tenerse en cuenta que quiz usar un microcontrolador barato
encarezca el resto de componentes del diseo.
Los microcontroladores ms populares se encuentran, sin duda, entre las mejores
elecciones:
8048 (Intel). Es el padre de los microcontroladores actuales, el primero de todos. Su precio,
disponibilidad y herramientas de desarrollo hacen que todava sea muy popular.
8051 (Intel y otros). Es sin duda el microcontrolador ms popular. Fcil de programar, pero
potente. Est bien documentado y posee cientos de variantes e incontables herramientas de
desarrollo.
80186, 80188 y 80386 EX (Intel). Versiones en microcontrolador de los populares
microprocesadores 8086 y 8088. Su principal ventaja es que permiten aprovechar las
herramientas de desarrollo para PC.
68HC11 (Motorola y Toshiba). Es un microcontrolador de 8 bits potente y popular con gran
cantidad de variantes.
683xx (Motorola). Surgido a partir de la popular familia 68k, a la que se incorporan
algunos perifricos. Son microcontroladores de altsimas prestaciones.
PIC (MicroChip). Familia de microcontroladores que gana popularidad da a da. Fueron
los primeros microcontroladores RISC.
Es preciso resaltar en este punto que existen innumerables familias de microcontroladores,
cada una de las cuales posee un gran nmero de variantes.

Recursos comunes a todos los microcontroladores.


Al estar todos los microcontroladores integrados en un chip, su estructura fundamental y
sus caractersticas bsicas son muy parecidas. Todos deben disponer de los bloques
esenciales Procesador, memoria de datos y de instrucciones, lneas de E/S, oscilador de
reloj y mdulos controladores de perifricos. Sin embargo, cada fabricante intenta enfatizar
los recursos ms idneos para las aplicaciones a las que se destinan preferentemente.
En este apartado se hace un recorrido de todos los recursos que se hallan en todos los
microcontroladores describiendo las diversas alternativas y opciones que pueden
encontrarse segn el modelo seleccionado.

Arquitectura bsica
Aunque inicialmente todos los microcontroladores adoptaron la arquitectura clsica de von
Neumann, en el momento presente se impone la arquitectura Harvard. La arquitectura de
von Neumann se caracteriza por disponer de una sola memoria principal donde se
almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a travs de
un sistema de buses nico (direcciones, datos y control).
La arquitectura Harvard dispone de dos memorias independientes una, que contiene slo
instrucciones y otra, slo datos. Ambas disponen de sus respectivos sistemas de buses de
acceso y es posible realizar operaciones de acceso (lectura o escritura) simultneamente en
ambas memorias. Figura 1.3.

Figura 1.3. La arquitectura Harvard dispone de dos memorias independientes para datos y
para instrucciones, permitiendo accesos simultneos.
Los microcontroladores PIC responden a la arquitectura Harvard.

El procesador o UCP
Es el elemento ms importante del microcontrolador y determina sus principales
caractersticas, tanto a nivel hardware como software.
Se encarga de direccionar la memoria de instrucciones, recibir el cdigo OP de la
instruccin en curso, su decodificacin y la ejecucin de la operacin que implica la
instruccin, as como la bsqueda de los operandos y el almacenamiento del resultado.
Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores
actuales.
CISC: Un gran nmero de procesadores usados en los microcontroladores estn basados en
la filosofa CISC (Computadores de Juego de Instrucciones Complejo). Disponen de ms
de 80 instrucciones mquina en su repertorio, algunas de las cuales son muy sofisticadas y
potentes, requiriendo muchos ciclos para su ejecucin.
Una ventaja de los procesadores CISC es que ofrecen al programador instrucciones
complejas que actan como macros.
RISC: Tanto la industria de los computadores comerciales como la de los
microcontroladores estn decantndose hacia la filosofa RISC (Computadores de Juego de
Instrucciones Reducido). En estos procesadores el repertorio de instrucciones mquina es
muy reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo.
La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del
procesador.
SISC: En los microcontroladores destinados a aplicaciones muy concretas, el juego de
instrucciones, adems de ser reducido, es "especfico", o sea, las instrucciones se adaptan a
las necesidades de la aplicacin prevista. Esta filosofa se ha bautizado con el nombre de
SISC (Computadores de Juego de Instrucciones Especfico).
Memoria
En los microcontroladores la memoria de instrucciones y datos est integrada en el propio
chip. Una parte debe ser no voltil, tipo ROM, y se destina a contener el programa de

instrucciones que gobierna la aplicacin. Otra parte de memoria ser tipo RAM, voltil, y
se destina a guardar las variables y los datos.
Hay dos peculiaridades que diferencian a los microcontroladores de los computadores
personales:
No existen sistemas de almacenamiento masivo como disco duro o disquetes.
Como el microcontrolador slo se destina a una tarea en la memoria ROM, slo hay que
almacenar un nico programa de trabajo.
La RAM en estos dispositivos es de poca capacidad pues slo debe contener las variables y
los cambios de informacin que se produzcan en el transcurso del programa. Por otra parte,
como slo existe un programa activo, no se requiere guardar una copia del mismo en la
RAM pues se ejecuta directamente desde la ROM.
Los usuarios de computadores personales estn habituados a manejar Megabytes de
memoria, pero, los diseadores con microcontroladores trabajan con capacidades de ROM
comprendidas entre 512 bytes y 8 k bytes y de RAM comprendidas entre 20 y 512 bytes.
Segn el tipo de memoria ROM que dispongan los microcontroladores, la aplicacin y
utilizacin de los mismos es diferente. Se describen las cinco versiones de memoria no
voltil que se pueden encontrar en los microcontroladores del mercado.
1. ROM con mscara
Es una memoria no voltil de slo lectura cuyo contenido se graba durante la fabricacin
del chip. El elevado coste del diseo de la mscara slo hace aconsejable el empleo de los
microcontroladores con este tipo de memoria cuando se precisan cantidades superiores a
varios miles de unidades.
2. OTP
El microcontrolador contiene una memoria no voltil de slo lectura "programable una sola
vez" por el usuario. OTP (One Time Programmable). Es el usuario quien puede escribir el
programa en el chip mediante un sencillo grabador controlado por un programa desde un
PC.
La versin OTP es recomendable cuando es muy corto el ciclo de diseo del producto, o
bien, en la construccin de prototipos y series muy pequeas.
Tanto en este tipo de memoria como en la EPROM, se suele usar la encriptacin mediante
fusibles para proteger el cdigo contenido.
3 EPROM
Los microcontroladores que disponen de memoria EPROM (Erasable Programmable Read
OnIy Memory) pueden borrarse y grabarse muchas veces. La grabacin se realiza, como en
el caso de los OTP, con un grabador gobernado desde un PC. Si, posteriormente, se desea
borrar el contenido, disponen de una ventana de cristal en su superficie por la que se somete
a la EPROM a rayos ultravioleta durante varios minutos. Las cpsulas son de material
cermico y son ms caros que los microcontroladores con memoria OTP que estn hechos
con material plstico.
4 EEPROM
Se trata de memorias de slo lectura, programables y borrables elctricamente EEPROM
(Electrical Erasable Programmable Read OnIy Memory). Tanto la programacin como el
borrado, se realizan elctricamente desde el propio grabador y bajo el control programado

de un PC. Es muy cmoda y rpida la operacin de grabado y la de borrado. No disponen


de ventana de cristal en la superficie.
Los microcontroladores dotados de memoria EEPROM una vez instalados en el circuito,
pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito. Para
ello se usan "grabadores en circuito" que confieren una gran flexibilidad y rapidez a la hora
de realizar modificaciones en el programa de trabajo.
El nmero de veces que puede grabarse y borrarse una memoria EEPROM es finito, por lo
que no es recomendable una reprogramacin continua. Son muy idneos para la enseanza
y la Ingeniera de diseo.
Se va extendiendo en los fabricantes la tendencia de incluir una pequea zona de memoria
EEPROM en los circuitos programables para guardar y modificar cmodamente una serie
de parmetros que adecuan el dispositivo a las condiciones del entorno.
Este tipo de memoria es relativamente lenta.
5 FLASH
Se trata de una memoria no voltil, de bajo consumo, que se puede escribir y borrar.
Funciona como una ROM y una RAM pero consume menos y es ms pequea.
A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es ms rpida y
de mayor densidad que la EEPROM.
La alternativa FLASH est recomendada frente a la EEPROM cuando se precisa gran
cantidad de memoria de programa no voltil. Es ms veloz y tolera ms ciclos de
escritura/borrado.
Las memorias EEPROM y FLASH son muy tiles al permitir que los microcontroladores
que las incorporan puedan ser reprogramados "en circuito", es decir, sin tener que sacar el
circuito integrado de la tarjeta. As, un dispositivo con este tipo de memoria incorporado al
control del motor de un automvil permite que pueda modificarse el programa durante la
rutina de mantenimiento peridico, compensando los desgastes y otros factores tales como
la compresin, la instalacin de nuevas piezas, etc. La reprogramacin del
microcontrolador puede convertirse en una labor rutinaria dentro de la puesta a punto.

Puertas de Entrada y Salida


La principal utilidad de las patitas que posee la cpsula que contiene un microcontrolador
es soportar las lneas de E/S que comunican al computador interno con los perifricos
exteriores.
Segn los controladores de perifricos que posea cada modelo de microcontrolador, las
lneas de E/S se destinan a proporcionar el soporte a las seales de entrada, salida y control.
Reloj principal
Todos los microcontroladores disponen de un circuito oscilador que genera una onda
cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronizacin
de todas las operaciones del sistema.
Generalmente, el circuito de reloj est incorporado en el microcontrolador y slo se
necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de
trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos
pasivos o bien un resonador cermico o una red R-C.

Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las


instrucciones pero lleva aparejado un incremento del consumo de energa.
RECURSOS ESPECIALES
Cada fabricante oferta numerosas versiones de una arquitectura bsica de microcontrolador.
En algunas ampla las capacidades de las memorias, en otras incorpora nuevos recursos, en
otras reduce las prestaciones al mnimo para aplicaciones muy simples, etc. La labor del
diseador es encontrar el modelo mnimo que satisfaga todos los requerimientos de su
aplicacin. De esta forma, minimizar el coste, el hardware y el software.
Los principales recursos especficos que incorporan los microcontroladores son:
Temporizadores o "Timers".
Perro guardin o "Watchdog".
Proteccin ante fallo de alimentacin o "Brownout".
Estado de reposo o de bajo consumo.
Conversor A/D.
Conversor D/A.
Comparador analgico.
Modulador de anchura de impulsos o PWM.
Puertas de E/S digitales.
Puertas de comunicacin.
Temporizadores o "Timers"
Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta de
acontecimientos que suceden en el exterior (contadores).
Para la medida de tiempos se carga un registro con el valor adecuado y a continuacin
dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o algn
mltiplo hasta que se desborde y llegue a 0, momento en el que se produce un aviso.
Cuando se desean contar acontecimientos que se materializan por cambios de nivel o
flancos en alguna de las patitas del microcontrolador, el mencionado registro se va
incrementando o decrementando al ritmo de dichos impulsos.
Perro guardin o "Watchdog"
Cuando el computador personal se bloquea por un fallo del software u otra causa, se pulsa
el botn del reset y se reinicializa el sistema. Pero un microcontrolador funciona sin el
control de un supervisor y de forma continuada las 24 horas del da. El Perro guardin
consiste en un temporizador que, cuando se desborda y pasa por 0, provoca un reset
automticamente en el sistema.
Se debe disear el programa de trabajo que controla la tarea de forma que refresque o
inicialice al Perro guardin antes de que provoque el reset. Si falla el programa o se
bloquea, no se refrescar al Perro guardin y, al completar su temporizacin, "ladrar y
ladrar" hasta provocar el reset.
Proteccin ante fallo de alimentacin o "Brownout"
Se trata de un circuito que resetea al microcontrolador cuando el voltaje de alimentacin
(VDD) es inferior a un voltaje mnimo ("brownout"). Mientras el voltaje de alimentacin

sea inferior al de brownout el dispositivo se mantiene reseteado, comenzando a funcionar


normalmente cuando sobrepasa dicho valor.

Estado de reposo de bajo consumo


Son abundantes las situaciones reales de trabajo en que el microcontrolador debe esperar,
sin hacer nada, a que se produzca algn acontecimiento externo que le ponga de nuevo en
funcionamiento. Para ahorrar energa, (factor clave en los aparatos porttiles), los
microcontroladores disponen de una instruccin especial (SLEEP en los PIC), que les pasa
al estado de reposo o de bajo consumo, en el cual los requerimientos de potencia son
mnimos. En dicho estado se detiene el reloj principal y se "congelan" sus circuitos
asociados, quedando sumido en un profundo "sueo" el microcontrolador. Al activarse una
interrupcin ocasionada por el acontecimiento esperado, el microcontrolador se despierta y
reanuda su trabajo.
Conversor A/D (CAD)
Los microcontroladores que incorporan un Conversor A/D (Analgico/Digital) pueden
procesar seales analgicas, tan abundantes en las aplicaciones. Suelen disponer de un
multiplexor que permite aplicar a la entrada del CAD diversas seales analgicas desde las
patitas del circuito integrado.
Conversor D/A (CDA)
Transforma los datos digitales obtenidos del procesamiento del computador en su
correspondiente seal analgica que saca al exterior por una de las patitas de la cpsula.
Existen muchos efectores que trabajan con seales analgicas.

Comparador analgico
Algunos modelos de microcontroladores disponen internamente de un Amplificador
Operacional que acta como comparador entre una seal fija de referencia y otra variable
que se aplica por una de las patitas de la cpsula. La salida del comparador proporciona un
nivel lgico 1 0 segn una seal sea mayor o menor que la otra.
Tambin hay modelos de microcontroladores con un mdulo de tensin de referencia que
proporciona diversas tensiones de referencia que se pueden aplicar en los comparadores.

Modulador de anchura de impulsos o PWM


Son circuitos que proporcionan en su salida impulsos de anchura variable, que se ofrecen al
exterior a travs de las patitas del encapsulado.
Puertos de E/S digitales
Todos los microcontroladores destinan algunas de sus patitas a soportar lneas de E/S
digitales. Por lo general, estas lneas se agrupan de ocho en ocho formando Puertos.
Las lneas digitales de los Puertos pueden configurarse como Entrada o como Salida
cargando un 1 un 0 en el bit correspondiente de un registro destinado a su configuracin.

Puertos de comunicacin
Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros
dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de redes

y poder adaptarlos con otros elementos bajo otras normas y protocolos. Algunos modelos
disponen de recursos que permiten directamente esta tarea, entre los que destacan:
UART, adaptador de comunicacin serie asncrona.
USART, adaptador de comunicacin serie sncrona y asncrona
Puerta paralela esclava para poder conectarse con los buses de otros microprocesadores.
USB (Universal Serial Bus), que es un moderno bus serie para los PC.
Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.
CAN (Controller Area Network), para permitir la adaptacin con redes de conexionado
multiplexado desarrollado conjuntamente por Bosch e Intel para el cableado de dispositivos
en automviles. En EE.UU. se usa el J185O.

Herramientas para el desarrollo de aplicaciones.


Uno de los factores que ms importancia tiene a la hora de seleccionar un microcontrolador
entre todos los dems es el soporte tanto software como hardware de que dispone. Un buen
conjunto de herramientas de desarrollo puede ser decisivo en la eleccin, ya que pueden
suponer una ayuda inestimable en el desarrollo del proyecto.
Las principales herramientas de ayuda al desarrollo de sistemas basados en
microcontroladores son:
Desarrollo del software:
Ensamblador. La programacin en lenguaje ensamblador puede resultar un tanto ardua para
el principiante, pero permite desarrollar programas muy eficientes, ya que otorga al
programador el dominio absoluto del sistema. Los fabricantes suelen proporcionar el
programa ensamblador de forma gratuita y en cualquier caso siempre se puede encontrar
una versin gratuita para los microcontroladores ms populares.
Compilador. La programacin en un lenguaje de alto nivel (como el C el Basic) permite
disminuir el tiempo de desarrollo de un producto. No obstante, si no se programa con
cuidado, el cdigo resultante puede ser mucho ms ineficiente que el programado en
ensamblador. Las versiones ms potentes suelen ser muy caras, aunque para los
microcontroladores ms populares pueden encontrarse versiones demo limitadas e incluso
compiladores gratuitos.
Depuracin: debido a que los microcontroladores van a controlar dispositivos fsicos, los
desarrolladores necesitan herramientas que les permitan comprobar el buen funcionamiento
del microcontrolador cuando es conectado al resto de circuitos.
Simulador. Son capaces de ejecutar en un PC programas realizados para el
microcontrolador. Los simuladores permiten tener un control absoluto sobre la ejecucin de
un programa, siendo ideales para la depuracin de los mismos. Su gran inconveniente es
que es difcil simular la entrada y salida de datos del microcontrolador. Tampoco cuentan
con los posibles ruidos en las entradas, pero, al menos, permiten el paso fsico de la
implementacin de un modo ms seguro y menos costoso, puesto que ahorraremos en
grabaciones de chips para la prueba in-situ.
Placas de evaluacin. Se trata de pequeos sistemas con un microcontrolador ya montado y
que suelen conectarse a un PC desde el que se cargan los programas que se ejecutan en el
microcontrolador. Las placas suelen incluir visualizadores LCD, teclados, LEDs, fcil
acceso a los pines de E/S, etc. El sistema operativo de la placa recibe el nombre de
programa monitor. El programa monitor de algunas placas de evaluacin, aparte de permitir
cargar programas y datos en la memoria del microcontrolador, puede permitir en cualquier

momento realizar ejecucin paso a paso, monitorizar el estado del microcontrolador o


modificar los valores almacenados los registros o en la memoria.
Emuladores en circuito. Se trata de un instrumento que se coloca entre el PC anfitrin y el
zcalo de la tarjeta de circuito impreso donde se alojar el microcontrolador definitivo. El
programa es ejecutado desde el PC, pero para la tarjeta de aplicacin es como si lo hiciese
el mismo microcontrolador que luego ir en el zcalo. Presenta en pantalla toda la
informacin tal y como luego suceder cuando se coloque la cpsula.

Contenido tpico de un microcontrolador.


A la vista de los anlisis de los sistemas realizados antes de la aparicin de los
microcontroladores, los fabricantes de circuitos integrados han perfilado la definicin de lo
que se debera integrar, para llegar al esquema de la figura 1.
Figura 1

Controlador de
interrupciones

ROM
UVPROM
OTPROM

Temporizador 1
RAM

EEPROM

Temporizador 0

Interfaz
especfica

CPU

Osc.

Controlador
de bus

Puertos de
entrada/salida

Puerto
serie

.....

Evidentemente, encontramos en l nuestra unidad central pero, salvo casos


particulares, frecuentemente se ha simplificado con respecto a los microprocesadores
clsicos. En contrapartida se le han aadido instrucciones de manejo de bits, muy tiles
para las entradas/salidas. En ciertos circuitos, esta unidad central est dotada de un gran
nmero de registros internos, que sirven de memoria RAM, por lo que puede parecer que
sta ltima est ausente de algunos esquemas.
A continuacin podemos ver la memoria ROM, aunque sta no siempre aparece. En
determinados encapsulados y hasta hace unos aos, esta memoria no poda programarse
ms que mediante mscara durante la fabricacin del circuito. Esto impona al potencial
usuario del microcontrolador comprar un nmero significativo de piezas idnticas, lo cual
era aceptable para una serie grande, pero no para fabricaciones limitadas. Cierto nmero de
microcontroladores estaban, y todava estn, disponibles sin ROM (versiones ROMless en
los catlogos).
Posteriormente, los fabricantes han introducido en el chip una memoria programable
elctricamente y borrable mediante rayos ultravioleta (UVPROM) o, ms recientemente,
borrable elctricamente (EEPROM). Como los encapsulados que contenan la memoria
UVPROM eran relativamente caros (por la ventana de cuarzo), han aparecido otro tipo
denominado OTPROM (One Time PROM), la memoria UVPROM existe siempre y se
programa como cualquier circuito, pero debido a la ausencia de ventana, no se puede
borrar. Es una solucin interesante para la produccin de series pequeas y estn
disponibles en plsticos baratos.

Un ltimo producto para almacenar de forma no voltil son las memorias FLASH,
de bajo consumo, que se puede escribir y borrar en circuito al igual que las EEPROM, pero
suelen disponer de mayor capacidad que estas ltimas. El borrado solo es posible con
bloques completos y no se puede realizar sobre posiciones concretas. Son muy
recomendables en aplicaciones en las que sea necesario modificar el programa a lo largo de
la vida del producto, como consecuencia del desgaste o cambios de piezas, como sucede
con los vehculos.
En lo referente a la memoria RAM, suele utilizarse una del tipo SRAM (RAM
esttica) de pequeo tamao, por qu generalmente la unidad central posee suficientes
registros para realizar operaciones intermedias. En algunos casos, esta memoria se
completa con una EEPROM de datos, que memoriza de forma semipermanente datos del
usuario que se manejan como constante en la ejecucin del programa y que de vez en
cuando (pasados meses o aos) deben ser modificados.
Algo ms delicado es hacer un esquema tipo para los circuitos de interfaz, ya que es
un punto donde se distinguen los diferentes microcontroladores, en funcin de las
aplicaciones que pretenden. No obstante se pueden encontrar los siguientes elementos
bsicos:
Lneas de entrada/salida paralelo, en cantidad variable, segn la finalidad y el
tamao del encapsulado (se plantea un problema de nmero mximo de pines
debido al crecimiento del nmero de estas lneas).
Al menos una interfaz de entrada/salida serie asncrona, ms o menos
evolucionada segn los circuitos.
Uno o varios temporizadores internos cuyas posibilidades pueden ser muy
variables pero que, generalmente, funcionan como contadores ascendentes y
descendentes, generadores de impulsos programables, etc.
Uno o varios convertidores analgicos/digitales, precedidos o no de
multiplexores para ofrecer varias vas.
A veces, pero es raro, un covertidor digital/analgico.
Por ltimo, aunque no sea una verdadera interfaz de entrada/salida en el sentido en
que nosotros entendemos, ciertos microcontroladores disponen de un acceso a su bus
interno. Esto permite conectar con otros circuitos destinados a cumplir funciones que faltan
en el chip, lo que a veces resulta til. Precisemos, aunque es evidente, que todos los
microcontroladores sin memoria ROM interna disponen necesariamente de esta interfaz,
puesto que es necesario permitirle acceder a una memoria ROM externa.
Las ventajas y defectos de los Microcontroladores.

En primer lugar, un microcontrolador integra en un nico encapsulado lo que antes


necesitaba una o varias decenas de elementos distintos. Como resultado de estos, se ha
obtenido una evidente disminucin en el volumen del hardware y del circuito impreso. Esta
integracin tambin ha tenido como consecuencia inmediata la simplificacin del diseo
del circuito impreso, ya que no es necesario llevar los buses de direcciones y de datos de un
componente a otro.
En segundo lugar, de todo lo anterior se deriva un aumento de la fiabilidad del
sistema ya que, al disminuir el nmero de componentes, el nmero potencial de fuentes de
error tambin disminuye. Adems, la cantidad de conexiones entre componentes/zcalos o
componentes/circuito impreso tambin disminuye, lo que aumenta la fiabilidad del sistema.
As mismo, la disminucin de componentes reduce el consumo global de todo el sistema, lo
que segn en que aplicaciones y tipos de alimentacin se utilice el microcontrolador puede
resultar ventajoso.
Los mayores inconvenientes de los microcontroladores son bastante pocos y,
principalmente, se encuentran en el nivel de la programacin, pero en dos planos diferentes.
El primer inconveniente es el sistema de almacenamiento de los programas que lo hacen
funcionar, como ya hemos visto, las opciones de almacenamiento pasan por utilizar una
memoria ROM en alguna de su variantes (ROM por mscara, UVPROM, OTPROM,
EEPROM, etc...), esto implica que la modificacin de los programas realizados va a
suponer un esfuerzo de borrado de la memoria completa (o de bloques en le mejor de los
casos) o la sustitucin del chip de memoria por uno nuevo, lo cual conlleva gastos
adicionales en material o en esfuerzo.
El otro inconveniente es el de que en los microcontroladores, como cualquier
sistema programado, hay que disponer de una herramienta o medio de desarrollo, es
necesario escribir los programas, probarlos y comprobarlos sobre el hardware que rodea al
microcontrolador, antes de instalarlos y hacer funcionar el sistema. Este sistema de
desarrollo representa, por tanto, una inversin que hay que tener en cuenta en el coste del
producto final. Si se prev la realizacin de aparatos diversos que utilicen
microcontroladores de la misma familia, es bastante fcil de amortizar; en caso contrario
puede ser ms difcil.
Presentacin de un microcontrolador en particular :
El PIC 16X84.
Descripcin general.
Microcontrolador diseado por la empresa Microchip (http://www.microchip.com),
que se fabrica en varias versiones de las cuales las ms simples, pero interesantes, son la
16C84 y la 16F84. Son idnticas en cuanto a su arquitectura interna a excepcin de la
memoria ROM y la memoria RAM. En el primer caso contiene una memoria EEPROM de
1Kbytes de 14 bits cada una, en el segundo diseo la memoria tiene la misma capacidad
pero es de tipo Flash.

Tal y como se ha comentado, la memoria EEPROM y la Flash son elctricamente


grabables y borrables, lo que permite escribir y borrar el programa bajo prueba
manteniendo el microcontrolador en el mismo zcalo y usando el mismo dispositivo para
grabar y borrar. Esta caracterstica supone una gran ventaja frente a la mayora de los
microcontroladores, que tienen como memoria de programa reescribible una tipo EPROM.
Se graba elctricamente, pero para borrarlas hay que someterlas durante cierto tiempo a
rayos ultravioleta, lo que implica sacar del zcalo el circuito integrado y colocarlo en un
borrador de EPROM.
Otra ventaja del PIC16X84 en cuanto a simplificar el proceso de escritura, borrado
y reescritura de programas, tan necesario en la fase de diseo, es su sistema de grabacin de
datos, que se realiza en serie. Para escribir un programa en la memoria se manda la
informacin en serie usando slo dos patillas, una para la seal de reloj y otra para los datos
serie. A continuacin exponemos las caractersticas ms significativas:
MEMORIA DE PROGRAMA: 1 K x 14
MEMORIA DE DATOS: 36 bytes (PIC16C84) y 68 bytes (PIC16F84)
MEMORIA DE DATOS EEPROM: 64 bytes
PILA (Stack): De 8 niveles
INTERRUPCIONES: 4 tipos diferentes
JUEGO DE INSTRUCCIONES: 35
ENCAPSULADO: Plstico DIP de 18 patillas
FRECUENCIA DE TRABAJO: 10 MHz mxima
TEMPORIZADORES: Slo uno el TMR0. Tambien tiene Perro Guardin (WDT)
LINEAS DE E/S DIGITALES: 13 (5 Puerta A y 8 Puerta B)
VOLTAJE DE ALIMENTACION (VDD): De 2 a 6 V DC
VOLTAJE DE GRABACION (VPP): De 12 a 14 V DC
Existen otras variantes que se comercializan y responden a la nomenclatura genrica
PIC16X8X, atendiendo a diversas caractersticas como pueden ser la frecuencia mxima de
funcionamiento, el tipo de oscilador externo o el margen del voltaje de alimentacin.
Aspecto externo.
EL PIC16C(F)84 est fabricado con tecnologa CMOS de altas prestaciones y
encapsulado en plstico con 18 patillas, con la nomenclatura que se muestra en la figura 3.
La misin de cada patilla comentada brevemente es:
VDD: Tensin positiva de alimentacin.
VSS: Tensin conectada a tierra o negativa de alimentacin.
OSC1/CLKIN: Entrada del circuito oscilador externo que proporciona la frecuencia de
trabajo del microcontrolador.
OSC2/CLKOUT: Patilla auxiliar del circuito oscilador.
MCLR#: Patilla activa con nivel lgico bajo, lo que se representa con el smbolo #. Su
activacin origina la reinicializacin o Reset del PIC. Tambin se usa durante la grabacin
de la memoria para introducir por ella la tensin VPP.

18

RA1

RA3

17

RA0

RA4/TOCKI

16

OSC1/CLKIN

MCLR#

15

OSC2/CLKOUT

Vss

14

Vdd

RB0/INT

13

RB7

RB1

12

RB6

RB2

11

RB5

RB3

10

RB4

PIC16X8X

RA2

Figura 3
RA0-RA4: Son las 5 lneas de E/S digitales correspondientes a la Puerta A. La lnea RA4
multiplexa otra funcin expresada por TOCKI. En ese caso sirve para recibir una frecuencia
externa para alimentar al temporizador TMR0.
RB0-RB7: Son las 8 lneas de E/S digitales de la Puerta B. La lnea RB0 multiplexa la
funcin de servir como entrada a una peticin externa de una interrupcin.
La frecuencia de funcionamiento. El reloj.
La frecuencia de trabajo del microcontrolador es un parmetro fundamental a la
hora de establecer la velocidad de ejecucin de instrucciones y el consumo de energa.
Cuando un PIC16X84 funciona a 10 MHz, que es su mxima frecuencia, le corresponde un
ciclo de instruccin de 400 ns, puesto que cada instruccin tarda en ejecutarse 4 perodos de
reloj, o sea, 4 x 100 ns = 400 ns. Todas las instrucciones del PIC se realizan en un ciclo de
instruccin, menos las de salto que tardan el doble.
Los impulsos de reloj entrar por la patilla OSC1/CLKIN y se dividen por 4
internamente, dando lugar a las seales Q1, Q2, Q3 y Q4. Durante un ciclo de instruccin,
que comprende las cuatro seales mencionadas, se desarrollan las siguientes operaciones:
Q1: Durante este impulso se incrementa el Contador de Programa.
Q4: Durante este impulso se busca el cdigo de la instruccin en la memoria del
programa y se carga en el Registro de Instrucciones.
Q2-Q3: Durante la activacin de estas dos seales se produce la decodificacin y la
ejecucin de la instruccin.
Para conseguir ejecutar cada instruccin en un ciclo de instruccin (excepto las de
salto), se aplica la tcnica de segmentacin o pipe-line, que consiste en realizar en paralelo
las dos fases que comprende cada instruccin.

Figura 4.
La estructura segmentada del procesador permite realizar al mismo tiempo la fase de
ejecucin de una instruccin y la de bsqueda de la siguiente. Cuando la instruccin
ejecutada corresponde a un salto no se conoce cul ser la siguiente hasta que se realice,
por eso en esta situacin se sustituye la fase de bsqueda por un ciclo vacio, oroginando
que las instrucciones de salto tarde en realizarse dos ciclos de instruccin.
Tipos de osciladores
Los PIC admiten cuatro tipos de osciladores externos para aplicarles la frecuencia
de funcionamiento, se colocan entre las patillas OSC1 y OSC2. El tipo empleado debe
especificarse en dos bits de la Palabra de Configuracin, como se comentar ms
adelante. Los tipos que se pueden emplear son:
Oscilador RC: Es un oscilador de bajo coste formado por una simple resistencia
y un condensador. Proporciona una estabilidad mediocre de la frecuencia, cuyo
valor depende de los valores de los dos elementos R-C.
Oscilador HS: Es un oscilador que alcanza una alta velocidad comprendida entre
4 y 10 MHz y est basado en un cristal de cuarzo o un resonador cermico.
Oscilador XT: Es un oscilador de cristal o resonador para frecuencias estndar
comprendidas entre 100 KHz y 4 MHz.
Oscilador LP: Oscilador de bajo consumo con cristal o resonador diseado para
trabajar en un rango de frecuencias de 35 a 200 KHz.
Reinicializacin o RESET.
Cuando se aplica un nivel lgico bajo a la patilla MCLR# el microcontrolador
reinicializa su estado. Dos acciones importantes se producen en la reinicializacin o
RESET:

1. El Contador de Programa se carga con la direccin 0, apuntando a la primera


direccin de la memoria de programa en donde deber estar situada la primera
instruccin del programa de aplicacin.
2. la mayora de los registros de estado y control del procesador toman un estado
conocido y determinado.
Se puede provocar el RESET de varias maneras, pero si se desea realizar
manualmente, habr que colocar, conectado a la patilla MCLR#, un circuito con un
pulsador, que al ser apretado genere un nivel lgico bajo.
Arquitectura de los microcontroladores PIC16X84.
Para lograr una compactacin de cdigo ptima y una velocidad superior a la de sus
competidores, los microcontroladores PIC incorporan en su procesador tres de las
caractersticas ms avanzadas en los grandes computadores:
Procesador tipo RISC.
Ejecucin segmentada.
Arquitectura HARVARD.
El juego de instrucciones se reduce a 35 y sus modos de direccionamiento se han
simplificado al mximo. Con la estructura segmentada se pueden realizar simultneamente
las dos fases en que se descompone cada instruccin. Con la arquitectura HARVARD se
puede acceder de forma simultnea e independiente a la memoria de datos y a la de
programa. El aislamiento y la diferenciacin de los dos tipos de memoria permite que cada
uno tenga la longitud y el tamao ms adecuado. De esta forma, en el PIC16X84 la
longitud de datos es de un byte, mientras que la de las instrucciones es de 14 bits.
Otra caracterstica relevante de los PIC es el manejo intensivo del Banco de
Registros, los cuales participan de manera muy activa en la ejecucin de las instrucciones.
De igual forma, la memoria RAM complementa los registros internos implementando en
sus posiciones registros de propsito especfico y de propsito general.
La arquitectura interna del PIC16X84 se presenta en la figura 5 y consta de siete
bloques fundamentales.

Figura 5.
1. Memoria de programa EEPROM o Flash de 1 k x 14 bits.
2. Memoria de datos formada por dos reas. Una RAM donde se alojan 22 registros
de propsito especfico (SFR) y 36 de propsito general (GDR), y otra de tipo
EEPROM de 64 bytes.
3. Camino de datos con una ALU de 8 bits y un registro de trabajo W del que
normalmente recibe un operando y enva el resultado. EL otro operando puede
provenir del bus de datos o del propio cdigo de la instruccin.
4. Diversos recursos conectados al bus de datos, tales como Puertas de
Entrada/Salida, Temporizador TMR0, etc.
5. Base de tiempos y circuitos auxiliares.
6. Direccionamiento de la memoria de programa en base al Contador de Programa
ligado a una Pila de 8 niveles de profundidad.
7. Direccionamiento directo e indirecto de la memoria RAM.

Memoria de Programa.
La arquitectura de los PIC de la gama media admite un mapa de memoria de
programa capaz de contener 8192 instrucciones de 14 bits cada una. Este mapa se divide en
pginas de 2048 posiciones. para direccionar 8 K posiciones se necesitan 13 bits, que es la
longitud que tiene el Contador de Programa. Sin embargo el PIC16X84 solo tiene
implementadas 1 K posiciones, por lo que se ignoran los tres bits de ms peso del PC.
Al igual que todos los registros especficos que controlan la actividad del
procesador, el Contador de Programa est implementado sobre un par de posiciones de la
memoria RAM. Cuando se escribe el Contador de Programa como resultado de una
operacin de la ALU, los 8 bits de menos peso del PC residen en el registro PCL, que
ocupa, repetido, la posicin 2 de los dos bancos de la memoria de datos. Los bits de ms
peso, PC <12:8>, residen en los 5 bits de menos peso del registro PCLATH, que ocupa la
posicin 0A H de los dos bancos de la memoria RAM. En las instrucciones de salto, los 11
bits de menos peso del PC provienen del cdigo de instruccin y los otros dos de los bits de
PCLATH <4:3>, tal y como se muestra en la figura 6.
La Pila es una zona aislada de las memorias de instrucciones y datos. Tiene una
estructura LIFO, en la que el ltimo valor guardado es el primero que sale. Tiene 8 niveles
de profundidad cada uno con 13 bits. Funciona como un buffer circular, de manera que el
valor que se obtiene al realizar el noveno POP es igual al que se obtuvo en el primero.

Figura 6.
Memoria de Datos RAM.
La memoria de datos del PIC16X84 dispone de dos zonas diferentes:
1. Area de RAM esttica o SRAM, donde reside el Banco de Registros
Especficos (SFR) y el Banco de Registros de Propsito General (GPR). El
primer banco tien 24 posiciones de tamao byte, aunque dos de ellas no son
operativas, y el segundo 68.
2. Area EEPROM, de 64 bytes donde, opcionalmente, se pueden almacenar datos
que no se pierden al deconectar la alimentacin.
La zona de memoria RAM se halla dividida en dos bancos (banco 0 y banco 1) de
128 bytes cada uno. En el PIC16X84 slo se hallan implementadas fsicamente las 48
primeras posiciones de cada banco, de las cuales las 12 primeras estn reservadas a los
Registros de Propsito Especfico (SFR), que son los encargados del control del procesador
y sus recursos. Algunos de dichos registros se hallan repetidos en la misma direccin de los
dos bancos, para simplificar su acceso (INDF, ESTADO, FSR, PCLATH e INTCON). Las
posiciones apuntadas por la direccin 7 H y la apuntada por la 87 H no son operativas. Los
36 registros restantes de cada banco se destinan a Registros de Propsito General y en
realidad slo son operativos los 68 del banco 0 porque los del banco 1 se mapean sobre el
banco 0, es decir, cuando se apunta a un registro general del banco 1, se accede al mismo
del banco 0, vase la figura 7.

Figura 7
Para seleccionar el banco a acceder hay que manipular el bit 5 (RP0) del registro
ESTADO. Si RP0=1 se accede ala banco 1 y si RP0=0 se accede al banco 0. Tras un Reset
se accede automticamente al banco 0. Para seleccionar un registro de propsito general no
hay que tener en cuenta el estado del bit RP0, porque al estar mapeado el banco 1 sobre el
banco 0, cualquier direccionamiento de un registro del banco 1 corresponde a su homlogo
del banco 0. En el direccionamiento directo a los registro GPR se ignora el bit de ms peso,
que identifica el banco y sus direcciones estn comprendidas entre el valor 0x0C y 0x4F en
hexadecimal.
Direccionamiento de la memoria de datos.
En los PIC de gama media la memoria de datos est organizada para alojar un
mximo de 4 bancos de 128 bytes cada uno. Los PIC16C84 slo tienen implementados los
48 primeros bytes de los bancos 0 y 1. En el resto de los PIC de esta familia se destinan dos
bits del registro ESTADO (RP0 y RP1) para determinar el banco y otros siete para elegir
una de las 128 posiciones del banco seleccionado, tal y como muestra la figura 8.

Figura 8
Direccionamiento Directo: El operando que utiliza la instruccin en curso se referencia
mediante su direccin, que viene incluida en el cdigo OP de la misma, concretamente
en los 7 bits de menos peso. El banco a acceder lo determinan los bits RP0 y RP1 del
registro ESTADO. En el caso del PIC16C84 slo se usa el bit RP0 al tener
implementados nicamente dos bancos.
Direccionamiento Indirecto: Este modo de direccionamiento se usa cuando en una
instruccin se utiliza como operando el registro INDF, que ocupa la direccin =de

ambos bancos. En realidad el registro INDF no est implementado fsicamente y cuando


se le hace referencia, se accede a la direccin de un banco especificada con los bits de
menos peso del registro FSR. El bit de ms peso de FSR junto al bit IRP del registro
ESTADO se encargan de seleccionar el banco a acceder, mientras que los 7 bits de
menos peso apuntan a la posicin. Como slo hay dos bancos en el PIC16C84 en este
modo de direccionamiento, el bit IRP es 0 siempre.
El Registro de Estado.
Hasta ahora ESTADO es el registro ms usado y llega el momento de describirlo en
su totalidad. Ocupa la direccin 3 tanto del banco 0 como del 1 de la memoria de datos
RAM. Sus bits tienen tres misiones distintas:
1. Se encargan de avisar de la incidencias del resultado de la ALU (C, DC y Z).
2. Indican el estado de Reset (TO# y PD#).
3. Seleccionan el banco a acceder en la memoria de datos (IRP, RP0 y RP1).
En la figura 9 se muestra el diagrama de distribucin de los bits del registro
ESTADO, su misin es la siguiente:
C: Acarreo en el bit de ms peso
1: Acarreo en el bit de ms peso.
0: No acarreo en el bit de ms peso.
DC: Acarreo en el 4 bit
1: Acarreo en el 4 bit.
0: No acarreo en el 4 bit.
Z: Cero
1: El resultado de una instruccin lgico-aritmtica ha sido cero.
0: El resultado de una instruccin lgico-aritmtica no ha sido cero.
PD#: Power Down
1: Se pone a este valor despus de la conexin a la alimentacin o al ejecutar clrwdt.
0: Se pone a este valor al ejecutar sleep.
TO#: Time Out
1: Se pone a este valor despus de la conexin a la alimentacin o al ejecutar clrwdt
y sleep.
0: Se pone a este valor al desbordarse el Perro Guardin (Watchdog).
RP1-RP0: Seleccin de banco en direccionamiento directo
Como el PIC16X84 slo tiene dos bancos nicamente emplea el bit RP0, de forma
que cuando vale 1 se accede al banco 1 y cuando vale 0 se accede al banco 0.
Despus de un Reset RP0=0.
IRP: Seleccin del banco en direccionamiento indirecto

Este bit junto con el de ms peso del registro FSR sirven para determinar el banco
de la memoria de datos seleccionado. En el PIC16X84 al disponer de dos bancos no
se usa este bit.
Figura 9

Temporizador/Contador TMR0.
Una de las labores ms habituales en los programas de control de dispositivos suele
ser determinar intervalos concretos de tiempo, y recibe le nombre de temporizador
(timer) el elemento encargado de realizar esta funcin. Tambin suele ser frecuente contar
los impulsos que se producen en el exterior del sistema, y el elemento destinado a este fin
se denomina contador. Si las labores del temporizador o contador las asignamos al
programa principal robaran mucho tiempo al procesador en detrimento de actividades ms
importantes. Por este motivo se disean recursos especficamente orientados a estas
misiones.
Los PIC16X84 poseen un temporizador/contador de 8 bits, llamado TMR0, que
acta de dos maneras diferentes:
1.

2.

Como contador de sucesos, que estn representados por los impulsos que se
aplican a la patilla RA4/T0CKI. Al llegar al valor FF H se desborda el
contador y, con el siguiente impulso, pasa a 00 H, advirtiendo esta
circunstancia con la activacin de un sealizador y/o provocando una
interrupcin.
Como temporizador, cuando se carga en el registro que implementa el
recurso un valor inicial se incrementa con cada ciclo de instruccin (Fosc/4)
hasta que se desborda, o sea, pasa de FF H a 00 H y avisa poniendo a el bit
sealizador y/o provocando una interrupcin.

Para que el TMR0 funcione como un cantador de impulsos aplicados a la patilla


T0CKI hay que poner a 1 el bit T0CS, que es el que ocupa la posicin 5 del registro
OPTION. En esta situacin, el registro TMR0, que es el ubicado en la direccin 1 del banco
0 de la memoria de datos, se incrementa con cada flanco activo aplicado a la patilla T0CKI.
El tipo de flanco activo se elige programando el bit T0SE, que es el que ocupa la posicin 4
del registro OPTION. Si T0SE 0 1, el flanco activo es el de bajada, y si T0SE = 0, es el de
subida. Cuando se desea que TMR0 funcione como temporizador el bit T0CS = 0.
En realidad, los PIC16X84 disponen de dos temporizadores, el TMR0 y el Perro
Guardin (Watchdog). El primero acta como principal y sobre l recae el control de
tiempos y la cuenta de impulsos. El otro vigila que el programa no se cuelgue, y para ello
cada cierto tiempo comprueba si el programa se est ejecutando normalmente. En caso
contrario, si el control est detenido en un bucle infinito a la espera de algn

acontecimiento que no se produce, el Perro Guardin ladra, lo que se traduce en un Reset


que inicializa todo el sistema.
A menudo el TMR0 y el Perro Guardin precisan controlar largos intervalos de
tiempo y necesitan aumentar la duracin de los impulsos de reloj que les incrementa. Para
cubrir este requisito se dispone de un circuito programable denominado Divisor de
frecuencia, que divide la frecuencia utilizada por diversos rangos. Para programar el
comportamiento del TMR0, el Perro Guardin y el Divisor de frecuencia se utilizan algunos
bits del registro OPTION y de la Palabra de Configuracin, que se vern ms adelante. En
la figura 10 se proporciona un esquema simplificado de la arquitectura del circuito de
control de tiempos usado en los PIC16X84.

Figura 10
El Divisor de frecuencias puede usarse con el TMR0 o con el WDT. Con el TMR0
acta como Pre-divisor, es decir, los impulsos pasan primero por el Divisor y luego se
aplican al TMR0, una vez aumentada su duracin. Con el WDT acta despus, realizando
la funcin de Post-divisor. Los impulsos, que divide por un rango el Divisor de frecuencia,
pueden provenir de la seal de reloj interna (Fosc/4) o de los que se aplican a la patilla
T0CKI. El TMR0 se comporta como un registro de propsito especfico (SFR) ubicado en

la direccin 1 del banco 0 de la memoria de datos. EN igual direccin, pero en el banco 1,


se halla el registro OPTION.
TMR0 puede ser ledo y escrito en cualquier momento al estar conectado al bus de
datos. Funciona como un contador ascendente de 8 bits. Cuando funciona como
temporizador conviene cargarle con el valor de los impulsos que se quiere temporizar, pero
expresados en complemento a 2. De esta manera, al llegar al nmero de impulsos deseados
se desborda y al pasar por 00 H se activa el sealizador TOIF y/o se produce una
interrupcin.
Para calcular los tiempos a controlar con TMR0 se utilizan las siguientes frmulas
prcticas.
Temporizacin = 4 Tosc (Valor cargado en TMR0) (Rango del Divisor)
Valor a cargar en TMR= = Temporizacin/4 Tosc Rango del Divisor
En cualquier momento se puede leer el valor que contiene TMR0, sin detener su
cuenta. En la figura 11 se ofrece el esquema de funcionamiento de TMR0. Obsrvese que
hay un bloque que retrasa 2 ciclos la cuenta para sincronizar el momento del incremento
producido por la seal aplicada a T0CKI con el que se producen los impulsos internos de
reloj. Cuando se escribe TMR0 se retrasan 2 ciclos su reincremento y se pone a 0 el Divisor
de frecuencia.

Figura 11
El registro OPTION.
La misin principal de este registro es controlar TMR0 y el Divisor de frecuencia.
Ocupa la posicin 81 H de la memoria de datos, que equivale a la direccin 1 del banco 1.
EL bit T0CS (Timer 0 Clock edge Select) selecciona en el multiplexor MPX1 la
procedencia de los impulsos de reloj, que pueden ser del oscilador interno (Fosc/4) o los
que se aplican desde el exterior por la patilla T0CKI. El bit T0SE (Timer 0 clock Source
sElect) elige el tipo de flanco activo en los impulsos externos. El bit PSA del registro
OPTION asigna el Divisor de frecuencia al TMR0 (PSA= 0) o al WDT (PSA = 1).

Los 3 bits de menos peso de OPTION seleccionan el rango por el que divide el
Divisor de frecuencia los impulsos que se le aplican en su entrada. El bit 6 INTEDG
(INTerrupt EDGe) sirve para determinar el flanco activo que provocar una interrupcin
externa al aplicarse a la patilla RB0/INT. Un 1 si es de subida y un 0 si es de bajada. El bit
7 RBPU# (RB Pull-Up) activa, si vale 0, o desactiva, cuando vale 1, las resistencias PullUp que pueden conectarse en las lneas de la Puerta B. .La figura 12 muestra la distribucin
y funcin de los bits de OPTION.

Figura 12
El Perro Gardin (WDT).
Se trata de un contador interno de 8 bits que origina un Reset cuando se desborda.
Su control de tiempos es independiente del TMR0 y est basado en un simple circuito R-C.

Su actuacin es opcional y puede bloquearse para que no funcione programando el bit


WDTE de la palabra de Configuracin. La temporizacin nominal con la que se halla
programado el Perro Guardin es de 18 ms, pero utilizando el Divisor de frecuencia puede
aumentarse hasta alcanzar los 2,3 segundos.
Para evitar que se desborde el Perro Guardin hay que refrescarle previamente. En
realidad este refresco consiste en ponerle a cero mediante las instrucciones clrwdt y sleep.
El programador debe analizar las instrucciones de la tarea y situar alguna de esas dos en
sitios estratgicos por los que pase el flujo de control antes que transcurra el tiempo
asignado al WDT. De esta manera si el programa se cuelga no se refresca el Perro Guardin
y se produce la reinicializacin del sistema.
La instruccin clrwdt borra al WDT y reinicia su cuenta. Sin embargo, la
instruccin sleep, adems de borrar WDT detiene al sistema y lo mete en un estado de
reposo o de bajo consumo. Si no se desactiva el Perro Guardin al entrar en modo de
reposo, al completar su cuenta provocar un Reset y sacar al microcontrolador del modo
de bajo consumo. Para desactivar el Perro Guardin hay que escribir un 0 en el bit 2
(WDTE) de la Palabra de Configuracin.
Las Puertas de E/S.
Los PIC16X84 slo disponen de dos puertas de E/S. La Puerta A posee 5 lneas,
RA0-RA4, y una de ellas soporta dos funciones multiplexadas. Se trata de RA4/TOCKI,
que puede actuar como lnea de E/S o como la patilla por la que se reciben los impulsos
que debe contar TMR0. La Puerta B tiene 8 lneas, RB0-RB7, y tambin tiene una con
funciones multiplexadas, la RB0/INT, que, adems de lnea tpica de E/S, tambin sirve
como patilla por la que reciben los impulsos externos que provocan una interrupcin.
Cada lnea de E/S puede configurarse independientemente como entrada o como
salida, segn se ponga a 1 o a 0, respectivamente, el bit asociado del registro de
configuracin de cada puerta (TRISA y TRISB). Se llaman PUERTAA y PUERTAB los
registros que guardan la informacin que entra o sale por la puerta y ocupan las direcciones
5 y 6 del banco 0 de la memoria de datos. Los registros de configuracin TRISA y TRISB
ocupan las mismas direcciones pero en el banco 1. Al reiniciarse el PIC todos los bits de los
registros TRIS quedan a 1, con lo que las lneas de las puertas quedan configuradas como
entradas. Cada lnea de salida puede suministrar una corriente mxima de 20 mA y si es de
entrada puede absorber hasta 25 mA. Al existir una limitacin en la disipacin mxima de
la potencia del chip se restringe la corriente mxima de absorcin de la Puerta A a 80 mA y
la de suministro a 50 mA. La Puerta B puede absorber un mximo de 150 mA y suministrar
un total de 100 mA.
La Puerta A.
Las lneas RA3-RA0 admiten niveles de entrada TTL y de salida CMOS. La lnea
RA4/TOCKI dispone de un circuito Trigger Schmitt que proporciona una buena inmunidad
al ruido y la salida tiene drenador abierto. RA4 multiplexa su funcin de E/S con la entrada

de impulsos externos para el TMR0. En el circuito de la figura 13 se muestra la adaptacin


de las patillas RA3-RA0 a las seales internas del procesador.

Figura 13
Cuando se lee una lnea de la Puerta A se recoge el nivel lgico que tiene en ese
momento. Las lneas cuando actan como salidas estn conectadas a unos biestable, lo que
significa que sus patillas sacan el nivel lgico que se haya cargado por ltima vez en el
registro PUERTAA. La escritura de una puerta, tal y como se ve en la figura 13, implica
que primero se deposita el nivel lgico en la lnea correspondiente del bus interno de datos
y se activa la seal WRITE, lo que origina el almacenamiento de dicho nivel en el
biestable. En esta situacin, el biestable de configuracin (TRIS) debera tener valor 0 para
que actuase como salida. Con estos valores la puerta OR tendra un 0 a su salida y la AND
tambin. Estos valores producen la conduccin de los transistores MOS, en funcin del
valor escrito, dando como salida final VDD o VSS (1 0 respectivamente).
Si una lnea acta como entrada, el nivel lgico depositado en ella desde el exterior
pasa a la lnea correspondiente del bus interno de datos cuando se activa la seal READ y
se hace conductor el dispositivo triestado que les une. Al programarse como entrada, los
dos transistores MOS de salida quedan bloqueados y la lnea de alta impedancia. Tngase
en cuenta que cuando se lee una lnea de entrada se obtiene el estado actual que tiene su

patilla correspondiente (almacenado en el tercer biestable) y no el que haya almacenado en


el biestable de datos. La informacin presente en una lnea de entrada se muestrea al
iniciarse el ciclo de instruccin y debe matenerse estable durante su desarrollo.
La Puerta B.
Consta de 8 lneas bidireccionales de E/S, RB7-RB0, cuya informacin se almacena
en el registro PUERTAB, que ocupa la direccin 6 del banco 0. El registro de configuracin
TRISB ocupa la misma direccin pero del banco 1. La lnea RB0/INT tiene dos funciones
multiplexadas; adems de patilla de E/S acta como la patilla para la peticin de una
interrupcin externa, cuando se autoriza esta funcin mediante la adecuada programacin
del registro INTCON.
A todas las lneas de esta puerta se las permite conectar una resistencia pull-up de
elevado valor con el positivo de la alimentacin. Para este fin hay que programar en el
registro OPTION el bit RBPU# = 0, afectando la conexin de la resistencia a todas las
lneas. Con el Reset todas las lneas quedan configuradas como entradas y se desactivan las
resistencias de pull-up.
Las cuatro lneas de ms peso, RB7-RB4, pueden programarse para soportar una
misin especial. Cuando las 4 lneas actan como entradas se las puede programar para
generar una interrupcin si alguna de ellas cambia su estado lgico. Esta posibilidad es
muy prctica en el control de teclados. En la figura 14 se muestra el esquema de
conexionado entre las patillas RB7-RB4 y las lneas correspondientes del bus interno.

Figura 14
El estado de las patillas RB7-RB4 en modo de entrada se compara con el valor
antiguo que tenan y que se haba almacenado en un biestable durante la ltima lectura de
la Puerta B. El cambio de estado en alguna de esas lneas origina una interrupcin y la
activacin del sealizador RBIF. La lnea RB6 tambin se utiliza para la grabacin serie de
la memoria de programas y sirve para soportar la seal de reloj. La lnea RB7 constituye la
entrada de los datos en serie.
La Palabra de CONFIGURACION.
Se trata de una posicin reservada de la memoria de programa situada en la
direccin 2007 H y accesible nicamente durante el proceso de grabacin. Al escribirse el
programa de la aplicacin es necesario grabar el contenido de esta posicin de acuerdo con
las caractersticas del sistema. En la figura 15 se muestra la distribucin y asignacin de los
14 bits de la Palabra de Configuracin de los PIC16F84, que tienen las siguientes
funciones:
CP

CP

CP

CP

CP

CP

CP

CP

CP

CP

PWRTE# WDTE FOSC1 FOSC0

Figura 15
CP: BITS DE PROTECCIN DE LA MEMORIA DE CDIGO
1: No protegida
0: Protegida. El programa no se puede leer, evitando copias. Tampoco se puede
sobreescribir. Adems evita que pueda ser accedida la memoria EEPROM de datos y,
finalmente, si se modifica el bit CP de 0 a 1, se borra completamente la EEPROM.
PWRTE: ACTIVACIN DEL TEMPORIZADOR POWER-UP
El temporizador power-up retrasa 72 ms la puesta en marcha o Reset que se
produce al conectar la alimentacin al PIC, para garantizar la estabilidad de la tensin
aplicada.
1: Desactivado
0: Activado
WDT: ACTIVACIN DEL PERRO GUARDIN
1: Activado el WDT
0: Desactivado
FOSC1-FOSC0: SELECCIN DEL OSCILADOR UTILIZADO
1-1: Oscilador RC
1-0: Oscilador HS
0-1: Oscilador XT
0-0: Oscilador LP
La memoria EEPROM de Datos.

Los PIC16X84 tienen 64 bytes de memoria EEPROM de datos, donde se pueden


almacenar datos y variables que interesa que no se pierdan cuando se desconecta la
alimentacin al sistema. Soporta 1.000.000 de ciclos de escritura/borrado y es capaz de
guardar la informacin sin alterarla ms de 40 aos. La memoria EEPROM no est
mapeada en la zona de la memoria de datos donde se ubican los registros SFR y GPR. Para
poder leerla y escribirla durante el funcionamiento normal del microcontrolador hay que
utilizar 4 registros del banco SFR: EEDATA, EEADR y EECON1.
En el registro EEADR, ubicado en la direccin 9 del banco 0, se carga la direccin a
acceder de la EEPROM de datos. las 64 posiciones de un byte ocupan las direcciones de un
mapa que comienza en 00 H y termina en 3F H, por eso los 2 bits de ms peso de este
registro siempre valen 0. En el registro EEDATA, ubicado en la direccin 8 del banco 0, se
depositan los datos que se leen o escriben. El registro EECON1, que ocupa la direccin 88
H de la memoria de datos, o la direccin 8 del banco 1, tiene misiones de control de las
operaciones en la EEPROM y la distribucin de sus bits se presenta en la figura 16,
sirviendo cada uno de ellos para lo siguiente:
RD: Lectura
1: Se pone a 1 cuando se va a realizar un ciclo de lectura. Luego pasa a 0
automticamente.
WR: Escritura
1: Se pone a 1 cuando se va a realizar un ciclo de ESCRITURA. Luego pasa a 0
automticamente.
WREN: Permiso de escritura
1: Permite la escritura en la EEPROM.
0: Prohibe la escritura.
WRERR: Sealizador de error en escritura
1: Se pone a 1 cuando una operacin de escritura ha terminado prematuramente.
0: La operacin de escritura se ha completado correctamente.
EEIF: Sealizador de final de operacin de escritura
1: Cuando este sealizador se pone a 1 indica que la operacin se ha completado con
xito. Se pone a 0 por programa.
0: La operacin de escritura no se ha completado.
------

------

------

EEIF

WRERR

WREN

WR

RD

Figura 16
Interrupciones.
Las llamadas a las subrutinas mediante instrucciones del tipo CALL son
desviaciones del flujo de control del programa originadas por instrucciones, por lo que se
consideran sncronas. Se producen cada vez que se ejecuta dicha instruccin. La

interrupciones son desviaciones del flujo de control del programa originadas


asncronamente por diversos sucesos que no se hallan bajo la supervisin de las
instrucciones. Dichos sucesos pueden ser externos al sistema, como la generacin de un
flanco o nivel activo en una patilla del microcontrolador, o bien, internos, como el
desbordamiento de un contador.
El comportamiento del microcontrolador ante la interrupcin es similar al de la
instruccin tipo CALL de llamada a subrutina. En ambos casos se detiene la ejecucin del
programa en curso, se salva la direccin actual del PC en la Pila y se carga el PC con una
direccin, que en el caso de CALL viene acompaando a la misma instruccin, y en el caso
de una interrupcin es una direccin reservada de la memoria de cdigo, llamada Vector
de Interrupcin que da paso a un trozo de cdigo denominado Rutina de Servicio de la
Interrupcin (RSI).
La RSI suele comenzar guardando en la memoria de datos algunos registros
especficos del procesador. Concretamente aquellos que la RSI va a emplear y va a alterar
su contenido. Antes del retorno al programa principal se recuperan los valores guardados y
se restaura completamente el estado del procesador. Algunos procesadores salvan estos
registros en la Pila, pero los PIC no disponen de instrucciones para meter (push) y sacar
(pop) informacin de la Pila, utilizando para este fin registros de propsito general de la
memoria de datos.
Los PIC16X84 pueden ser interrumpidos por 4 causas diferentes, pero todas ellas
desvan el flujo de control a la direccin 0004 H, por lo que otra de las operaciones
iniciales de la RSI es averiguar cul de las posibles causas ha sido la responsable de la
interrupcin en curso, para ello se exploran los sealizadores de las fuentes de interrupcin.
Otro detalle importante en la RSI de los PIC16X84 es que estos microcontroladores poseen
un bit GIE (Global Interrupt Enable) que cuando vale 0 prohibe todas las interrupciones.
Pues bien, al comenzar la RSI dicho bit GIE se pone automticamente a 0, con objeto de no
atender nuevas interrupciones hasta que se termine la que ha comenzado. En el retorno
final de la interrupcin, GIE pasa a valer automticamente 1 para volver a tener en cuenta
las interrupciones.
Antes del retorno conviene borrar el sealizador de la causa de interrupcin que se
ha atendido, porque si bien los sealizadores se ponen a 1 automticamente en cuanto se
produce la causa que indican, la puesta a 0 se hace por programa. En la figura 17 se
muestra un organigrama de las fases ms importantes que se desarrollan durante el proceso
de ejecucin de una interrupcin.
Causas de Interrupcin.
Los PIC16X84 tienen 4 causas o fuentes posibles de interrupcin:
1
2
3
4

Activacin de la patilla RB0/INT


Desbordamiento del temporizador TMR0
Cambio de estado en una de las 4 patillas de ms peso (RB7-RB4) de la Puerta B
Finalizacin de la escritura en la EEPROM de datos

Cuando ocurre cualquiera de los 4 sucesos indicados se origina una peticin de


interrupcin, que si se acepta y se atiende comienza depositando el valor del PC actual en
la Pila, poniendo el bit GIE = 0 y cargando en el PC el valor 0004 H, que es el Vector de
Interrupcin donde se desva el flujo de control. Cada fuente de interrupcin dispone de un
sealizador o flag, que es un bit que se pone automticamente a 1 cuando se produce.
Adems cada fuente de interrupcin tiene otro bit de permiso, que segn su valor permite o
prohibe la realizacin de dicha interrupcin.
El Registro de Control de Interrupciones INTCON.
La mayor parte de los sealizadores y bits de permiso de las fuentes de interrupcin
en los PIC16X84 estn implementados sobre los bits del registro INTCON, que ocupa la
direccin 0B H del banco 0, hallndose duplicado en el banco 1. El significado de cada bit,
que se muestra en la figura 17, es el siguiente:
GIE

EEIE

T0IE

INTE

RBIE

T0IF

INTF

RBIF

Figura 17
GIE: Permiso Global de Interrupciones
0: Prohbe todas las interrupciones.
1: Permite la ejecucin de todas las interrupciones, cuyos bits de permiso individuales
tambin las permitan.
EEIE: Permiso de Interrupcin por fin de escritura en la EEPROM
0: Prohbe que se produzca esta interrupcin.
1: Permite que se origine esta interrupcin cuando termina la escritura en la EEPROM de
datos.
T0IE: Permiso de Interrupcin por sobrepasamiento del TMR0
0: Prohbe esta interrupcin.
1: Permite una interrupcin al desbordarse el TMR0.
INTE: Permiso de Interrupcin por activacin de la patilla RB0/INT
0: Prohbe esta interrupcin.
1: Permite la interrupcin al activarse RB0/INT.
RBIE: Permiso de Interrupcin por cambio de estado en RB7-RB4
0: Prohbe esta interrupcin
1: Permite esta interrupcin.
T0IF: Sealizador de sobrepasamiento del TMR0
0: Indica que el TMR0 no se ha desbordado.
1: Toma este valor cuando ha ocurrido el desbordamiento.

INTF: Sealizador de activacin de la patilla RB0/INT


0: Indica que RB0/INT an no se ha activado.
1: Se pone a 1 al activarse RB0/INT.
RBIF: Sealizador de cambio de estado en las patillas RB7-RB4
0: No ha cambiado el estado de RB7-RB4.
1: Pasa a 1 cuando cambia el estado de alguna de esas lneas.
Siempre que se produzca una interrupcin por cualquier causa, GIE=1 y el PC se
carga con el valor 0004 H, que es el Vector de Interrupcin. Para conocer que causa ha
provocado la interrupcin se exploran los sealizadores, tres de los cuales se ubican en el
registro INTCON y el cuarto, EEIF, que se pone a 1 cuando finaliza la escritura en le
EEPROM, se halla en el bit 4 del registro EECON1. Los sealizadores deben ponerse a 0
por programa antes del retorno de la interrupcin y son operativos aunque la interrupcin
est prohbida con su bit de permiso correspondiente.
Interrupcin Externa INT.
Esta fuente de interrupciones es sumamente importante para atender los
acontecimientos externos en tiempo real. Cuando ocurre alguno de ellos activa la patilla
RB0/INT y se hace una peticin de interrupcin. Entonces, de forma automtica, el bit
INTF=1 y, si el bit de permiso INTE=1 se autoriza el desarrollo de la interrupcin.
Mediante el bit 6, llamado INTDEG, del registro OPTION se puede seleccionar cual
ser el flanco activo en RB0/INT. Si se desea que sea ascendente se escribe un 1 en dicho
bit, y si se desea descendente se escribe un 0. El procesador explora el sealizador INTF al
final del primer ciclo de reloj de cada ciclo de instruccin. Recurdese que cada ciclo de
instruccin constaba de 4 ciclos de reloj: Q1, Q2, Q3 y Q4. Al terminar Q1 se exploran los
sealizadores producindose un perodo de latencia de 3 4 ciclos de instruccin desde el
momento que hay un sealizador activado hasta que se inicializa la interrupcin.
Interrupcin por desbordamiento del TMR0.
Cuando el TMR0 se desborda y pasa del valor FF H al 00 H, el sealizador T0IF se
pone automticamente a 1. S adems, el bit de permiso de interrupcin del TMR0 T0IE=1
y el bit de Permiso Global de Interrupciones GIE=1, se produce una interrupcin.

TABLA DE NEMNICOS DE LA FAMILIA PIC16X84

MNEMNICO

DESCRIPCIN

CDIGO OP

FLAGS
AFECTADOS

NOTAS

Instrucciones Orientadas a Registros


ADDWF f,d

(W)+(f) (destino)

00 0111 dfff ffff

C, DC, Z

1,2

ANDWF f,d

(W) AND (f) (destino)

00 0101 dfff ffff

1,2

CLRF f

00 (f)

00 0001 1fff ffff

CLRW

00 (W)

00 0001 0000 0011

1,2

COMF f,d

Complemento de f [(#f) (destino)]

00 1001 dfff ffff

1,2

DECF f,d

(f)-1 destino

00 0011 dfff ffff

1,2,3

00 1011 dfff ffff

Ninguno

1,2

00 1010 dfff ffff

1,2,3

DECFSZ f,d
INCF f,d

(f)-1 destino y si resultado es 0 salta


(f)+1 destino

INCFSZ f,d

(f)+1 destino y si resultado es 0 salta

00 1111 dfff ffff

Ninguno

1,2

IORWF f,d

(W) OR (f) destino

00 0100 dfff ffff

1,2

MOVF f,d

Mueve f destino

00 1000 dfff ffff

MOVWF f

(W) (f)

00 0000 1fff ffff

Ninguno

1,2

NOP

No operacin

00 0000 0xx0 0000

Ninguno

1,2

RLF f,d

Rota f a la izq a travs del carry destino

00 1101 dfff ffff

1,2

RRF f,d

Rota f a la dcha a travs del cary destino

00 1100 dfff ffff

1,2
1,2

SUBWF f,d

(f)(W) (destino)

00 0010 dfff ffff

C,DC,Z

SWAPF f,d

Intercambia los nibbles de f destino

00 1110 dfff ffff

Ninguno

00 0110 dfff ffff

XORWF f,d

(W) XOR (f) (destino)

Instrucciones orientadas a Bit


BCF f,b

Pone a 0 el bit b del registro f

01 00bb bfff ffff

Ninguno

1,2

BSF f,b

Pone a 1 el bit b del registro f

01 01bb bfff ffff

Ninguno

1,2

BTFSC f,b

Skip si el bit b del reg. f es 0

01 10bb bfff ffff

Ninguno

BTFSS f,b

Skip si el bit b del reg. f es 1

01 11bb bfff ffff

Ninguno

Instrucciones con literales y de control


ADDLW K

(W)+ K (W)

11 111x kkkk kkkk

C,DC,Z

ANDLW K

(W) AND K (W)

11 1001 kkkk kkkk

CALL K

Llamada a subrutina

10 0kkk kkkk kkkk

CLRWDT

Clear del temporizador del WD

00 0000 0110 0100

Ninguno

GOTO K

Go To direccin

10 1kkk kkkk kkkk

IORLW K

(W) OR K (W)

11 1000 kkkk kkkk

Ninguno

MOVLW K

K (W)

11 00xx kkkk kkkk

Ninguno

RETFIE

Retorno de una interrupcin

00 0000 0000 1001

Ninguno

RETLW K

Retorno con un literal en W

11 01xx kkkk kkkk

Ninguno

RETURN

Retorno de una subrutina

00 0000 0000 1000

C,DC,Z

SLEEP

Modo Standby

00 0000 0110 0011

SUBLW K

K (W) W

11 110x kkkk kkkk

XORLW K

(W) XOR K (W)

11 1010 kkkk kkkk

Notas.1.

2.

3.

Al modificar un registro de E/S con una operacin sobre l mismo (por ejemplo MOVF PORTB,1),
el valor utilizado es el que se halle presente en los pines del PORTB. Por ejemplo, si el biestable
tiene un "1" para una patilla configurada como entrada y se pone a nivel bajo desde el exterior, el
dato se volver a escribir como "0".
Si se ejecuta esta instruccin sobre el TMR0 y d=1, ser borrado el divisor de frecuencia
(preescaler), si est asignado al TMR0.
Si se modifica el Contador de Programa (PC) o una condicin de prueba es verdadera, la instruccin
requiere dos ciclos mquina. El segundo ciclo se ejecuta como un NOP

ADDLW

ADDLW
ADD Literal to W

Operacin
(W) + k ----> (W)
Sintaxis
[Etiqueta] ADDLW k

Operadores
0 k 255
Cod.Oper.
0001 11df ffff
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

11

111x

kkkk

Suma el contenido del registro W al literal k, y almacena el resultado en


W.Si se produce acerreo el flag C se pone a "1"
Nota.- Esta instruccin no existe en el PIC 16C5X

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

C Se pone a 1 si se produce un Acarreo desde el bit de mayor peso


DC Se pone a 1 si se genera un Acarreo del bit 3 al bit 4.
Z

kkkk

Se pone a 1 si el resultado de la operacin es cero

EJEMPLO:
ADDLW 0x15
Si antes de la instruccin:
W = 10h = 0001 0000 b
Al ejecutarse la instruccin

W = 10 h + 15 h = 25 h
W = 0001 0000 b + 0001 0101 b = 0010 0101 b
Volver a tabla

ADDWF

ADDWF
ADD W to F

Operacin
(W) + (f) ----> (destino)
Sintaxis
[Etiqueta] ADDWF f,d
0 f 127

Operadores

d [0,1]
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

00

0111

dfff

Suma el contenido del registro W al contenido del registro f, y almacena


el resultado en W si d = 0, y en el registro f si d = 1.Si se produce acerreo
el flag C se pone a "1"

Registro de STATUS

PA2

PA1

ffff

PA0

TO#

PD#

DC

C Se pone a 1 si se produce un Acarreo desde el bit de mayor peso


DC Se pone a 1 si se genera un Acarreo del bit 3 al bit 4.
Z Se pone a 1 si el resultado de la operacin es cero
EJEMPLO: ADDWF FSR,0
Si antes de la instruccin. W = 17 h y FSR = C2 h como d=0
Al ejecutarse: W = 17 h+ C2 h = D9 h
FSR = C2 h
Volver a tabla

ANDLW

ANDLW
AND Literal and W

Operacin
(W).AND. (k) ----> (W)
Sintaxis
[Etiqueta] ANDLW k
Operadores
0 f 255
Palabras
1
Ciclos
1
Cdigo de
Operacin

11

1001

kkkk

kkkk

Descripcin

Efecta la operacin AND lgico entre el contenido del registro W y el


literal k, y almacena el resultado en W.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

Z Se pone a 1 si el resultado de la operacin es cero


EJEMPLO:

ANDLW 0x5F

Si antes de la instruccin. W = A3 h
Al ejecutarse: W = 0101 1111 b AND 1010 0011 b = 0000 0011 B = 03 h
Volver a tabla

ANDWF

ANDWF
AND W wind F

Operacin
(W) AND (f) ----> (destino)
Sintaxis
[Etiqueta] ANDWF f,d
Operadores

0 f 127
d [0,1]

Palabras
1

Ciclos
1
Cdigo de
Operacin
Descripcin

00

0101

dfff

ffff

Efecta la operacin AND lgico entre el contenido del registro W y el


contenido del registro f, y almacena el resultado en W si d = 0, y en f si d
= 1.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

Z Se pone a 1 si el resultado de la operacin es cero


EJEMPLO: ANDWF FSR,1
Si antes de la instruccin. W = 17 h = 0001 0111 b y FSR = C2 h = 1100 0010 h
Al ejecutarse:
W = 17 h = 0001 0111 b
FSR = 0001 0111 b AND 1100 0010 b = 0000 0010 b = 02 h
Volver a tabla

BCF

BCF
Bit Clear F

Operacin
0 --> (f<b>)

Sintaxis
[Etiqueta] BCF f,b
0 f 127

Operadores

0b7
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

01

00bb

bfff

ffff

Pone a cero el bit nmero b del registro f

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO: BCF FLAG_REG, 7


Si antes de la instruccin el registro
FLAG_REG = C7 h = 1100 0111 b
Al ejecutarse la instruccin, el registro queda con el valor:
FLAG_REG = 47b = 0100 0111 b
Volver a tabla

BSF

BSF

Bit Set F
Operacin
1 --> (f<b>)
Sintaxis
[Etiqueta] BSF f,b
0 f 127

Operadores

0 b 7
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

01

11bb

bfff

Pone a 1 el bit b del registro f

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO: BSF FLAG_REG, 7


Si antes de la instruccin el registro tiene el valor.
FLAG_REG = 0A h = 0000 1010 b
Al ejecutarse la instruccin, el registro queda con el valor:
FLAG_REG = 8A h = 1000 1010 b
Volver a tabla

ffff

BTFSC

BTFSC
Bit Test, Skip if Clear

Operacin
skip if (f<b>) = 0
Sintaxis
[Etiqueta] BTFSC f,b
0 f 127

Operadores

0 b 7
Palabras
1
Ciclos
1 (2)
Cdigo de
operacin
Descripcin

01

10bb

bfff

ffff

Si el bit nmero b del registro f es cero, la instruccin que sigue a sta se


ignora y se trata como un NOP (skip). En este caso, y slo en este caso, la
instruccin BTFSC precisa dos ciclos para ejecutarse.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:
HERE BTFSC FLAG,1

FALSE GOTO PROCESS_CODE


TRUE .
Si antes de la instruccin.

PC = direccin HERE

Al ejecutarse:
if FLAG<1> = 0,
PC = direccin TRUE
if FLAG<1> = 1,
PC = direccin FALSE
Volver a tabla

BTFSS

BTFSS
Bit Test, Skip if Set

Operacin
skip if (f<b>) = 1
Sintaxis
[Etiqueta] BTFSS f,b
0 f 127

Operadores

0 b 7
Palabras
1
Ciclos
1 (2)
Cdigo de
Operacin

01

11bb

bfff

ffff

Descripcin

Si el bit nmero b del registro f est a 1, la instruccin que sigue a sta se


ignora y se trata como un NOP (skip). En este caso, y slo en este caso, la
instruccin BTFSS precisa dos ciclos para ejecutarse.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:
HERE BTFSS FLAG,1
FALSE GOTO PROCESS_CODE
TRUE .
Si antes de la instruccin.

PC = direccin HERE

Al ejecutarse:
if FLAG<1> = 0,
PC = direccin FALSE
if FLAG<1> = 1,
PC = direccin TRUE
Volver a tabla

CALL

CALL
Subrutine Call

Operandos
0 = k = 2047

Sintaxis
[Etiqueta] CALL k
Operacin

(PC)+1 ---> Top of Stack


k ---> PC <10:0>;
PCLATCH (<4:3>) ---> PC (<12,11>)

Palabras
1
Ciclos
2
Cdigo de
Operacin
Descripcin

10

0kkk

kkkk

kkkk

Salvaguarda la direccin de vuelta en la Pila y despus llama a la


subrutina situada en la direccin cargada en el PC.
El modo de clculo de la direccin efectiva difiere segn la familia PIC
utilizada. Tambin hay que posicionar PA2, PA1 y PA0 (PIC 16C5X) o el
registro PCLATCH (En los dems PIC) antes de ejecutarse la instruccin.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:

HERE CALL THERE

Si antes de la instruccin.
PC = direccin HERE
Al ejecutarse:
PC = direccin (THERE)

TOS = direccin (HERE +1)


Volver a tabla

CLRF

CLRF
Clear f

Operacin

00h --> f
1 ---> Z

Sintaxis
[Etiqueta] CLRF f
Operadores
0 f 127
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

00

0001

1fff

Se borra el contenido del registro f y el flag Z se activa

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

Z Se pone a 1 si el resultado de la operacin es cero


EJEMPLO: CLRF REG

ffff

Si antes de la instruccin. REG = 5A h


Al ejecutarse: REG = 00 h
flag Z = 1
Volver a tabla

CLRW

CLRW
Clear W

Operacin

00h -->(W)
1 ---> Z

Sintaxis
[Etiqueta] CLRW
Operadores
No tiene
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

00

0001

0000

El registro de trabajo W se carga con 00h. El flag Z se pone a 1

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

0011

Z Se pone a 1 si el resultado de la operacin es cero


EJEMPLO:

CLRW

Si antes de la instruccin. W= 5Ah


Al ejecutarse: W = 00
flag Z = 1
Volver a tabla

CLRWDT

CLRWDT
Clear Watchdog Timer

Operacin

00h --> WDT


1 --> T0#
1 --> PD#

Sintaxis
[Etiqueta] CLRWDT
Operadores
No tiene
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

00

0000

0110

0100

Se borra tanto el registro WDT (Watchdog) como su preescaler. Los


bits T0# y PD# del registro de estado se ponen a "1".

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

T0# Se pone a 1 cuando se ejecuta la instruccin CLRWDT o SLEEP. Se pone a 0 si el


temporizador Watchdog se desborda
PD# Se pone a 1 cuando se ejecuta la instruccin CLRWDT o SLEEP
EJEMPLO:

CLRWDT

Si antes de ejecutarse la instruccin


WDT = ?
Al ejecutarse: WDT = 00 h
Preescaler WDT = 0
bit de estado T0 = 1
bit de estado PD = 1
Volver a tabla

COMF

COMF
Complement f

Operacin
(f#) -----> (dest)
Sintaxis
Operadores

[Etiqueta] COMF f,d


0 f < 127
d [0,1]

Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

00

1001

dfff

ffff

Hace el complemento del contenido del registro f bit a bit. El resultado se


almacena en el registro f si d=1 y en el registro W si d=0, en este caso f
no vara.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

Z Se pone a 1 si el resultado de la operacin es cero


EJEMPLO:

COMF REG1,0

Si antes de la instruccin. REG1 = 13 h como d= 0


Al ejecutarse: REG1 = 13 h = 0001 0011 b
W = EC h = 1110 1100 b
flag Z = 0
Volver a tabla

DECF

DECF
Decrement f

Operacin
(f)-1 --> (dest)
Sintaxis
[Etiqueta] DECF f,d
0 f 127

Operadores

d [0,1]
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

00

0011

dfff

Se decrementa el contenido del registro f en una unidad. El resultado se


almacena en f si d=1 y en W si d=0, en este caso f no vara.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

Z Se pone a 1 si el resultado de la operacin es cero


EJEMPLO:

DECF CNT,1

Si antes de la instruccin. CNT = 01 h


Z=0
Al ejecutarse: CNT = 00 h
bit Z = 1
Volver a tabla

ffff

DECFSZ

DECFSZ
Decrement f , Skip if 0

Operacin
(f) -1 --> (dest) ; skip if result =0
Sintaxis
[Etiqueta] DECFSZ f,d
0 f 127

Operadores

d [0.1]
Palabras
1
Ciclos
1 (2)
Cdigo de
Operacin
Descripcin

00

1011

dfff

Decrementa el contenido del registro f en una unidad, el resultado se


almacena en f si d=1 y en W si d=0, en este caso, f no vara. Si el
resultado es cero, se ignora la siguiente instruccin y, en ese caso la
instruccin tiene una duracin de dos ciclos.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:
GOTO LOOP

ffff

HERE DECFSZ CNT,1

CONTINUE
.
.
.
Si antes de la instruccin. PC = direccin HERE
Al ejecutarse: CNT = CNT -1
Si CNT = 0 entonces PC = direccin CONTINUE
Si CNT no = 0 entonces PC = direccin HERE + 1
Volver a tabla

GOTO

GOTO
Unconditional Branch

Operacin

K --> PC <10:0>
(PCLATH <4:3>) ---> (PC <12:11>)

Sintaxis
[Etiqueta] GOTO k
Operadores
0 k 2047
Palabras
1
Ciclos
2
Cdigo de
Operacin

10

1kkkk

kkkk

kkkk

Descripcin

Salto incondicional, normalmente se utiliza para llamar a la subrutina


situada en la direccin que se carga en PC.
El modo de clculo de la instruccin caga de bit 0 al 10 de la constante k
en el PC y los bits 3 y 4 del registro PCLATH en los 11 y 12 del PC

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:

GOTO THERE

Al ejecutarse: PC = direccin THERE


Volver a tabla

INCF

INCF
Increment f

Operacin
(f) + 1 --> (dest)
Sintaxis
[Etiqueta] INCF f,d
Operadores

0 f 127
d [0,1]
(f) + 1 ---> (dest)

Palabras
1

Ciclos
1
Cdigo de
Operacin
Descripcin

00

1010

dfff

ffff

Se incrementa en una unidad el contenido del registro f, si d=1 el


resultado se almacena en f, si d=0 el resultado se almacena en W, en este
caso el resultado de f no vara.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

Z Se pone a 1 si el resultado de la operacin es cero al haber desbordamiento


EJEMPLO:

INCF CNT,1

Si antes de la instruccin:
CNT = FF h
flag Z = 0
Al ejecutarse:

FF h +1 h = 00 h

CNT = 00
flag Z = 1
Volver a tabla

INCFSZ

INCFSZ
Increment f, SKIP if 0

Operacin
(f) +1 --> (dest) , skip if result = 0
Sintaxis
[Etiqueta] <INCFSZ f,d
0 f 127

Operadores

d [0,1]
Palabras
1
Ciclos
1 (2)
Cdigo de
Operacin
Descripcin

00

1111

dfff

Incrementa el contenido del registro f en una unidad, el resultado se


almacena de nuevo en f si d=1, y en W si d=0, en este caso, f no vara. Si
el resultado es cero, se ignora la siguiente instruccin y, en ese caso la
instruccin tiene una duracin de dos ciclos.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:

HERE INCFSZ CNT,1


GOTO LOP
CONTINUE

Si antes de la instruccin. PC = direccin HERE


Al ejecutarse: CNT = CNT+1
Si CNT = 0

ffff

Entonces PC = direccin CONTINUE


Si CNT no = 0
Entonces PC = direccin HERE + 1
Volver a tabla

IORLW

IORLW
Inclusive OR Literal with W

Operacin
(W).OR.k ---> (W)
Sintaxis
[Etiqueta] IORLW k
Operadores
0 k 255
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

11

1000

kkkk

Se realiza la operacin lgica OR entre el registro W y el literal k. El


resultado se almacena en el registro W.

Registro de STATUS

PA2

PA1

kkkk

PA0

TO#

PD#

DC

Z Se pone a 1 si el resultado de la operacin es cero


EJEMPLO:

IORLW 0x35

Si antes de la instruccin. W = 9A h
Al ejecutarse: W = 1001 1010 b + 0011 0101 b = 1011 1111 b = BF h
Volver a tabla

IORWF

IORWF
Inclusive OR W with f

Operacin
(W) .OR.(f)--> (dest)
Sintaxis
[Etiqueta] IORWF f,d
0 f 127

Operadores

d [0,1]
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

00

0100

dfff

ffff

Efecta la operacin lgica OR entre el contenido del registro W y el


contenido del registro f, y almacena el resultado en f si d=1 y en W si
d=0.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

Z Se pone a 1 si el resultado de la operacin es cero


EJEMPLO:

IORWF RESUL,0

Si antes de la instruccin. RESUL = 13 h = 0001 0011 b


W = 91 h = 1001 0001 b
Al ejecutarse: RESUL= 0001 0011 b OR 1001 0001 b = 1001 0011 b = 93 h
Volver a tabla

MOVLW

MOVLW
Move literal to W

Operacin
k --> (W)
Sintaxis
[Etiqueta] MOVLW k
Operadores
0 f 255
Palabras
1
Ciclos
1

Cdigo de
Operacin

11

Descripcin

00xx

kkkk

kkkk

El registro W se carga con el valor de 8 bits del literal k

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:

MOVLW 0x5A

Al ejecutarse: W = 5A h
Volver a tabla

MOVF

MOVF
Move f

Operacin
(f) --> (dest)
Sintaxis
[Etiqueta] MOVF f,d
Operadores

0 f 127
d [0,1]

Palabras
1

Ciclos
1
Cdigo de
Operacin
Descripcin

00

10000

dfff

ffff

El contenido del registro f se carga en el registro destino dependiendo del


valor de d. Si d=0 el destino es el registro W, si d=1 el destino es el propio
registro f . Esta instruccin permite verificar dicho registro ya que el flag
Z queda afectado.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

Z Se pone a 1 si el resultado de la operacin es cero


EJEMPLO:

MOVF FSR,0

Al ejecutarse: W = al valor del FSR


Volver a tabla

MOVWF

MOVWF
Move W to f

Operacin
(W)--> (f)
Sintaxis
[Etiqueta] MOVWF f

Operadores
0 f 127
Palabras
1
Ciclos
1
Cdigo de
Operacin

00

Descripcin

0000

1fff

ffff

Mueve el contenido del registro W al registro f

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:

MOVWF OPTION

Si antes de la instruccin. OPTION = FF h


W = 4F h
Al ejecutarse: OPTION = 4F h
W = 4F h
Volver a tabla

NOP

NOP
No operation

Operacin
no operacin
Sintaxis
[Etiqueta] NOP
Operadores
No tiene
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

00

0000

0xx0

0000

No realiza operacin alguna. En realidad, se consume un ciclo de


instruccin sin hacer nada.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:

NOP

Volver a tabla

RETFIE

RETFIE
Return from Interrupt

Operacin

TOS --> PC

1 --> GIE
Sintaxis
[Etiqueta] RETFIE
Operadores
No tiene
Palabras
1
Ciclos
2
Cdigo de
Operacin
Descripcin

00

0000

0000

Carga el PC con el valor que se encuentra en la parte alta de la Pila,


asegurando as la vuelta de la interrupcin. Pone a 1 el bit GIE, con el fin
de autorizar de nuevo que se tengan en cuenta las interrupciones.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:

RETFIE

Al ejecutarse: PC = TOS
GIE = 1
Volver a tabla

1001

RETLW

RETLW
Retur with Literal in W

Operacin

k --> (W);
TOS ---> PC

Sintaxis
[Etiqueta] RETLW k
Operadores
0 < K < 255
Palabras
1
Ciclos
2
Cdigo de
Operacin
Descripcin

11

01xx

kkkk

Carga el registro W con el literal k, y despus carga el PC con el valor


que se encuentra en la parte superior de la PILA, efectuando as un
retorno de subrutina.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:

kkkk

CALL TABLA

;W contiene tabla

; el valor offset

;W nuevo valor de tabla

TABLA: ADDWF PC
RETLW k1

;W = offset
; Nueva Tabla

RETLW k2
.
.
.
RETLW kn

;Fin de tabla

Antes de ejecutarse la instruccin W = 07 h


Al ejecutarse la instruccin W = Toma el valor de k7
Volver a tabla

RETURN

RETURN
Return from Subroutine

Operacin
TOS ---> PC
Sintaxis
[Etiqueta] RETURN
Operadores
No tiene
Palabras
1
Ciclos
2
Cdigo de
Operacin

00

0000

0000

1000

Descripcin

Carga el PC con el valor que se encuentra en la parte superior de la


PILA, efectuando as un retorno de subrutina

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

Volver a tabla

RLF

RLF
Rotate Left f through Carry

Operacin

Sintaxis
[Etiqueta] RLF f,d
0 f 127

Operadores

d [0,1]
Palabras
1
Ciclos
1
Cdigo de
Operacin

00

1101

dfff

ffff

Descripcin

Rotacin de un bit a la izquierda del contenido del registro f, pasando por


el bit de acarreo C. Si d=1 el resultado se almacena en f, si d=0 el
resultado se almacena en W.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:

RLF REG1,0

Si antes de la instruccin. REG1 = 1110 0110 b


flag C = 0
Como d= 0 el resultado queda en W
Al ejecutarse:

REG1 = 1110 0110 b


W = 1100 1100 b
flag C = 1

Volver a tabla

RRF

RRF
Rotate Right f through Carry

Operacin

Sintaxis
[Etiqueta] RRF f,d
0 f 127

Operadores

d [0,1]
Palabras
1
Ciclos
1
Cdigo de
Operacin

00

Descripcin

1100

dfff

ffff

Rotacin de un bit a la derecha del contenido del registro f, pasando por el


bit de acarreo C. Si d=1 el resultado se almacena en f, si d=0 el resultado
se almacena en W

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:

RRF REG1,0

Si antes de la instruccin. REG1 = 1110 0110 b


flag C = 1
Como d= 0 el resultado queda en W
Al ejecutarse: REG1 = 1110 0110 b
W = 0111 0011 b
flag C = 0
Volver a tabla

SLEEP

SLEEP
Sleep

Operacin

00h ---> WDT


0 ---> WDT prescaler
1 ---> TO#
0 --> PD#

Sintaxis

[Etiqueta] SLEEP

Operadores
No tiene
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

00

0000

0110

0011

Pone al circuito en modo Sleep (bajo consumo) con parada del oscilador.
Pone a 0 el flag PD# (Power Down) y el flag TO# (Timer Out) se pone a
1. Se puede salir de este estado por:
1. Activacin de MCLR para provocar un Reset
2. Desbordamiento del Watchdog si qued operativo en el modo
reposo
3. Generacin de una interrupcin que no sea TMR0 ya que sta se
desactiva con la instruccin SLEEP.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z#

DC

TO Se pone a 1 al ejecutar la instruccin SLEEP o CLRWDT


PD Se pone a 0 al ejecutar la instruccin SLEEP
EJEMPLO:

SLEEP

Volver a tabla

SUBLW

SUBLW
Subtract W from Literal

Operacin
k - (W) ---> (W)
Sintaxis
[Etiqueta] SUBLW k
Operadores
0 k 255
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

11

110x

Kkkk

kkkk

Resta en complemento a dos del contenido del literal k el contenido del


registro W, y almacena el resultado en W.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

Z Se pone a 1 si el resultado de la operacin es cero


DC Se pone a 1 si se genera un acarreo del bit 3 al grupo de 4 bits superior
C Se pone a 1 si se genera un acarreo del bit de mayor peso
EJEMPLO:

SUBLW 0x 02

Si antes de la instruccin. W = 01 h
flag C = ?
Al ejecutarse: W = 01
flag C = 1 ; el resultado es positivo
Si antes de la instruccin. W = 02 h
flag C = ?
flag Z = ?
Al ejecutarse: W = 00 h
flag C = 1 ; el resultado es cero
flag Z = 1
Si antes de la instruccin. W = 03 h
flag C = ?
Al ejecutarse: W = FF h
flag C = 0 ; el resultado es negativo
Volver a tabla

SUBWF

SUBWF
Subtract W from f

Operacin
(f) - (W) ---> (dest)
Sintaxis
[Etiqueta] SUBW f,d
0 f 127

Operadores

d [0,1]
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

00

0010

dfff

ffff

Resta en complemento a dos el contenido del registro f menos el


contenido del registro W almacena el resultado en W si d=0 y en f si d=1.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

Z Se pone a 1 si el resultado de la operacin es cero


DC Se pone a 1 si se genera un acarreo del bit 3 al grupo de 4 bits superior
C Se pone a 1 si se genera un acarreo del bit de mayor peso

EJEMPLO:

SUBWF REG1,1

a) Si antes de la instruccin. REG1 = 03 h


W = 02 h
flag C = ?
Al ejecutarse REG1 = 01h
W = 02 h
flag C = 1 ; el resultado es positivo
b) Si antes de la instruccin. REG1 = 02 h
W = 02 h
flag C = ?
Al ejecutarse REG1 = 00h
W = 02 h
flag C = 1 ; el resultado es cero
falz Z = 1 ; el resultado es cero
c) Si antes de la instruccin. REG1 = 01 h
W = 02 h
bit C = ?
Al ejecutarse REG1 = 00h
W = FF h
flag C = 0 ; el resultado es negativo
falz Z = 1 ; el resultado es cero
Volver a tabla

SWAPF

SWAPF
Swap Nibbles in f

Operacin

(f<3:0>) ---> (dest <7:4>)


(f<7:4>) ---> (dest <3:0>)

Sintaxis
[Etiqueta] SWAPF f,d
0 f 127

Operadores

d [0,1]
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

00

1110

dfff

Los cuatro bits de ms peso del registro f se intercambian con los 4 bits de
menos peso del mismo registro. Si d=0 el resultado se almacena en W, si
d=1 el resultado se almacena en f.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:

ffff

SWAPF REG1,0

Si antes de la instruccin. REG1 = A5 h = 1010 0101 h

Como d=0 el resultado se almacenar en W


Al ejecutarse la instruccin: REG1 = A5 h = 1010 0101 b
W = 5A h = 0101 1010 b
Volver a tabla

XORLW

XORLW
Exclusive OR Literal With k

Operacin
(W).XOR.k ---> (W)
Sintaxis
[Etiqueta] XORLW k
Operadores
0 f 255
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin

11

1010

kkkk

Realiza la funcin OR-Exclusiva entre el contenido del registro W y la


constante k de 8 bits. El resultado se almacena en W

Registro de STATUS

PA2

PA1

kkkk

PA0

TO#

PD#

DC

Z Se pone a 1 si el resultado de la ltima operacin es cero


EJEMPLO:

XORLW 0xAF

Si antes de la instruccin. W = 1011 0101 b = B5 h


Al ejecutarse la instruccin: W = 1011 0101 b 1010 1111 b = 0001 1010 b = 1A h
Volver a tabla

XORWF

XORWF
Exclusive OR With f

Operacin
(W).XOR.(f) ---> (des)
Sintaxis
[Etiqueta] XORWF f,d
0 f 127

Operadores

d [0,1]
Palabras
1
Ciclos
1
Descripcin

Realiza la funcin OR-Exclusiva entre el contenido del registro W y el


contenido del registro f, y almacena el resultado en f si d=1 y en W si f=0

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

DC

EJEMPLO:

XORWF REG1,1

Si antes de la instruccin. REG1 = AF h = 1010 1111 b


W = B5 h = 1011 0101 b
Como d=1, el resultado se almacena en REG1
Al ejecutarse: REG1 = 1010 1111 1011 0101 =0001 1010 = 1A h
W = B5 h

LAS INTERRUPCIONES
Las interrupciones constituyen quiz el mecanismo ms importante para la
conexin del microcontrolador con el mundo exterior, sincronizando la ejecucin
de programas con acontecimientos externos.
El funcionamiento de las interrupciones es similar al de las subrutinas de las
cuales se diferencian principalmente en los procedimientos que las ponen en
marcha. As como las subrutinas se ejecutan cada vez que en el programa aparece
una instruccin CALL, las interrupciones se ponen en marcha al aparecer en
cualquier instante un evento externo al programa, es decir por un mecanismo
hardware.
El PIC16C84/PIC16F84 dispone de 4 posibles fuentes de interrupcin:
1. Activacin del pin RB0/INT
2. Desbordamiento del temporizador TMR0
3. Cambio de estado en uno de los 4 pines de ms peso (RB7:RB4) del
PORTB

4. Finalizacin de la escritura en la EEPROM de datos.


Cuando se produce cualquiera de los sucesos indicados anteriormente, se origina
una peticin de interrupcin, que si se acepta, guarda el valor del PC actual en la
Pila, pone a cero el bit GIE (Global Interrupt Enable), lo que prohibe cualquier
otra interrupcin y se carga el PC con el valor 0004H , que es la posicin del
vector de interrupcin, y comienza a ejecutarse el programa de atencin a la
interrupcin que se encuentra a partir de esta direccin.
Cada causa de interrupcin est controlada mediante dos bit. Uno de ellos acta
como sealizador o flag que indica si se ha producido o no la interrupcin, y la
otra funciona como bit de permiso o prohibicin de la interrupcin en s, tal y
como se muestra en la siguiente figura.

Los bits de control que se encuentran en el registro INTCON (0Bh 8Bh)


habilitan y configuran las interrupciones. Para que se pueda producir interrupcin
por alguna de estas fuentes, el bit correspondiente debe estar a 1, mientras que los
bits sealizadores o flags que estn en los registros INTCON y EEDATA (08h)
informan si se ha producido la interrupcin cuando se ponen a 1. Cualquiera de
las interrupciones tambin puede sacar al procesador del modo de reposo.

El bit GIE (Global Interrupt Enable) es el de activacin global del permiso de


interrupcin, y se borra automticamente cuando se reconoce una interrupcin
para evitar que se produzca ninguna otra mientras se est atendiendo a la primera.
Al retornar de la interrupcin con una instruccin RETFIE, el bit GIE se vuelve a
activar ponindose a 1. Para el resto de los bit de indicacin de interrupcin (es
decir, el resto de los flags) no se ha previsto mecanismo de puesta a cero, por lo
que es el programa de atencin a la interrupcin el que debe realizar el
tratamiento de la correspondiente interrupcin y adems, el que debe poner el o
los flags de indicacin de interrupcin a 0. De no ser as, no se podr salir de la
rutina de atencin a la interrupcin.
El microcontrolador solo dispone de un vector de interrupcin en la direccin
0004h; esto quiere decir que, sea cual sea la fuente de la interrupcin, el PC se
carga con 0004h. Por lo tanto, el programa de atencin a la interrupcin debe
encargarse de comprobar el estado de cada uno de los flags para saber cual es el
dispositivo que produce la interrupcin y actuar segn el caso.
Como ya hemos dicho el nico registro que se salva en la PILA es PC, luego si
se necesita preservar algn otro registro debe ser el propio programa de atencin
a la interrupcin el que se encargue de salvar su estado al inicio de la rutina y de
devolverlos al final del mismo, de igual modo que se haca en las subrutinas.
Resumiendo, las acciones que se realizan automticamente el microcontrolador y
las que el programador debe tener en cuenta en sus programas son las siguientes:
1. Cuando se activa una posible causa de interrupcin, el flag

2.
3.
4.
5.

6.

correspondiente se activa. Si el bit de permiso correspondiente est a 1 y el


bit de habilitacin de todas las interrupciones (GIE) est a 1, se produce la
interrupcin.
Para evitar que se produzca otra interrupcin mientras se est atendiendo a
otra anterior, el bit GIE se pone a 0.
El valor del PC se guarda en la PILA
El PC se carga con el valor 0004h, que es el vector de interrupciones
El programador, debe comenzar la rutina de atencin a la interrupcin con
un salto a la posicin de memoria donde se encuentra el programa,
seguidamente se guardan todos los registros que puedan ser modificados
por esta, seguidamente si estn habilitadas varias vas de interrupcin, se
debe explorar el valor de los flag para determinar la causa de la
interrupcin.
Dependiendo de la causa de la interrupcin, la rutina de interrupcin se
bifurca a la subrutina correspondiente.

7. Se deben devolver los valores que tenan los registros antes de producirse

la interrupcin y se deben borrar por software los flags que indican las
fuentes de las interrupciones, antes del retorno al programa principal.
8. Cuando se llega a la ltima instruccin de la rutina de interrupcin,
RETURN, se carga el PC con el valor que se guard inicialmente en la
PILA y el bit GIE se pone automticamente a 1.
INTERRUPCIN EXTERNA INT
La fuente de interrupciones INT es sumamente importante para
atender eventos externos en tiempo real. Cuando en la lnea
RB0/INT se hace una peticin de interrupcin, entonces, de forma
automtica, el bit INTF del registro INTCON se pone a 1 y si el bit
GIE=1, se pone en marcha el mecanismo que ya hemos comentado
de la interrupcin. Mediante el bit INTDEG del registro OPTION,
se puede seleccionar el flanco activo de RBO/INT, ya que con este
puesto 1 el flanco activo es el de subida y cuando est a 0 el flanco
activo es el de bajada.
El programa de atencin a la interrupcin antes de regresar al
programa principal debe borrar el flag INTF, puesto que en caso
contrario al ejecutar la instruccin de retorno de interrupcin
RETFIE se volver a desarrollar el mismo proceso de interrupcin.
INTERRUPCION POR DESBORDAMIENTO DEL TMR0
Para activar la interrupcin del TMR0, los bit T0IE y GIE del
registro INTCON deben de estar a 1; bajo estas condiciones cuando
el temporizador TMR0 se desborda al pasar de FFh a 00h, se activa
el flag TOIF del registro INTCON.
Si no se carga de nuevo TMR0 cuando se desborda, ste sigue
contando desde 00h hasta FFh. Este registro puede escribirse o
leerse en cualquier momento, pero hay que tener en cuenta que al
escribir sobre l, se pierden dos ciclos de reloj para la
sincronizacin.
Cuando se carga el registro TMR0 con un valor XXh, ste cuenta
FFh-XXh impulsos y el tiempo que tarda en hacerlo viene dado por
la expresin:
Temporizacin = 4 . Tosc . (256 N10). Rango del Divisor de Frecuencia

INTERRUPCION POR CAMBIO DE ESTADO EN LOS


PINES RB7:RB4 INTERRUPCION POR CAMBIO DE ESTADO
EN LOS PINES RB7:RB4.
Para activar la interrupcin por cambio de nivel en los pines
<RB7:RB4>, los bits RBIE y GIE del registro INTCON deben de
estar a 1, bajo estas condiciones cuando se produce un cambio de
nivel en cualquiera de los pines RB7:RB0 se activa el flag RBIF del
registro INTCON.
Este tipo de interrupciones, estn especialmente pensadas para el
control de un teclado matricial de 4 x 4, es decir de 16 teclas.
INTERRUPCIN POR FINALIZACIN DE ESCRITURA EN LA
EEPROM DE DATOS INTERRUPCIN POR FINALIZACIN
DE ESCRITURA EN LA EEPROM DE DATOS.
El rea de EEPROM dispone de 64 bytes donde opcionalmente, se
pueden almacenar datos que no se pierden al desconectar la
alimentacin. El PIC 16C84 y el 16F84 soportan un milln de ciclos
de escritura/borrado y son capaz de guardar la informacin sin
alteracin durante ms de 40 aos.
La memoria EEPROM no est mapeada en la zona de
memoria de datos donde se encuentran los registros
SFR y GPR. Para poder leerla y escribirla durante el
funcionamiento normal del microcontrolador hay que
utilizar los registros especiales EEDATA, EEADR,
EECON1 y EECON2.
El Registro EEADR, se encuentra en la posicin de
memoria 09h del banco 0, en el se carga directamente
la direccin a la que acceder de la EEPROM de datos.
Las 64 posiciones de un byte ocupan las direcciones
de un mapa que comienza en la posicin 00h y termina
en la 3Fh, por eso los 2 bits de ms peso del registro
EEADR siempre valen 0.
Los bit RD y WR indican respectivamente lectura o escritura. No
hay que ponerlos a 0 solo a 1. Se borran automticamente cuando la
operacin de lectura ha sido completada.

El registro EECON2 no est implementado fsicamente, por lo


que es imposible leerlo (si se intenta leer, todos sus bits se ponen a
0). Se emplea como dispositivo de seguridad durante el proceso de
escritura de la EEPROM, para evitar las interferencias en el largo
intervalo de tiempo que precisa su desarrollo. La seguridad se
consigue escribiendo los valores concretos 55h y AAh. Un ciclo de
escritura en una posicin EEPROM de datos tiene una duracin de
10 ms, que es un tiempo muy grande para la velocidad del
procesador.

Proceso de lectura de una posicin de memoria de la


EEPROM: Comprende los siguientes pasos:

1. Escritura de la direccin que hay que leer en el registro

EEADR.
2. Poner a 1 el bit RD del registro EECON1.
3. Lectura del dato diseccionado de esta forma en el registro
EEDATA.
4. El dato est disponible en EEDATA despus de colocar RD a
1, por lo que es posible leerlo. El dato ledo estar disponible
el registro EEDATA en el siguiente ciclo y permanecer en l
hasta que se realice una nueva lectura o escritura en la
EEPROM.
Seguidamente se muestra un programa capaz de leer la
posicin de memoria MEM1, de la EEPROM de datos.
LECTURA

bcf STATUS,RP0
movlw MEM1

; Selecciona banco 0
; Direccin a leer de la EEPROM

movwf EEADER

ESPERA

bsf STATUS,RP0

; Selecciona banco 1

bsf EECON1,RD

;Activar Lectura

btfsc EECON1,RD

;Espera final de lectura

goto ESPERA

EEPROM

bcf STATUS,RP0

;Selecciona banco 0

movf EEDATA,W

;W se carga con el valor ledo en

Proceso de escritura de una posicin de memoria de la


EEPROM: Comprende los siguientes pasos:

1. Se carga en EEADR la direccin de la posicin a escribir


2. Se carga en el registro EEDATA el valor a grabar
3. Se ejecuta la siguiente secuencia para iniciar la escritura de

cada byte
movlw 55h
movwf EECON2 ;Escribe 55h
movwf AAh
movwf eecon2 ;Escribe AAh
bsf eecon1,wr ;coloca a 1 el bit
4. Esta ltima instruccin inicia el proceso de escritura

propiamente dicho. Cuando se termina el bit EEIF est a 1 y,


si ha sido activada la interrupcin EEPROM haciendo uso
del bit EEIE de INCONT, esta interrupcin se genera. Al
acabar el proceso se pone a 0 el bit WR automticamente.
5. Mediante programa hay que poner a 0 el bit EEIF.
Un sistema para comprobar si se ha producido la escritura
correctamente en la memoria EEPROM consiste en restar el dato
escrito con el que existe en el registro EEDATA. Si no se ha
producido error el flag Z pasa a valer 1.
Seguidamente se muestra un programa que escribe en
la posicin de memoria MEN1, de la EEPROM el dato
DATO1.
ESCRITURA:
bcf STATUS,RP0

;Selecciona el banco 0

movlw MEN1
movwf EEADR
EEADR
movlw DATO1

;Escribe la direccin en

movwf EEDATA
EEDATA

;Se escribe el dato en

bsf STATUS,RP0

;Selecciona el banco 1

bsf EECON1,WREN ;Permiso de escritura


;Comienzo Secuencia de escritura
movlw 0x55
movwf EECON2
eecon2

;Se escribe el dato 55h en

movlw 0xaa ;
movwf EECON2
eecon2

;Se escribe AA h en

bsf EECON1,WR

;Comienza la escritura

ESPERA:
btfsc EECON1,WR
escritura

;Espera a que termine la

goto ESPERA
bcf STATUS,R0

;Selecciona el banco 0

Microchip recomienda que se deshabiliten las interrupciones


durante la secuencia de, aadiendo las siguientes instrucciones al
principio y final de la secuencia.
BCF INTCON,GIE ;Deshabilita interrupcin
BSF INTCON,GIE ;Habilita interrupcin
Proceso de verificacin de la escritura. Dependiendo de la
aplicacin, es aconsejable que se compruebe que los datos se estn
escribiendo correctamente; aunque esto no suele ser necesario en la
mayora de las ocasiones, para las posiciones de memoria EEPROM
es aconsejable.

Registros de Propsito Especial (SFR)


Direccin Nombre

bit 7

bit 6

bit 5

bit 4

bit 3

bit 2

bit1

bit0

BANCO DE REGISTROS 0
00h

INDF

Contenido utilizado de FSR a la direccin de memoria de datos (no es


un registro fsico)

01h

TMR0

Contador de 8 bit en tiempo real

02h

PCL

8 bit ms bajos del Contador de Programa

03h

STATUS

04h

FSR

05h

PORTA

--

--

--

RB4/TOCKI

RA3

RA2

RA1 RA0

06h

PORTB

RB7

RB6

RB5

RB4

RB3

RB2

RB1 RB0

07h

IRP

RP1

RP0

T0#

PD#

DC

Puntero indirecto de direccionamiento de datos

Posicin no implementada, se lee como "00"

08h

EEDATA Registro de datos EEPROM

09h

EEADR

0Ah

PCLATH

--

--

--

0Bh

INTCON

GIE

EEIE

TOIE

Registro de direcciones EEPROM


INTE

RBIE

TOIF INTF RBIE

BANCO DE REGISTROS 1
Contenido utilizado de FSR a la direccin de memoria de datos (no es
un registro fsico)

80h

INDF

81h

OPTION RBPU# INTEDG TOSC

82h

PCL

TOSE

8 bit ms bajos del Contador de Programa

PSA

PS2

PS1

PS0

83h

STATUS

84h

FSR

85h

TRISA

86h

TRISB

87h

IRP

RP1

RP0

T0#

PD#

DC

Puntero indirecto de direccionamiento de datos


--

--

Registro de direccionamiento de datos del


PORTA

--

Registro de direccionamiento de datos del PORTB


Posicin no implementada, se lee como "00"

88h

EECON1

--

--

--

89h

EECON2

8Ah

PCLATH

--

--

--

8Bh

INTCON

GIE

EEIE

TOIE

EEIF

WRERR WRWN WR

RD

Registro de control de EEPROM (no es un registro fsico)


Buffer escrito con los 5 bit ms altos del PC
INTE

RBIE

TOIF INTF RBIE

Registro de STATUS (POSICIN 03h o 83h)

R/W-0

R/W-0

R/W-0

R-1

R-1

R/W-X

R/W-X

R/W-X

IRP

RP1

RP0

T0#

PD#

DC

bit 7

bit 6

bit 5

bit 4

bit 3

bit 2

bit1

bit0

R = bit de lectura
W = bit de escritura
-n = Valor del bit despus de un Reset

bit 0 C : flag () de acarreo en el octavo bit


1: Acarreo en la suma y no en la resta
0: Acarreo en la resta y no en la suma
Este bit tambin se utiliza en las instrucciones de rotacin

bit 1 DC: flag () de acarreo en el 4 bit de menos peso.


1: Acarreo en la suma
0 : No acarreo en la suma.En la resta lo contrario
bit 2 Z: flag () de cero
1: el resultado de la ltima operacin aritmtica o lgica es cero
0: El resultado de la ltima operacin es distinto de cero
bit 3 PD#: flag () Power Down
1: Tras conectar VDD o al ejecutar la instruccin CLRWDT
0: Al ejecutar la instruccin SLEEP
bit 4 TO#: flag () Timer Out
1:Tras conectar VDD o ejecutar CLRWDT o SLEEP
0 :Al desbordar el temporizador de WDT
bit 5-6 RP<1:0>:Seleccin del banco para el direccionamiento directo
00 Banco 0 (00h-7Fh)
01 Banco 1 (80h-FFh)
10 Banco 2 (100h-17Fh)
11 Banco 3 (180h-1FFh)
bit 7 IRP: Seleccin de bancos para el direccionamiento indirecto
1: el resultado de la ltima operacin aritmtica o lgica es cero
0: Bancos 0 y 1 (00h-FFh)

Registro OPTION (POSICIN 81h)

Ocupa la posicin la 81h del banco de registro 1. En la siguiente tabla se muestra el


significado de cada uno de sus 8 bits. Es recomendable darle otro nombre por ejemplo
"OPTION" en el programa ensamblador, para que el programa ensamblador no de
mensajes de error, ya que en los PIC de la gama baja existe la instruccin OPTION.
R/W-1

R/W-1

R/W-1

R/W-1

RBPU# INTEDG TOCS TOSE PSA PS2

PS1

PS0

bit1

bit0

bit 7

R/W-1

R/W-1

Bit 6

bit 5

R/W-1

bit 4

R/W-1

bit 3

bit 2

R = bit de lectura
W = bit de escritura
-n = Valor del bit despus de un
Reset

bit 2-0 PS2:PSO: Rango con el que acta el Divisor de frecuencia


PS2 PS1 PS0

Divisor del TMRO

Divisor del WDT

000

1:2

1:1

001

1:4

1:2

010

1:8

1:4

011

1:16

1:8

100

1:32

1:16

101

1:64

1:32

110

1:128

1:64

111

1:256

1:128

bit 3 PSA: Asignacin del divisor de frecuencia


1: El divisor de frecuencia se asigna al WDT

0: El divisor de frecuencia se asigna al TMR0


bit 4 TOSE: Tipo de flanco en TOCK1
1: Incremento de TMR0 cada flanco
descendente
0: Incremento de TMR0 cada flanco ascendente
bit 5 TOCS: Tipo de Reloj para TMR0
1: Pulsos introducidos a travs de T0CK1
(Contador)
0: Pulsos de reloj interno Fosc/4
(Temporizador)
bit 6 INTEDG: Flanco activo control de interrupciones
1: Flanco Ascendente
0: Flanco Descendente
bit 7 BPRU : Resistencia Pull-up Puerto B
1: Desactivadas
0: Activadas

Registro de Interrupciones INTCON(POSICIN 0Bh o


8Bh)Registro de Interrupciones INTCON(POSICIN 0Bh o
8Bh):
Ocupa la posicin 0Bh del banco de registro 0 y la 8Bh del banco de registro 1. En la
siguiente tabla se muestra la estructura de cada uno de sus 8 bits de los cuales unos
actan como sealadores del estado de estado y otros como bit de permiso o
autorizacin para que se pueda producir la interrupcin. Cuando se estudien las
interrupciones se entender mejor el funcionamiento del registro.

R/W-0

R/W-0

R/W-0

R/W-0

R/W-0

R/W-0

R/W-0

R/W-X

GIE
bit 7

EEIE TOIE INTE RBIE TOIF


bit 6

bit 5

bit 4

bit 3

bit 2

INTF

RBIF

bit1

bit0

R = bit de lectura
W = bit de escritura
-n = Valor del bit despus de un Reset

bit 0 RBIF: flag () de estado del Port B


1:Cuando cambia de estado cualquier lnea de PB (RB<7:4>). Se borra por
software
0:Ninguna entrada de PB ha cambiado
bit 1 INTF: flag () de estado de la interrupcin externa INT
1:La entrada de la interrupcin se ha activado. Se borra por software
0:No hay interrupcin externa
bit 2 T0IF: flag () de rebosamiento del TMR0
1: El TMR0 se ha desbordado. Se borra por software
0: El TMR0 no se ha desbordado
bit 3 RBIE: Activacin de la interrupcin del Port B
1: Interrupcin activada
0: Interrupcin desactivada
bit 4 INTE: Activacin de la interrupcin externa INT
1: Interrupcin activada
0: Interrupcin desactivada

bit 5 T0IE: Activacin de la interrupcin del TMR0


1: Interrupcin activada
0: Interrupcin desactivada
bit 6 EEIE: Activacin de la interrupcin de la memoria EEPROM
1: Interrupcin activada
0: Interrupcin desactivada
bit 7 GIE: Activacin Global de Interrupciones
1: Concedido el permiso de interrupciones
0: No hay posibilidad de interrupciones

Registro de Interrupciones EEDATA (POSICIN 08h ):


En el registro EEDATA, se encuentra en la posicin 08h del banco 1; tiene misiones de control de las
operaciones en la EEPROM y la distribucin de sus bits se presenta en la siguiente tabla se muestra la
estructura de cada uno de sus 8 bits

bit 7

bit 6

bit 5

R = bit de lectura
W = bit de escritura
S = bit no implementado se lee como 0
-n = Valor del bit despus de un Reset

R/W-0

R/W-0

R/W-0

EEIF WRERR WREN WR

RD

bit 4

R/W-x

bit 3

R/W-0

bit 2

bit1

bit0

bit 0: RD, Lectura


Se pone a 1 cuando se va a realizar un ciclo de lectura de la EEPROM, luego pasa a 0
automticamente.
bit 1: WR, Escritura
Se pone a 1 cuando comienza el ciclo de escritura de la EEPROM
Se pone a 0 cuando finaliza el ciclo de escritura de la EEPROM
bit 2: WREN, Permiso de escritura
1 = Permite la escritura de la EEPROM
0 = Prohibe la escritura de la EEPROM
bit 3:WRWRR, Sealizador de error de escritura
1 = Se pone a 1 cuando una operacin de escritura ha terminado prematuramente
0 = La operacin de escritura se ha completado correctamente
bit 4:EEIF, Sealizador de final de operacin de escritura
1= La operacin de escritura se ha completado con xito
0 = La operacin de escritura no se ha completado

PATILLAJE DEL PIC16C84


El microcontrolador PIC16C84 es un chip que como puede apreciarse en la
figura siguiente, dispone de 18 patillas. Seguidamente describiremos cada una de
ellas.

Patillas del Microcontrolador PIC16C84

VSS y VDD: (pines 5 y 14) son respectivamente las patillas de masa y alimentacin. Est
comprendida entre 2V y 6V
OSC1/CLKIN y OSC2/CLKOUT: (pines15 y 16) son los pines de la entrada de cristal/
fuente externa de reloj y salida de oscilador a cristal respectivamente. Los distintos
elementos de la familia 16X84X, dependiendo de la nomenclatura que utilizan tienen
distintas caractersticas de:
* Frecuencia mxima de funcionamiento
* Tipo de oscilador utilizado para generar frecuencias de reloj
* Margen de la tensin de alimentacin.
Los modelos que contienen las letras C, F o CR admiten tensiones de alimentacin
comprendidas entre 4V y 4,5V como mnimo hasta 5,5V a 6V como mximo. Los
modelos que contienen las letras LC, LF o LCR admiten desde 2V a 6V.
Los microcontroladores PIC, permiten cuatro tipos de osciladores externos para
aplicarles la frecuencia de funcionamiento. Durante el proceso de grabacin, antes de
introducir el programa en memoria, debe indicarse el tipo de oscilador empleado en los
bits FSOC1 y FSOC2 de la Palabra de Configuracin. Los tipos de osciladores que puede
utilizar nuestro microcontrolador son:
* Oscilador de cristal o resonador de alta velocidad "HS"(High Speed

Crytal/Resonator):Es un oscilador una frecuencia comprendida entre 4MHz y 20MHz.


* Oscilador o resonador cermico "XT" (Crystal/Resonator): Se trata de un oscilador
estndar que permite una frecuencia de reloj comprendidas entre 100KHz y 4 MHz.
* Oscilador de cristal de cuarzo o resonador cermico de baja potencia "LP" (Low
Power Crystal): Se trata de un oscilador de bajo consumo con un cristal o resonador
diseado para trabajar con frecuencias comprendidas entre 32KHz y 200KHz.
El circuito para cualquiera de las configuraciones anteriores se representa en la
siguiente figura y depende de los valores de C1, C2 y del cristal para el buen
funcionamiento del mismo. Se recomienda ver la tabla de datos del fabricante.

Oscilador a cristal para el PIC16CXX valido para la configuracin HS, XT y LP, la resistencia RS
solo es necesaria para algunas versiones del tipo HS.

* Oscilador tipo "RC": Es un oscilador de bajo coste formado por una red RC. Su
circuito de aplicacin es el que se muestra en la siguiente figura Se trata de un oscilador
de baja precisin que depende de la estabilidad de la red RC, pero como contrapartida
est su bajo precio que lo hace interesante para muchas aplicaciones.

Oscilador R-C externo conectado al pin OSC1/CLKIN , donde Rext. Debe ser un valor comprendido
entre 5KW y 10KW

MLCR /Vpp: (pin 4) Entrada de Reset si est a nivel bajo y entrada de la tensin de
programacin cuando se est programando el dispositivo. Ms adelante veremos como se
realiza el reset del microcontrolador y que formas hay de hacerlo.
RA0-RA4/TOCK1 : (Pines 17,18,1,2 y 3 respectivamente) Corresponden a cuatro
lneas bidireccionales de E/S del PORTA. Es capaz de entregar niveles TTL cuando la
tensin de alimentacin aplicada en VDD es de 5V 5%. El pin RA4, si se programa
como salida es de colector abierto. Como entrada puede programarse en funcionamiento
normal o como entrada del contador/temporizador TMR0.
RB0-RB7: (Pines 6,7,8,9,10,11,12 y 13 respectivamente) Corresponden a ocho lneas
bidireccionales de E/S del PORTB. Es capaz de entregar niveles TTL cuando la tensin
de alimentacin aplicada en VDD es de 5V 5%. RB0 puede programarse adems como
entrada de interrupciones externas INT. Los pines RB4 a RB7 pueden programarse para
responder a interrupciones por cambio de estado. La patilla RB6 y RB7 corresponden con
las lneas de entrada de reloj y entrada de datos respectivamente, cuando est en modo
programacin.