Vous êtes sur la page 1sur 31

Unidad 5.

"Arquitecturas Embebidas y Microcontroladores"

Antes de entrar al tema se explicara lo que es un sistema embebido.

Sistema Embebido
Un sistema embebido (anglicismo "embedded") o empotrado es un sistema de
computacin diseado
para
realizar
una
o
algunas
pocas
funciones
dedicadas frecuentemente en un sistema de computacin en tiempo real . Al contrario de
lo que ocurre con los ordenadores de propsito general (como por ejemplo
una computadora personal o PC) que estn diseados para cubrir un amplio rango de
necesidades, los sistemas embebidos se disean para cubrir necesidades especficas. En
un sistema embebido la mayora de los componentes se encuentran incluidos en la placa
base (la tarjeta de vdeo , audio, mdem , etc.).
Y tambin lo que es un microcontrolador:

Un microcontrolador (abreviado C, UC o MCU) es un circuito integrado programable,


capaz de ejecutar las rdenes grabadas en su memoria.
Est compuesto de varios bloques funcionales, los cuales cumplen una tarea especfica.
Un micro controlador incluye en su interior las tres principales unidades funcionales de
una computadora:
Unidad central de procesamiento , memoria y perifricos de entrada/salida .
Tipos de Microcontroladores
Los microcontroladores se pueden clasificar en:
Microcontroladores embebidos de 8 bits.
Microcontroladores de 16-32 bits
Procesadores de seales digitales (DSP)

Fabricantes de microcontroladores
INTEL 8048 8051 80C196 80386
MOTOROLA 6805 68HC11 68HC12
HITACHI HD64180
PHILIPS 8051 (si es el de Intel)
SGS-THOMSON ST62XX
NATIONAL Semiconductor COP400 COP800
ZILOG Z8 Z86XX
TEXAS INSTRUMENT TMS370
TOSHIBA 68HC11 (si, el de Motorola)
MICROCHIP serie PIC
ATMEL 8051 - AT91SAM - AVR - AVR32

5.1 Organizacin del Microcontrolador.


Microcontroladores de 8 y 16 bits
Los microcontroladores de 8 bits dominan el mercado. La razn de esta tendencia es que
los microcontroladores 8 bits son apropiados para la gran mayora de las aplicaciones, lo
que hace absurdo emplear micros ms potentes y consecuentemente ms caros. Uno de
los sectores que ms tira del mercado del microcontrolador es el mercado automovilstico
Un micro de 8 bits puede hacer operaciones lgicas y aritmticas con operandos (datos)
de hasta 8 bits con solo una instruccin, algo anlogo suceder con los otros
Por ejemplo: El Motorola MC6800.
En cambio un micro de 16 bits maneja palabras del doble de capacidad, esto te permite
manejar valores numricos ms grandes en una sola operacin (de 0 a 65535 o FFFFh)
hacindolo un poco ms rpido en ese tipo de operaciones, y uno de 32 bits maneja
valores hasta de 4,294,967,295 (0 a FFFFFFFFh) en una sola operacin

La familia PIC se divide en cuatro gamas, gamas que podemos llamar mini, baja, media y
alta. Las principales diferencias entre estas gamas radica en el nmero de instrucciones y
su longitud, el nmero de puertos y funciones, lo cual se refleja en el encapsulado, la
complejidad interna y de programacin, y en el nmero de aplicaciones
Los modelos 12C5xx pertenecen a esta gama, siendo el tamao de las instrucciones de 12
bits; mientras que los 12C6xx son de la gama media y sus instrucciones tienen 14 bits. Los
modelos 12F6xx poseen memoria Flash para el programa y EEPROM para los datos.
Algunos modelos disponen de conversores Analgico/Digital de 8 bits incorporados.

La gama baja o bsica consiste en una serie de PIC de recursos limitados, pero con
una de la mejores relaciones coste/prestaciones de la familia. Sus versiones estn
encapsuladas con 18 y 28 patitas y pueden alimentarse a partir de una tensin de
2,5 V, lo que les hace ideales en las aplicaciones que funcionan con pilas teniendo
en cuenta su bajo consumo (menos de 2 mA a 5 V y 4 MHz). Tienen un repertorio
de 33 instrucciones cuyo formato consta de 12 bits. Al igual que todos los
miembros de la familia PIC16/17, los componentes de la gama baja se caracterizan
por poseer los siguientes recursos: Sistema Power On Reset, Perro guardin
(Watchdog o WDT), Cdigo de proteccin, etc.

La denominada gama media es la ms variada y completa de los PIC. Abarca


modelos con encapsulado desde 18 hasta 68 pines, cubriendo varias opciones que
integran abundantes perifricos. Dentro de esta gama se halla el famoso PIC16F84,
quizs el modelo ms utilizado en la historia de los microcontroladores, aunque ya
se lo considera obsoleto.

Encuadrado en la gama media tambin se halla la versin PIC14C000, que soporta el


diseo de controladores inteligentes para cargadores de bateras, pilas pequeas, fuentes
de alimentacin y UPS y cualquier sistema de adquisicin y procesamiento de seales que
requiera gestin de la energa de alimentacin. Los PIC 14C000 admiten cualquier
tecnologa de las bateras como Li-Ion, NiMH, NiCd, Ph y Zinc.
La gama alta dispone de chips con 58 instrucciones de 16 bits en el repertorio y que
disponen de un sistema de gestin de interrupciones vectorizadas muy potente.
Tambin incluyen variados controladores de perifricos, puertos de comunicacin serie y
paralelo con elementos externos, un multiplicador hardware de gran velocidad y mayores
capacidades de memoria, que alcanza los 8 k palabras en la memoria de instrucciones y
454 bytes en la memoria de datos.
Microcontroladores de 8 bits
Todos los recursos necesarios estn incluidos en el chip.
Solo necesitan alimentacin y reloj.

Proporcionan control e interfaz con dispositivos externos de manera econmica y


programable.

Microcontroladores de 8 bits
Disponen de:
Reset
Reloj
Procesador
Memoria ROM para el programa e interfaz de programacin
Memoria RAM para variables.
I/O Pins.
Adicionalmente pueden incluir:
Capacidad de debugging
Interrupciones
I/O analgica
Comunicacin serial y/o paralela
Interfaz con memoria

FAMILIAS DE INTEL, MOTOROLA Y MICROSYSTEM

