FACULTAD TECNOLOGICA
APUNTES
Tecnologa Digital y Microprocesadores
Versin: Primer Semestre 2007
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 .....
Para el sistema de numeracin binaria, valen las dos reglas prcticas siguientes:
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
256
128
64
32
16
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
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
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.
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,
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
Bus de datos
Bus de direcciones
Bus de control
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 .
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.
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.
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.
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.
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
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.
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:
Vout
*V 1
*V 2
*V 3
* V 4 .......................
*V 8
R2
R3
R4
R8
R1
una compuerta de tres estados que permite que esta unidad se conecte con el bus de datos
de un sistema microprocesador.
el nmero de
Es un nmero
bits, pero la
ya no sea un
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
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:
Contador de programa
Registro de instrucciones
Decodificador
Reloj
Secuenciador
Circuito operacional
Registros de entrada (REN)
Registro acumulador
Registro de estado que contiene (flags o banderas)
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:
Por ejemplo, una instruccin que sume dos nmeros est formado por:
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.
Fase de bsqueda
Fase de ejecucin
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.).
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
Procesador
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
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 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
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.
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.
Pentium Pro
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
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
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.
(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.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.
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.
Pude usar los registros de propsito general para suma y resta de cifras de 8, 16 o
32 bits.
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.
Por lo tanto, la localidad real de memoria del byte referido por la instruccin es
04622H;
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
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.
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.
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).
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
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.
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.
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
.....
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.
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:
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
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.
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
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.
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
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
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.
------
------
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
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.
MNEMNICO
DESCRIPCIN
CDIGO OP
FLAGS
AFECTADOS
NOTAS
(W)+(f) (destino)
C, DC, Z
1,2
ANDWF f,d
1,2
CLRF f
00 (f)
CLRW
00 (W)
1,2
COMF f,d
1,2
DECF f,d
(f)-1 destino
1,2,3
Ninguno
1,2
1,2,3
DECFSZ f,d
INCF f,d
INCFSZ f,d
Ninguno
1,2
IORWF f,d
1,2
MOVF f,d
Mueve f destino
MOVWF f
(W) (f)
Ninguno
1,2
NOP
No operacin
Ninguno
1,2
RLF f,d
1,2
RRF f,d
1,2
1,2
SUBWF f,d
(f)(W) (destino)
C,DC,Z
SWAPF f,d
Ninguno
XORWF f,d
Ninguno
1,2
BSF f,b
Ninguno
1,2
BTFSC f,b
Ninguno
BTFSS f,b
Ninguno
(W)+ K (W)
C,DC,Z
ANDLW K
CALL K
Llamada a subrutina
CLRWDT
Ninguno
GOTO K
Go To direccin
IORLW K
(W) OR K (W)
Ninguno
MOVLW K
K (W)
Ninguno
RETFIE
Ninguno
RETLW K
Ninguno
RETURN
C,DC,Z
SLEEP
Modo Standby
SUBLW K
K (W) W
XORLW K
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
kkkk
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
Registro de STATUS
PA2
PA1
ffff
PA0
TO#
PD#
DC
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
EJEMPLO:
HERE BTFSC FLAG,1
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
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
Palabras
1
Ciclos
2
Cdigo de
Operacin
Descripcin
10
0kkk
kkkk
kkkk
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
EJEMPLO:
Si antes de la instruccin.
PC = direccin HERE
Al ejecutarse:
PC = direccin (THERE)
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
ffff
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
0011
CLRW
CLRWDT
CLRWDT
Clear Watchdog Timer
Operacin
Sintaxis
[Etiqueta] CLRWDT
Operadores
No tiene
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin
00
0000
0110
0100
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
CLRWDT
COMF
COMF
Complement f
Operacin
(f#) -----> (dest)
Sintaxis
Operadores
Palabras
1
Ciclos
1
Cdigo de
Operacin
Descripcin
00
1001
dfff
ffff
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
COMF REG1,0
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
DECF CNT,1
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
EJEMPLO:
GOTO LOOP
ffff
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
EJEMPLO:
GOTO THERE
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
EJEMPLO:
ffff
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
Registro de STATUS
PA2
PA1
kkkk
PA0
TO#
PD#
DC
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
IORWF RESUL,0
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
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
MOVF FSR,0
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
EJEMPLO:
MOVWF OPTION
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
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
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
EJEMPLO:
kkkk
CALL TABLA
;W contiene tabla
; el valor offset
TABLA: ADDWF PC
RETLW k1
;W = offset
; Nueva Tabla
RETLW k2
.
.
.
RETLW kn
;Fin de 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
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
EJEMPLO:
RLF REG1,0
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
EJEMPLO:
RRF REG1,0
SLEEP
SLEEP
Sleep
Operacin
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
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
EJEMPLO:
SUBWF REG1,1
SWAPF
SWAPF
Swap Nibbles in f
Operacin
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
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
Registro de STATUS
PA2
PA1
kkkk
PA0
TO#
PD#
DC
XORLW 0xAF
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
Registro de STATUS
PA2
PA1
PA0
TO#
PD#
DC
EJEMPLO:
XORWF REG1,1
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
2.
3.
4.
5.
6.
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
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
goto ESPERA
EEPROM
bcf STATUS,RP0
;Selecciona banco 0
movf EEDATA,W
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
;Selecciona el banco 0
movlw MEN1
movwf EEADR
EEADR
movlw DATO1
;Escribe la direccin en
movwf EEDATA
EEDATA
bsf STATUS,RP0
;Selecciona el banco 1
movlw 0xaa ;
movwf EECON2
eecon2
;Se escribe AA h en
bsf EECON1,WR
;Comienza la escritura
ESPERA:
btfsc EECON1,WR
escritura
goto ESPERA
bcf STATUS,R0
;Selecciona el banco 0
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit1
bit0
BANCO DE REGISTROS 0
00h
INDF
01h
TMR0
02h
PCL
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
08h
09h
EEADR
0Ah
PCLATH
--
--
--
0Bh
INTCON
GIE
EEIE
TOIE
RBIE
BANCO DE REGISTROS 1
Contenido utilizado de FSR a la direccin de memoria de datos (no es
un registro fsico)
80h
INDF
81h
82h
PCL
TOSE
PSA
PS2
PS1
PS0
83h
STATUS
84h
FSR
85h
TRISA
86h
TRISB
87h
IRP
RP1
RP0
T0#
PD#
DC
--
--
88h
EECON1
--
--
--
89h
EECON2
8Ah
PCLATH
--
--
--
8Bh
INTCON
GIE
EEIE
TOIE
EEIF
WRERR WRWN WR
RD
RBIE
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
R/W-1
R/W-1
R/W-1
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
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
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
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 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
RD
bit 4
R/W-x
bit 3
R/W-0
bit 2
bit1
bit0
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
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.