Familias Intel:
podemos mencionar como referencia histrica, a la familia MCS-48 compuesta
principalmente por el 8048AH.

Los microcontroladores de esta familia poseen una CPU de 8 bits, 27 lneas de Entrada /
Salida, un Temporizador / contador (Timer /Counter) programable. Dependiendo del
modelo
(8050, 8049,8048) poseen respectivamente 256, 128 o 64 bytes de RAM esttica. Existen
en versiones ROM, EPROM, Flash.
Alguno de los microcontroladores, no poseen memoria para almacenamiento de cdigo
ejecutable, entonces se reservan algunas lneas de Entrada / Salida para armar los tres

buses necesarios (direcciones, datos y control), de esta forma el programa puede ser
almacenado en cualquier memoria internas (ROM, EPROM, E2PROM, FLASH, NVRAM,
etc.) y accedido por estos buses.
Ms recientemente encontramos a la familia MCS-51, quizs la ms prolfica en su
momento, ya que un gran nmero de fabricantes de hardware y software implementaron
sistemas sobre la base de esta familia de microcontroladores y una gran cantidad de
herramientas de desarrollo como compiladores de lenguaje C, simuladores, emuladores
en tiempo real3 ICEs (In Circuit Emulators), etc. Debido a que este apunte est orientado
en particular al estudio de esta familia, no la trataremos en detalle por ahora, lo que
podemos agregar es que no existe compatibilidad con su antecesor (MCS-48) a nivel
software o hardware, si bien existe algunos programas (bastante primitivos, por cierto)
para convertir cdigo de MCS-48 a MCS-51.

Caractersticas

| Beneficios |

CPU de 8-bit optimizada para control de eventos | Eficiencia en el diseo de control de


eventos |
Procesamiento booleano
|

| Facilidad.simple manipulacin de bit

Memoria on-chip (32K) | Soluciones.Hace posible diseos en una sola pastilla


Perifricos on-chip (timer/contador, puerto serial, PCA, etc.)
posible diseos de bajo costo con puertos de I/O
|

| Alta integracin. Hace

INTEL (La familia 8051)


8051 es el primer microcontrolador de la familia introducida por Intel Corporation. La
familia 8051 de microcontroladores son controladores de 8 bits capaces de direccionar
hasta 64 Kbyte de memoria de programa y una separada memoria de datos de 64 Kbyte.
El 8031(la versin sin ROM interna del 8051, siendo esta la nica diferencia) tiene 128
bytes de RAM interna (el 8032 tiene RAM interna de 256 bytes y un temporizador
adicional). El 8031 tiene dos temporizadores/contadores, un puerto serie, cuatro puertos

de entrada/salida paralelas de propsito general (P0, P1, P2 y P3) y una lgica de control
de interrupcin con cinco fuentes de interrupciones. Al lado de la RAM interna, el 8031
tiene varios Registros de Funciones especiales (SFR) (Special Function Registers) que son
para control y registros de datos. Los SFRs tambin incluyen el registro acumulador, el
registro B, y el registro de estado de programa (Program Status Word)(PSW), que
contienen los Flags del CPU.
Bloques separados de memoria de cdigo y de datos se denomina como la Arquitectura
Harvard. El 8051 tiene dos seales de lectura separadas, los pines RD(P3.7, pin 17) y
PSEN(pin 29).
El primero es activado cuando un byte va ser ledo desde memoria de datos externo; el
otro, cuando un byte va ser ledo desde memoria de programa externo. Ambas de estas
seales son seales activas en nivel bajo.

Familias Motorola:
Al igual que en el campo de los microprocesadores, existe una batalla comercial y un
mercado que se reparten fundamentalmente entre Intel y Motorola en lo que a
Microcontroladores se refiere. Motorola posee una familia de microcontroladores 6805
de bajo costo, muy popular y con el que tambin se han desarrollado infinidad de
aplicaciones y herramientas, quizs con ms variedad de integrantes en su familia que los
Intel. Esta familia cuenta con versiones ROM, EPROM, E2PROM y flash.
Una de las particularidades de esta familia es que sus integrantes son autocontenidos, es
decir que se debern utilizar exclusivamente los recursos internos ya que no disponen de
buses de expansin y por ende no pueden conectarse memorias ni de datos ni de
programa externas.
Otra familia importante y ms reciente es la de los Microcontroladores 68HC11,
razonablemente compatible con sus antecesores, incorporando a diferencia que sus
hermanos menores, conversores A/D multiplexados, versiones OTP (One Time
Programmable), mayor cantidad de memoria para programas y datos, circuito de
Watchdog4, ms cantidad de temporizadores y ms funcionales, etc.
La familia Motorola 68HC11 (abreviado HC11 o 6811) es una familia de
microcontroladores de Motorola, derivada del microprocesador Motorola 6800. Los
microcontroladores 68HC11 son ms potentes y costosos que los de la familia 68HC05 y se
utilizan en mltiples dispositivos empotrados. El ms ocupado de 32 bits es:
El Freescale ColdFire es un microprocesador de arquitectura de 68k fabricado para
desarrollo de sistemas integrados por Freescale (anteriormente el sector dedicado a
semiconductores de Motorola).

Familias COP de National:


National Semiconductor posee unas familias de Microcontroladores de 4, 8 y 16 bits que
denominaron COPS. Una caracterstica interesante de estas familias es la utilizacin de un
bus especial para perifricos compatibles con dicha familia (conversores varios, memorias
no voltiles, etc.) llamado bus Microwire.

Familias Microchip PIC.


La caracterstica principal de esta familia es que el microprocesador de estos
microcontroladores es tipo RISC (Reduced Instruction Set Computer) conteniendo algo
ms de treinta instrucciones simples y rpidas. Esto los hace mucho ms rpidos y con un
cdigo ms compacto (y repertorio de instrucciones ms fcil de manejar) que los de tipo
CISC (Complex Instruction Set Computer) pertenecientes a otros fabricantes.
Existe compatibilidad de cdigo entre los distintos integrantes de la familia, teniendo
como atractivo trascendente su muy bajo costo y disponibilidad de compiladores de libre
disponibilidad as como programadores fcilmente armables por el usuario.
5.2 CONJUNTO DE INSTRUCCIONES Y LENGUAJE ENSAMBLADOR
Conjunto de instrucciones
Un conjunto
de
instrucciones o repertorio
de
instrucciones, juego
de
instrucciones o ISA (del ingls Instruction Set Architecture, Arquitectura del Conjunto de
Instrucciones) es una especificacin que detalla las instrucciones que una CPU de un
ordenador puede entender y ejecutar, o el conjunto de todos los comandos
implementados por un diseo particular de una CPU. El trmino describe los aspectos del
procesador generalmente visibles a un programador, incluyendo los tipos de datos
nativos, las instrucciones, los registros, la arquitectura de memoria y las interrupciones,
entre otros aspectos.
Existe principalmente de 3 tipos: CISC (Complex Instruction Set Computer), RISC (Reduced
Instruction Set Computer) y SISC (Simple Instruction Set Computing).
La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para distinguir este
conjunto de caractersticas de la microarquitectura, que son los elementos y tcnicas que
se emplean para implementar el conjunto de instrucciones. Entre estos elementos se
encuentran las microinstrucciones y los sistemas de cach.

Procesadores con diferentes diseos internos pueden compartir un conjunto de


instrucciones; por ejemplo, el Intel Pentium y AMD Athlon implementan versiones casi
idnticas del conjunto de instrucciones x86, aunque tienen diseos diferentes.

Implementacin del conjunto de instrucciones


Cualquier conjunto de instrucciones se puede implementar de varias maneras. Todas las
maneras de implementar un conjunto de instrucciones dan el mismo modelo programado,
y todas pueden hacer funcionar los mismos ejecutables binarios. Las varias maneras de
implementar un conjunto de instrucciones dan diversas compensaciones entre el coste, el
funcionamiento, el consumo de energa, el tamao, el etc.
Al disear microarquitecturas, los ingenieros usaron bloques de circuitos electrnicos
duramente-conectados (diseado a menudo por separado) por ejemplo, los
multiplexores, los contadores, los registros, ALUs etc. Un cierto tipo del lenguaje de
transferencia de registros es a menudo usado para describir la codificacin y la secuencia
de cada instruccin de ISA usando esta microarquitectura fsica.
Hay tambin algunos nuevos diseos de CPU que compilan el conjunto de instruccin a
una RAM escribible o FLASH dentro de la CPU (tal como el procesador Recursiv y el Imsys
Cjip), o FPGA (computacin reconfigurable). Western Digital MCP-1600 es un ejemplo
antiguo, usando una ROM dedicada, separada del microcdigo.
ISA se puede tambin emular en software por un intrprete. Naturalmente, debido a la
interpretacin de overhead, es ms lento que ejecutar programas directamente sobre el
hardware emulado. Hoy, es prctica para los vendedores de nuevos ISAs o
microarchitectures poner emuladores del software a disposicin de los desarrolladores de
programas informticos antes de que la implementacin del hardware est lista.
Los detalles de la implementacin tienen una influencia fuerte en las instrucciones
particulares seleccionadas para el conjunto de instruccin. Por ejemplo, muchas
implementaciones de la instruccin pipline permiten solamente una carga de memoria
(load) o almacn en memoria (store) por instruccin, llevando a carga-almacena
arquitectura (RISC). Por otro ejemplo, algunas maneras de implementar la instruccin
pipline llevaron a una ranura de retardo.
La demanda de procesamiento de seal digital de alta velocidad han empujado en el
sentido contrario, forzando la implementacin de instruccin de manera particular. Por
ejemplo, para realizar los filtros digitales es bastante insuficiente, la instruccin del MAC

en un procesador tpico de seal digital (DSP) se debe implementar usando una


arquitectura de Harvard que pueda traer una instruccin y dos palabras de datos
simultneamente, y requiere un solo ciclo.

Diseo del conjunto de instrucciones


La densidad del cdigo
En computadoras antiguas, la memoria del programa era costosa, as que minimizar el
tamao de un programa para asegurar que va a caber en la memoria limitada era a
menudo central. As el tamao combinado de todas las instrucciones necesit realizar una
tarea particular, la densidad del cdigo, era una caracterstica importante de cualquier
sistema de instruccin. Las computadoras con alta densidad del cdigo tambin tenan a
menudo instrucciones complejas para la entrada del procedimiento, los retornos
parametrizados, los lazos etc. Sin embargo, " instrucciones CISC" combinan simplemente
una operacin bsica de la ALU, tal como " add", con el acceso de uno o ms operandos
en memoria (usando modos de direccin tales como directo, indirecto, indexado). Ciertas
arquitecturas pueden permitir dos o tres operandos (incluido el resultado) directamente
en memoria o pueden permitir realizar funciones tales como el incremento automtico
del puntero.
RISC, fueron los primeros implementados con profundidad en el perodo de rpido
crecimiento de las memorias de subsistemas, se reduce el cdigo con el fin de simplificar
el circuito de aplicacin y con ello tratar de aumentar el rendimiento a travs de las
frecuencias de reloj ms elevadas y el uso de ms registros. Las instrucciones RISC suelen
realizar slo una operacin, como una "suma" de registros o una "carga" de una posicin
de memoria en un registro, tambin suelen utilizar una longitud de instrucciones fijas,
mientras que un conjunto de instrucciones tpicas CISC tiene instrucciones muchos ms
cortas que esta longitud fija. Las instrucciones de longitud fija son menos complicadas de
manejar que las instrucciones de ancho variable, por varias razones (por ejemplo: no tener
que comprobar si una instruccin se extiende a ambos lados de una lnea de cach o el
lmite de memoria virtual de la pgina), y por lo tanto algo ms fcil de optimizar la
velocidad . Sin embargo, como los equipos RISC normalmente requieren ms y ms para
implementar las instrucciones que ejecutan una determinada tarea, hacen menos ptimo
el uso del ancho de banda y de la memoria cach.
Las computadoras mnimas del conjunto de instrucciones (MISC) son una forma de
mquina apilada, donde hay pocas instrucciones separadas (16-64), para poder caber
instrucciones mltiples en una sola palabra de mquina. stos tipo de ncleos llevan a

menudo poco silicio para implementarse, as que pueden ser observadas fcilmente en un
FPGA o en una forma multinucleo. La densidad del cdigo es similar al RISC; la densidad
creciente de la instruccin es compensada requiriendo ms de las instrucciones primitivas
de hacer una tarea.
Nmero de operandos
El conjunto de instrucciones puede ser clasificado por el nmero mximo de operandos
explcitamente especificados en las instrucciones. (en los ejemplos que siguen, a, b y c se
refieren a celdas de memoria, mientras que reg1 y sucesivos se refieren a los registros de
la mquina).
0-operando, tambin llamada mquina de pila: todas las operaciones aritmticas se
ejecutan en la parte superior de una o dos posiciones de la pila, push y pop son las
instrucciones utilizadas para acceder a la memoria: push a, push b, add, pop c.
1-operando (mquinas de una direccin), tambin llamadas mquinas de acumulador,
incluida en la mayora de las primeras computadoras y muchos microcontroladores
pequeos: la mayora de instrucciones especifican un operando explcito a la derecha (un
registro, una posicin de memoria, o una constante) y un operando a la izquierda: load a,
add b, store c.
2-operando la mayora de las mquinas CISC y RISC entran en esta categora: CISC load
a, reg1, add reg1, b; store reg1, c RISC - cargas que requieren la memoria explcita, las
instrucciones seran: load a,reg1; load b,reg2; add reg1,reg2; store reg2,c
3-operando, permite una mejor reutilizacin de los datos: CISC - bien una sola instruccin:
add a, b, c, o ms generalmente: move a,reg1; add reg1,b,c como la mayora de las
mquinas se limitan a dos operandos de memoria. RISC - Debido a la gran cantidad de bits
necesarios para codificar los tres registros, este esquema no suele estar disponible en los
procesadores RISC con pequeas instrucciones de 16 bits: load a,reg1; load b,reg2; add
reg1+reg2->reg3; store reg3,c;
ms operandos, algunas mquinas CISC permiten una variedad de modos de
direccionamiento que permiten ms de 3 operandos (registros o accesos a memoria),
como el VAX "POLY", instruccin de evaluacin de polinomi

Caractersticas que debe tener un conjunto de instrucciones

Las caractersticas que se pretende que tenga un conjunto de instrucciones son cuatro,
principalmente:

Completo: Que se pueda realizar en un tiempo finito cualquier tarea ejecutable


con un ordenador (computable o decidible).

Eficiente: Que permita alta velocidad de clculo sin exigir una elevada complejidad
en su UC y ALU y sin consumir excesivos recursos (memoria), es decir, debe
cumplir su tarea en un tiempo razonable minimizando el uso de los recursos.

Autocontenidas: Esto es, que contengan en s mismas toda la informacin


necesaria para ejecutarse.

Independientes: Que no dependan de la ejecucin de alguna otra instruccin.

Se puede comprobar que para que un conjunto de instrucciones sea completo solo se
necesitan cuatro instrucciones:
-> escritura
-> mover a la izquierda una posicin y leer
-> mover a la derecha una posicin y leer
-> parar
En esta idea se basan las arquitecturas RISC, no obstante, con este conjunto no se puede
conseguir la eficiencia del repertorio de instrucciones por lo que en la prctica el conjunto
suele ser ms amplio en aras de conseguir un mejor rendimiento, tanto en uso de recursos
como en consumo de tiempo.
Tipos de instrucciones y ejemplos

Transferencia de datos: Copian datos de un origen a un destino, sin modificar el


origen y normalmente sin afectar a los flags o indicadores de condicin. Pueden
transferir palabras, fracciones de palabras (bytes, media palabra) o bloques
completos de n bytes o palabras.

Estas operaciones pueden ser:


-> registro - registro
-> registro - memoria
-> memoria - registro

-> memoria - memoria


Nemotcnicos ms frecuentes:

move: copia el contenido de un registro(o memoria) a otro.

store: copia el contenido de un registro a memoria.

load: copia el contenido de una posicin de memoria a un registro.

move block: copia un bloque de datos de una posicin de memoria a otra.

move multiple: copia del origen en varias posiciones de memoria.

exchange: intercambia el contenido de dos operandos.

clear: pone a 0 el destinto. (todos los bits)

set: pone a 1 el destino. (todos los bits)

push: introduce un dato en la cabecera de la pila. (indicada por el SP)

pop: saca un dato de la cabecera de la pila. (indicada por el SP)

Instrucciones aritmticas: Son efectuadas por la ALU y suelen cambiar los flags o
indicadores de condicin.

Nemotcnicos ms frecuentes:

add: Suma.

add with carry: Suma con acarreo.

subtract: Resta.

subtract with borrow: Resta teniendo en cuenta el adeudo anterior.

increment: incrementa en 1 un valor.

decrement: decrementa en 1 un valor.

multiply: multiplica.

divide: divide.

extend: aumenta el operando de tamao.

negate: cambia de signo.

absolute: valor absoluto.

-> Pueden tener instrucciones para tratar con nmeros en BCD e incluyen operaciones en
coma flotante, lo cual se identifica con una 'f' antes del nombre del nemotcnico como por
ejemplo:
fabsolute

Instrucciones de comparacin: Suelen preceder a una instruccin de bifurcacin


condicional y modifican los flags. No hay que pensar que las instrucciones de salto
condicional dependen de este repertorio, ya que lo nico que hace el salto
condicional es consultar los flags y salta si precede, pero no depende de ninguna
instruccin de comparacin. (de hecho cualquier operacin aritmtica realizada
anteriormente a un salto condicional puede provocar que este "salte").

Nemotcnicos ms frecuentes:

compare: Resta los dos operandos pero no almacena el resultado, solo modifica
los flags.

test: compara un cierto valor especificado con el 0.

Instrucciones lgicas: Realizan operaciones booleanas "bit a bit" entre dos


operandos. Como las aritmticas tambin modifican los flags.

Nemotcnicos ms frecuentes:

and: el "y" lgico.

or: el "o inclusivo" lgico.

xor: el "o exclusivo" lgico.

not: la negacin lgica. (complemento a 1, no confundir con el cambio de signo


"negate" que es el complemento a 2)

Instrucciones de Desplazamiento: Pueden ser aritmtico o lgico y pueden incluir


o no rotaciones. Pueden ser de izquierda a derecha.

Nemotcnicos ms frecuentes:

shift: desplazamiento aritmtico o lgico.

rotate: rotacin con o sin acarreo.

Instrucciones de bits: Comprueban un bit del operando y su valor lo reflejan en el


indicador de cero. Pueden poner un bit a 0 o complementarlo.

Nemotcnicos ms frecuentes:

bit test: comprueba un bit.

bit clear: comprueba un bit y lo pone a 0.

bit set: comprueba un bit y lo pone a 1.

Instrucciones de control: Permiten modificar la secuencia normal de ejecucin de


un programa, puede hacerse por salto condicional relativo o absoluto.

Se clasifican en cuatro grupos:


-> salto incondicional
-> salto condicional
-> Llamada a subrutinas
-> Gestin de las interrupciones

saltos: Pueden ser condicionales o incondicionales, se suelen especificar como


jump o brantch, y en el caso de los condicionales se suele llamar jcond o bcond
donde cond es una o ms letras que indican la condicin que ha de cumplirse para
que el salto se produzca.

-> Incondicional: salta sin comprobar ninguna condicin.


Nemotcnicos ms frecuentes: jump o brantch
-> Condicional: salta si la condicin se cumple.
Nemotcnicos ms frecuentes: jcond o bcond

Llamadas a subrutinas: Invoca la ejecucin de funciones anteriormente definidas.

Nemotcnicos ms frecuentes: call (llamada) y ret (retorno)

Gestin de interrupciones: Se usan para llamar a las rutinas de servicio de


interrupcin y esto se puede hacer por hardware o bien por software. Necesita una
instruccin similar a return para retornar al contexto anterior pero restableciendo
el estado de la mquina, para no afectar a la aplicacin a la cual se interrumpi
(iret).

Instrucciones de E/S: Son instrucciones de transferencia salvo que el


origen/destino de dicho flujo es un puerto de un dispositivo de E/S. Estas
instrucciones pueden darse mediante dos alternativas:

->E/S "mapeada" en memoria: Los perifricos tienen direcciones asignadas de la MP por


lo que no se necesitan instrucciones especiales y las operaciones se realizan con las ya
vistas, como son: load, store y move.
->E/S independiente: Necesitan unas instrucciones especiales para indicarle al procesador
que nos estamos refiriendo al mapa de direcciones de E/S, ya que este mapa y el mapa de
memoria son disjuntos.
Nemotcnicos ms frecuentes:

input o read: Pemite leer informacin de un puerto y trasladarla a memoria


principal.

output o write: Permite escribir informacin en un puerto de un dispositivo.

test i/o: Lee informacin de control de un perifrico.

control i/o: Enva informacin de control hacia un perifrico.

Instrucciones de control y miscelneas:


Nemotnicos ms frecuentes:

halt: Detiene la ejecucin del programa hasta que una interrupcin arranca otro
programa.

wait: Sirve para deterner la ejecucin de un programa hasta que sucede un


determinado evento que no es una interrupcin (otra condicin externa al primer
programa).

nop: No realiza ninguna operacin, sirve para rellenar huecos en un programa o


temporizar esperas.

enable: Habilita las interrupciones.

disable: Deshabilita las interrupciones.

test and set: Se utiliza para la implementacin de la exclusin mutua, esto es, que
un procesador no pueda acceder a un determinado recurso que est siendo usado
por otro procesador en ese mismo momento.

Se usan como semforos, esto es, se declara una variable entera que tendr el valor 0 si el
recurso esta libre y 1 si est siendo utilizado, de manera que si un procesador comprueba
y el semforo est en 1 tendr que esperar hasta que este cambie a 0. (1 = s.rojo y 0 =
s.verde).

El lenguaje ensamblador
En el lenguaje ensamblador el programador utiliza instrucciones simblicas en lugar de
instrucciones de mquina y nombres descriptivos para los elementos de datos y para las
localidades de memoria. Usted escribe un programa en ensamblador de acuerdo con un
conjunto estricto de reglas que despus utiliza el programa traductor de ensamblador
para convertir el programa ensamblador en cdigo mquina.
Existen 2 clases de lenguajes de programacin: de alto nivel y de bajo nivel. Los
programadores que escriben en un lenguaje de alto nivel (como C y Pascal), codifican
comandos poderosos, cada uno de los cuales puede generar muchas instrucciones en
lenguaje de mquina. Por otro lado, los programadores que escriben en un lenguaje
ensamblador de bajo nivel codifican instrucciones simblicas, cada una de las cuales
genera una instruccin en lenguaje mquina. A pesar del hecho de que codificar en un
lenguaje de alto nivel es ms productivo, algunas ventajas de codificar en lenguaje
ensamblador son:

Proporciona ms control sobre el manejo particular de los requerimientos de


hardware.

Genera mdulos ejecutables ms pequeos y ms compactos.

Con mayor probabilidad tiene una ejecucin ms rpida.

Una prctica comn es combinar los beneficios de ambos niveles de programacin. Un


lenguaje de alto nivel utiliza un compilador para traducir el cdigo fuente a lenguaje
mquina. Un lenguaje de bajo nivel utiliza un ensamblador para realizar la traduccin.
Un programa en lenguaje ensamblador consiste en un conjunto de enunciados. Los dos
tipos de enunciados o lneas de programacin son:
1.- Instruccin, tal como MOV y ADD, que el ensamblador traduce a cdigo objeto
2.- Directiva, que indican al ensamblador que realice una accin especfica, como definir
un elemento de dato.

El nico lenguaje que entienden los microcontroladores es el cdigo mquina


formado por ceros y unos del sistema binario.
El lenguaje ensamblador expresa las instrucciones de una forma ms natural al
hombre a la vez que muy cercana al microcontrolador, ya que cada una de esas
instrucciones se corresponde con otra en cdigo mquina.
El lenguaje ensamblador trabaja con nemnicos, que son grupos de caracteres
alfanumricos que simbolizan las rdenes o tareas a realizar.

La traduccin de los nemnicos a cdigo mquina entendible por el


microcontrolador la lleva a cabo un programa ensamblador.
El programa escrito en lenguaje ensamblador se denomina cdigo fuente (*.asm).
El programa ensamblador proporciona a partir de este fichero el correspondiente
cdigo mquina, que suele tener la extensin *.hex.

LENGUAJE ENSAMBLADOR

En el lenguaje ensamblador el programador utiliza instrucciones simblicas en


lugar de instrucciones de mquina y nombres descriptivos para los elementos
de datos y para las localidades de memoria. Usted escribe un programa en
ensamblador de acuerdo con un conjunto estricto de reglas que despus
utiliza el programa traductor de ensamblador para convertir el programa
ensamblador en cdigo mquina.
Existen 2 clases de lenguajes de programacin: de alto nivel y de bajo nivel.
Los programadores que escriben en un lenguaje de alto nivel (como C y
Pascal), codifican comandos poderosos, cada uno de los cuales puede generar
muchas instrucciones en lenguaje de mquina. Por otro lado, los
programadores que escriben en un lenguaje ensamblador de bajo nivel
codifican instrucciones simblicas, cada una de las cuales genera una
instruccin en lenguaje mquina. A pesar del hecho de que codificar en un
lenguaje de alto nivel es ms productivo, algunas ventajas de codificar en
lenguaje ensamblador son:

Proporciona ms control sobre el manejo particular de los requerimientos de


hardware.
Genera mdulos ejecutables ms pequeos y ms compactos.
Con mayor probabilidad tiene una ejecucin ms rpida.
Una prctica comn es combinar los beneficios de ambos niveles de
programacin. Un lenguaje de alto nivel utiliza un compilador para traducir el
cdigo fuente a lenguaje mquina. Un lenguaje de bajo nivel utiliza un
ensamblador para realizar la traduccin.
Un programa en lenguaje ensamblador consiste en un conjunto de
enunciados. Los dos tipos de enunciados o lneas de programacin son:

1.- Instruccin, tal como MOV y ADD, que el ensamblador traduce a cdigo
objeto
2.- Directiva, que indican al ensamblador que realice una accin especfica,
como definir un elemento de dato.
CONJUNTO DE INSTRUCCIONES EN LENGUAJE ENSAMBLADOR
ACALL

Llamar Absoluto

AADIR

Aadir Acumulador

ADDC

Aadir acumulador con Carry

AJMP

Salto Absoluto

ANL

Y lgico para las variables byte

ANL bits

Y lgico para las variables de bit

CJNE

Comparar y salta si no es igual

CLR A

Borrar Acumulador

Poco CLR

Claro bits

CPL A

Complementar Acumulador

Poco CPL

Poco Complemento

DA

Decimal Ajuste del acumulador

Diciembre

Disminuye el Registro

DIV

Divide Acumulador por B

DJNZ

Disminuye el Registro y Salta si no es cero

INC

Incrementa el Registro

JB

Saltar si Set Bit

JBC

Saltar si Bit Set y Clear Bit

JC

Saltar si Set Carry

JMP @

Saltar indirecta para abordar

JNB

Saltar si Bit no activado

JNC

Saltar si Lleve Not Set

JNZ

Saltar si Acumulador No Zero

JZ

Saltar si Acumulador Zero

LCALL

Long Call

LJMP

Salto de longitud

MOV

Mueva la variable byte

Poco MOV

Poco Move

MOVC

Mueva Memoria Cdigo

MOVX

Mueva Memoria externa

MUL

Multiplicar por acumulador B

NOP

No Operacin

ORL

OR lgico de variables de tipo Byte

ORL bits

OR lgico de variables de bit

POP

Pop De Pila

PUSH

Empuje en la pila

RET

Regresa de la subrutina

RETI

Regreso de la interrupcin

RL

Gire Acumulador Izquierda

RLC

Gire Acumulador Izquierda travs Carry

RR

Gire Acumulador Derecha

RRC

Gire Acumulador derecha a travs de Carry

SETB

Bit Set

SJMP

Corto Jump

SUBB

Restar de acumulador con Borrow

SWAP

Cambie los acumuladores Nibbles

XCH

Tipo Bytes

XCHD

Dgitos Tipo

XRL

OR exclusivo

??

Instruccin Indefinido

Ventajas y desventajas del Lenguaje Ensamblador


Una vez que hemos visto la evolucin de los lenguajes, cabe preguntarse: En estos tiempos
"modernos", para qu quiero el Lenguaje Ensamblador?
El proceso de evolucin trajo consigo algunas desventajas, que ahora veremos cmo las ventajas
de usar el Lenguaje Ensamblador, respecto a un lenguaje de alto nivel:

Eficiencia de tamao

Flexibilidad

Por otro lado, al ser un lenguaje ms primitivo, el Ensamblador tiene ciertas desventajas respecto
a los lenguajes de alto nivel:

Tiempo de programacin

Programas fuente grandes

Peligro de afectar recursos inesperadamente

Falta de portabilidad

Velocidad
El proceso de traduccin que realizan los intrpretes, implica un proceso de cmputo adicional al
que el programador quiere realizar. Por ello, nos encontraremos con que un intrprete es siempre
ms lento que realizar la misma accin en Lenguaje Ensamblador, simplemente porque tiene
el costoadicional de estar traduciendo el programa, cada vez que lo ejecutamos.
De ah nacieron los compiladores, que son mucho ms rpidos que los intrpretes, pues hacen la
traduccin una vez y dejan el cdigo objeto, que ya es Lenguaje de Mquina, y se puede ejecutar
muy rpidamente. Aunque el proceso de traduccin es ms complejo y costoso que el de
ensamblar un programa, normalmente podemos despreciarlo, contra las ventajas de codificar el
programa ms rpidamente.
Sin embargo, la mayor parte de las veces, el cdigo generado por un compilador es menos
eficiente que el cdigo equivalente que un programador escribira. La razn es que el compilador
no tiene tanta inteligencia, y requiere ser capaz de crear cdigo genrico, que sirva tanto para un
programa como para otro; en cambio, un programador humano puede aprovechar las
caractersticas especficas del problema, reduciendo la generalidad pero al mismo tiempo, no
desperdicia ninguna instruccin, no hace ningn proceso que no sea necesario.
Para darnos una idea, en una PC, y suponiendo que todos son buenos programadores, un
programa para ordenar una lista tardar cerca de 20 veces ms en Visual Basic (un intrprete), y 2
veces ms en C (un compilador), que el equivalente en Ensamblador.
Por ello, cuando es crtica la velocidad del programa, Ensamblador se vuelve un candidato lgico
como lenguaje.
Ahora bien, esto no es un absoluto; un programa bien hecho en C puede ser muchas veces ms
rpido que un programa mal hecho en Ensamblador; sigue siendo sumamente importante la
eleccin apropiada de algoritmos y estructuras de datos. Por ello, se recomienda buscar optimizar
primero estos aspectos, en el lenguaje que se desee, y solamente usar Ensamblador cuando se
requiere ms optimizacin y no se puede lograr por estos medios.
Tamao
Por las mismas razones que vimos en el aspecto de velocidad, los compiladores e intrpretes
generan ms cdigo mquina del necesario; por ello, el programa ejecutable crece. As, cuando es
importante reducir el tamao del ejecutable, mejorando el uso de la memoria y teniendo tambin

beneficios en velocidad, puede convenir usar el lenguaje Ensamblador. Entre los programas que es
crtico el uso mnimo de memoria, tenemos a los virus y manejadores de dispositivos (drivers).
Muchos de ellos, por supuesto, estn escritos en lenguaje Ensamblador.
Flexibilidad
Las razones anteriores son cuestin de grado: podemos hacer las cosas en otro lenguaje, pero
queremos hacerlas ms eficientemente. Pero todos los lenguajes de alto nivel tienen limitantes en
el control; al hacer abstracciones, limitan su propia capacidad. Es decir, existen tareas que la
mquina puede hacer, pero que un lenguaje de alto nivel no permite. Por ejemplo, en Visual Basic
no es posible cambiar la resolucin del monitor a medio programa; es una limitante, impuesta por
la abstraccin del GUI Windows. En cambio, en ensamblador es sumamente sencillo, pues
tenemos el acceso directo al hardware del monitor.
Tiempo de programacin
Al ser de bajo nivel, el Lenguaje Ensamblador requiere ms instrucciones para realizar el mismo
proceso, en comparacin con un lenguaje de alto nivel. Por otro lado, requiere de ms cuidado por
parte del programador, pues es propenso a que los errores de lgica se reflejen ms fuertemente
en la ejecucin.
Por todo esto, es ms lento el desarrollo de programas comparables en Lenguaje Ensamblador que
en un lenguaje de alto nivel, pues el programador goza de una menor abstraccin.
Programas fuente grandes
Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente,
requerimos ms instrucciones primitivas para describirprocesos equivalentes. Esto es una
desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce
la productividad de los programadores.
Peligro de afectar recursos inesperadamente
Tenemos la ventaja de que todo lo que se puede hacer en la mquina, se puede hacer con el
Lenguaje Ensamblador (flexibilidad). El problema es que todo error que podamos cometer, o
todo riesgo que podamos tener, podemos tenerlo tambin en este Lenguaje. Dicho de otra forma,
tener muchopoder es til pero tambin es peligroso.
En la vida prctica, afortunadamente no ocurre mucho; sin embargo, al programar en este
lenguaje vern que es mucho ms comn que la mquina se "cuelgue", "bloquee" o "se le vaya el
avin"; y que se reinicialize. Por qu?, porque con este lenguaje es perfectamente posible (y
sencillo) realizar secuencias de instrucciones invlidas, que normalmente no aparecen al usar un
lenguaje de alto nivel.

En ciertos casos extremos, puede llegarse a sobrescribir informacin del CMOS de la mquina (no
he visto efectos ms riesgosos); pero, si no la conservamos, esto puede causar que dejemos de
"ver" el disco duro, junto con toda su informacin.
Falta de portabilidad
Como ya se mencion, existe un lenguaje ensamblador para cada mquina; por ello,
evidentemente no es una seleccin apropiada de lenguaje cuando deseamos codificar en una
mquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras. Si
bien esto es un problema general a todos los lenguajes, es mucho ms notorio en ensamblador: yo
puedo reutilizar un 90% o ms del cdigo que desarrollo en "C", en una PC, al llevarlo a una
RS/6000 con UNIX, y lo mismo si despus lo llevo a una Macintosh, siempre y cuando est bien
hecho y siga los estndares de "C", y losprincipios de la programacin estructurada. En cambio, si
escribimos el programa en Ensamblador de la PC, por bien que lo desarrollemos y muchos
estndares que sigamos, tendremos prcticamente que reescribir el 100 % del cdigo al llevarlo a
UNIX, y otra vez lo mismo al llevarlo a Mac.

Veamos ahora como se organizan y una breve descripcin de los mismos:


Registro de R de 16 b al que
8 bits
pertenece

Descripcin

AF

Acumulador. El registro ms usado J .

AF

Flags. Indicadores de estado.

BC

Normalmente usado como contador.

BC

DE

DE

HL

HL

HL es ideal para acceder a memoria J .

AF

A alternativo.

AF

F alternativo.

BC

B alternativo.

BC

C alternativo.

DE

D alternativo.

DE

E alternativo.

HL

H alternativo.

HL

L alternativo.

Xh

IX

IX vale para direccionamiento indexado.

Xl

IX

Yh

IY

Yl

IY

"IR"

Registro de interrupcin.

"IR"

Registro de refresco.

PC

Contador del programa.

SP

Contador de la pila.

IY vale para direccionamiento indexado.

A parte de esos, tiene otro dos que son bolanos (1 slo bit), llamados iff0 y iff1 (y al menos otro
registro interno de 8 bits para clculos internos suyos).
Los registros con un <> son alternativos. Digamos que estn en el banquillo esperando que salga
del juego su homlogo para entrar l. No se les puede acceder directamente (habra ms
jugadores de los reglamentarios), pero siempre se puede hacer el cambio (aqu son ilimitados).
Siempre que se produce uno de stos cambios, se intercambia un registro de 16 bits enterito. No
vale cambiar slo uno de 8.

Xh, Yh, Xl, Yl son los registros de 8 bits que conforman IX e IY. Oficialmente, las instrucciones que
operan sobre ellos estn indocumentadas, pero me parece una tontera el no hablar de ellos
desde el principio.
PC contiene el "contador del programa", es decir, la direccin de memoria en la cual
el procesador leer su prxima instruccin
Modos de direccionamiento
Se les llama modos de direccionamiento a las distintas formas de combinar los operadores segn
el acceso que se hace a memoria.
Dicho de otra manera, un modo de direccionamiento ser una forma de parmetro para las
instrucciones. Una instruccin que lleve un parmetro, por lo tanto, usar un modo de
direccionamiento, que depender de cmo direccionar (accesar) al parmetro; una instruccin
de dos parmetros, combinar dos modos de direccionamiento.

Modo registro

Usa solamente registros como operadores


Es el ms rpido, pues minimiza los recursos necesarios (toda la informacin fluye dentro del EU
del CPU).

Modo inmediato

Tiene dos operandos: un registro y una constante que se usa por su valor.
El valor constante no se tiene que buscar en memoria, pues ya se obtuvo al hacer el "fetch" de la
instruccin.
Por tanto, es rpido aunque no tanto como el modo registro; requiere ir al BIU por el dato.

Modo directo

Uno de los operandos involucra una localidad especfica de memoria


El valor constante se tiene que buscar en memoria, en la localidad especificada.
Es ms lento que los anteriores, pero es el ms rpido para ir a memoria, pues ya "sabe" la
localidad, la toma de la instruccin y no la tiene que calcular.

Modo indirecto

Se usan los registros SI, DI como apuntadores


El operando indica una localidad de memoria, cuya direccin (slo la parte desplazamiento) est
en SI o DI.

Es ms lento que los anteriores, pues tiene que "calcular" la localidad.

Modo indexado de base

Formato:
[
BX o BP
+ SI o DI (opcionales)
+ constante (opcional)
]
BX o BP indica una localidad base de la memoria
A partir de BX o BP, se puede tener un desplazamiento variable y uno constante
La diferencia es el segmento sobre el que trabajan por defecto:
BX por defecto en el segmento de datos
BP por defecto en el segmento de pila.

5.3 Caractersticas y uso de elementos del microcontrolador.


Los micro-controlador son diseados para reducir el costo econmico y el consumo de
energa de un sistema en particular. El tamao de la unidad central de procesamiento, la
cantidad de memoria y los perifricos incluidos dependern de la aplicacin.

Puertos de comunicacin.
Puerto serie
Este perifrico est presente en casi cualquier microcontrolador, normalmente en forma
de UART (Universal Asynchronous Receiver Transmitter) o USART (Universal Synchronous
Asynchronous Receiver Transmitter) dependiendo de si permiten o no el modo sincrnico
de comunicacin.

El destino comn de este perifrico es la comunicacin con otro microcontrolador o con


una PC y en la mayora de los casos hay que agregar circuitos externos para completar la
interfaz de comunicacin. La forma ms comn de completar el puerto serie es para
comunicarlo con una PC mediante la interfaz EIA-232 (ms conocida como RS-232), es por
ello que muchas personas se refieren a la UART o USART como puerto serie RS-232, pero
esto constituye un error, puesto que este perifrico se puede utilizar para interconectar
dispositivos mediante otros estndares de comunicacin.
SPI
Este tipo de perifrico se utiliza para comunicar al microcontrolador con otros
microcontroladores o con perifricos externos conectados a l, por medio de una interfaz
muy sencilla. Hay solo un nodo controlador que permite iniciar cualquier transaccin, lo
cual es una desventaja en sistemas complejos, pero su sencillez permite el aislamiento
galvnico de forma directa por medio de opto acopladores.
I2C
Cumple las mismas funciones que el SPI, pero requiere menos seales de comunicacin y
cualquier nodo puede iniciar una transaccin. Es muy utilizado para conectar las tarjetas
grficas de las computadoras personales con los monitores, para que estos ltimos
informen de sus prestaciones y permitir la autoconfiguracin del sistema de vdeo.

USB
Los microcontroladores son los que han permitido la existencia de este sistema de
comunicacin. Es un sistema que trabaja por polling (monitorizacin) de un conjunto de
perifricos inteligentes por parte de un amo, que es normalmente un computador
personal. Cada modo inteligente est gobernado inevitablemente por un
microcontrolador.
Temporizadores y contadores
Son circuitos sincrnicos para el conteo de los pulsos que llegan a su poder para conseguir
la entrada de reloj. Si la fuente de un gran conteo es el oscilador interno del
microcontrolador es comn que no tengan un pin asociado, y en este caso trabajan como
temporizadores. Por otra parte, cuando la fuente de conteo es externa, entonces tienen
asociado un pin configurado como entrada, este es el modo contador.
Los temporizadores son uno de los perifricos ms habituales en los microcontroladores y
se utilizan para muchas tareas, como por ejemplo, la medicin de frecuencia,
implementacin de relojes, para el trabajo de conjunto con otros perifricos que
requieren una base estable de tiempo entre otras funcionalidades. Es frecuente que un
microcontrolador tpico incorpore ms de un temporizador/contador e incluso algunos
tienen arreglos de contadores. Como veremos ms adelante este perifrico es un
elemento casi imprescindible y es habitual que tengan asociada alguna interrupcin. Los
tamaos tpicos de los registros de conteo son 8 y 16 bits, pudiendo encontrar dispositivos

que solo tienen temporizadores de un tamao o con ms frecuencia con ambos tipos de
registro de conteo.
Conversor analgico/digital
Como es muy frecuente el trabajo con seales analgicas, stas deben ser convertidas a
digital y por ello muchos microcontroladores incorporan un conversor analgico-digital, el
cual se utiliza para tomar datos de varias entradas diferentes que se seleccionan mediante
un multiplexor.
Las resoluciones ms frecuentes son 8 y 10 bits, que son suficientes para aplicaciones
sencillas. Para aplicaciones en control e instrumentacin estn disponibles resoluciones de
12bit, 16bit y 24bit.Tambin es posible conectar un convertidor externo, en caso de
necesidad.
5.4 APLICACIONES DE LOS MICROCONTROLADORES

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

Los microcontroladores se encuentran por todas partes:

Sistemas de comunicacin: en grandes automatismos como centrales y en


telfonos fijos, mviles, fax, etc.
Electrodomsticos: lavadoras, hornos, frigorficos, lavavajillas, batidoras,
televisores, vdeos, reproductores DVD, equipos de msica, mandos a distancia,
consolas, etc.
Industria informtica: Se encuentran en casi todos los perifricos; ratones,
teclados, impresoras, escner, etc.
Automocin: climatizacin, seguridad, ABS, etc.
Industria: Autmatas, control de procesos, etc
Sistemas de supervisin, vigilancia y alarma: ascensores, calefaccin, aire
acondicionado, alarmas de incendio, robo, etc.
Otros: Instrumentacin, electromedicina, tarjetas (smartcard), sistemas de
navegacin, etc.

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


desarrollos de los microprocesadores, lo cierto es que se venden cientos de
microcontroladores
por
cada
uno
de
aqullos.
Produccin
mundial
de
microcontroladores por ao: