Sei sulla pagina 1di 96

Unidad 4. Micros controladores.

Qu es un Micros controlador
Muchos de los sistemas digitales pueden disearse empleando procesadores o micro
controladores, la seleccin del dispositivo depende del tipo de aplicacin y la diferencia
bsica que existe entre estos dos dispositivos se explica a continuacin:
o Los procesadores son empleados para procesar informacin. A manera de
ejemplo, con un procesador se podra hallar todas las personas en Bogot entre
edades de 15 y 30 aos, de sexo femenino, y ordenados por el Apellido. Los
procesadores usan un conjunto de instrucciones tiles para procesar datos, lo
cual los hace muy verstiles para manejar informacin.
o Los micro controladores son utilizados como su nombre lo indica para controlar.
Son muy utilizados para implementar controles automticos. Como ejemplo, un
micro controlador puede sensar la temperatura de un proceso, compararla con
un valor almacenado en memoria y tomar la decisin de encender un equipo de
calefaccin si la temperatura baja de cierto valor, y adems de ello mostrar el
valor en un display.
Los micro controladores generalmente tienen instrucciones especiales que permiten
controlar procesos como el indicado anteriormente y otros ms complejos; todo
depende de la habilidad del programador para generar el cdigo para manejar el
proceso. Un micro controlador es simplemente un procesador con memoria ROM y RAM,
puertos de E/S y otros dispositivos de propsito especial como conversores A/D,
contadores, temporizadores y puertos de comunicacin, o en otras palabras es un
microcomputador con funciones especiales. En la figura 11.7.1 se indica la estructura
interna tpica de un micro controlador.

Figura 11.7.1. Estructura tpica de un micro controlador
Estos dispositivos generalmente incluyen variedad de funciones especiales que se
pueden utilizar gracias a los dispositivos internos incluidos dentro de ellos. Entre las
caractersticas ms relevantes de un micro controlador, se pueden enunciar las
siguientes:
o La memoria de programa generalmente es una Flash EEPROM.
o Tiene puertos de Entrada y Salida (Configurables por software).
o Poseen contadores de propsito especial.
o Tiene incluido un reloj del sistema que permite contabilizar tiempo.
o Algunos modelos incluyen conversores A/D.
o Tiene Memoria EEPROM para almacenar datos.
o Tiene puerto de comunicaciones.
o Manejan velocidades de operacin hasta 20 MHz.
o Algunos de estos dispositivos tienen puerto de comunicaciones serial.
o Tienen entradas para interrupcin.
o La programacin es rpida.
o Las herramientas de desarrollo son econmicas y se encuentran disponibles en a
red, las cuales incluyen el ensamblador y simulador.
Los micros controladores se pueden encontrar en varias aplicaciones que se relacionen
con medida, almacenamiento, control, clculo entre otras. Tambin se pueden encontrar
dentro de los teclados, mdems, impresoras y otros perifricos. Como se puede notar
los micros controladores son dispositivos muy verstiles que pueden ser utilizados en
muchas aplicaciones, donde todo el potencial se encuentra en la programacin.
Como seleccionar un micro controlador
Dentro de cada familia de dispositivos, usted encontrar normalmente una seleccin de
varios micros controladores dependiendo de los dispositivos internos que tenga
disponibles, y la capacidad de memoria de programa y datos.
Los micros controladores tambin se especifican por la cantidad de bits que pueden
procesar por unidad de tiempo. Un nmero alto de bits indica que se trata de un
dispositivo rpido y de altas prestaciones. Los micros controladores de 8 bits son muy
populares y se emplean en proyectos simples, sin embargo se encuentran arquitecturas
que manejan hasta 32 bits, para aplicaciones ms complejas.
El consumo de potencia es otra especificacin que se debe tener en cuenta, sobre todo
para sistemas alimentados por bateras. Los Chips normalmente son fabricados con
tecnologa CMOS debido al consumo bajo que ofrece. Algunos de estos dispositivos
CMOS tienen disponible un estado de espera o modo "sleep", como el de los
computadores cuando se suspenden, el cual limita el consumo de corriente en unos
cuantos microamperios cuando los circuitos se encuentran inactivos. Usando este modo
de funcionamiento, el consumo de potencia puede ser reducido cuando se da espera a
la entrada de datos durante la ejecucin de un programa.
Microcontroladores disponibles en el mercado
En esta seccin se describen algunos micros controladores populares que pueden ser
empleados para infinidad de aplicaciones. Lo ms recomendable en la seleccin de un
micros controlador es tener disponible un buen juego de herramientas de desarrollo y
que su costo no sea tan elevado, adems de ello tambin es importante tener acceso a
la documentacin del dispositivo para conocer su arquitectura y funciones. Para iniciarse
en la programacin de estos dispositivos generalmente son recomendables los micros
controladores de INTEL, MOTOROLA y MICROCHIP entre otros, de los cuales se
consiguen con facilidad sus herramientas de desarrollo y documentacin. A continuacin
de dar una breve descripcin de los dispositivos de cada una de estas Marcas.
FAMILIA 805X, 80186 - INTEL
Los micros controladores de la serie 8051, son la segunda generacin despus del 8048.
Este dispositivo es muy poderoso y fcil para programar. Tiene arquitectura Harvard, es
decir, que los la memoria de datos y programa se encuentran por separado en su
estructura. La memoria del programa es de 64K y la memoria de datos es de 128 bytes
y 256 bytes para los 8052. Hay disponible gran cantidad de software de desarrollo para
los micros controladores de esta familia que puede ser encontrado en Internet.
La tercera generacin de estos micros controladores son los de la familia 80C196, los
cuales manejan palabras de 16 bits. Entre las principales caractersticas de estos
dispositivos se pueden enumerar las siguientes: efectan operaciones de multiplicacin
y divisin el hardware multiplica y divide, 6 modos de direccionamiento, Sistema de E/S
de alta velocidad, Conversor A/D, mdulo de comunicacin serial, 8 fuentes de
interrupcin, generador de PWM, Watchdog Timer.
Existe tambin el micros controlador 80386 EX, el cual tiene toda la potencialidad de un
procesador 80386 pero con dispositivos adicionales que lo convierten en un micros
controlador muy potente y verstil. Este dispositivo tiene puerto serial, modos de ahorro
de energa, contadores y temporizadores, memoria DRAM y fuentes de interrupcin.
FAMILIA 68HC11 - MOTOROLA
El 68HC11 es un micros controlador de 8 bits. Este micros controlador tiene bus de
direcciones interno de 16 bits con un juego de instrucciones similar al de sus
predecesores de las familias 6801, 6805 y 6809. La arquitectura de estos micros
controladores es Von-Newman, es decir, que las direcciones y los datos comparten el
mismo espacio en memoria. Dependiendo de la variedad, los 68HC11 tienen EEPROM
incorporada, RAM, entradas y salidas digitales, temporizadores, conversor A/D,
generador de PWM, contadores de pulsos, puerto de comunicaciones seriales sincrnicas
y asincrnicas, entre otras funciones.
PIC16C - MICROCHIP
Los micros controladores de Microchip fueron los primeros dispositivos RISC. RISC
significa que el dispositivo tiene un nmero reducido de instrucciones, lo cual implica
simplicidad en su arquitectura y bajo costo. Aunque estos micros controladores tienen
pocas instrucciones (33 para el PIC16CXX) en la actualidad son muy utilizados por su
facilidad de programacin y costo reducido.
Estos dispositivos son de arquitectura Harvard, por lo cual tienen buses de datos y
direcciones separados. Los beneficios que tiene este dispositivo frente a los dems es su
sencillez, lo cual permite fabricarlo en chips muy pequeos, con la ventaja adicional de
consumir muy poca energa.
Estos dispositivos son muy populares y generalmente se encuentran en aplicaciones en
revistas de electrnica e Internet. Actualmente existen varias familias de este micros
controlador entre las cuales se pueden destacar la PIC16C5X, PIC16CXX, y la
PIC17CXX, que tambin se pueden conseguir con memoria Flash en las familias
PIC16FXXX

4.1 Arquitectura

Arquitectura Von Neumann
La arquitectura tradicional de computadoras y microprocesadores est basada
en la arquitectura Von Neumann, en la cual la unidad central de proceso (CPU),
est conectada a una memoria nica donde se guardan las instrucciones del
programa y los datos. El tamao de la unidad de datos o instrucciones est
fijado por el ancho del bus que comunica la memoria con la CPU. As un
microprocesador de 8 bits con un bus de 8 bits, tendr que manejar datos e
instrucciones de una o ms unidades de 8 bits (bytes) de longitud. Si tiene que
acceder a una instruccin o dato de ms de un byte de longitud, tendr que
realizar ms de un acceso a la memoria. Y el tener un nico bus hace que el
microprocesador sea ms lento en su respuesta, ya que no puede buscar en
memoria una nueva instruccin mientras no analicen las transferencias de
datos de la instruccin anterior. Resumiendo todo lo anterior, las principales
limitaciones que nos encontramos con la arquitectura Von Neumann son:
1. La limitacin de la longitud de las instrucciones por el bus de datos, que hace
que el microprocesador tenga que realizar varios accesos a memoria para
buscar instrucciones complejas.
2. La limitacin de la velocidad de operacin a causa del bus nico para datos
e instrucciones que no deja acceder simultneamente a unos y otras, lo cual
impide superponer ambos tiempos de acceso.



Arquitectura Harvard
La arquitectura Harvard tiene la unidad central de proceso (CPU) conectada a
dos memorias (una con las instrucciones y otra con los datos) por medio de dos
buses diferentes. Una de las memorias contiene solamente las instrucciones
del programa (Memoria de Programa), y la otra slo almacena datos (Memoria
de Datos). Ambos buses son totalmente independientes y pueden ser de
distintos anchos. Para un procesador de Set de Instrucciones Reducido, o
RISC (Reduced Instruccin Set Computer), el set de instrucciones y el bus de
memoria de programa pueden disearse de tal manera que todas las
instrucciones tengan una sola posicin de memoria de programa de longitud.
Adems, al ser los buses independientes, la CPU puede acceder a los datos
para completar la ejecucin de una instruccin, y al mismo tiempo leer la
siguiente instruccin a ejecutar. Ventajas de esta arquitectura:
1. El tamao de las instrucciones no esta relacionado con el de los datos, y por
lo tanto puede ser optimizado para que cualquier instruccin ocupe una sola
posicin de memoria de programa, logrando as mayor velocidad y menor
longitud de programa.
2. El tiempo de acceso a las instrucciones puede superponerse con el de los
datos, logrando una mayor velocidad en cada operacin.
Una pequea desventaja de los procesadores con arquitectura Harvard, es que
deben poseer instrucciones especiales para acceder a tablas de valores
constantes que pueda ser necesario incluir en los programas, ya que estas
tablas se encontraran fsicamente en la memoria de programa (por ejemplo en
la EPROM de un microprocesador).



El micros controlador PIC 16F84 posee arquitectura Harvard, con una memoria
de datos de 8 bits, y una memoria de programa de 14 bits.
En la Figura 5 vemos la arquitectura interna organizada en bloques
interconectados, en donde se incluye la memoria RAM, la memoria EEPROM,
los puertos de entrada y salida (I/O), etc.

El procesador
Es el elemento ms importante del micros controlador 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 operando 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 micros controladores 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, es decir,

RISC
Tanto la industria de los computadores comerciales como la de los micros
controladores 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 micros controladores 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).




Segn la arquitectura interna de la memoria del micros controlador se puede
distinguir entre:
- Micros controladores con arquitectura Von Neumann.
- Micros controladores con arquitectura Harvard.
Inicialmente, todos los micros controladores adoptaron la arquitectura clsica
de Von Neumann. Actualmente, muchos micros controladores utilizan esta
arquitectura, pero poco a poco 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 por un sistema de buses nico
(direcciones, datos y control). Esta arquitectura presenta algunos problemas
cuando se demanda rapidez.
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. Esta
estructura no modifica nada desde el punto de vista del usuario y la velocidad
de ejecucin de los programas es impresionante.
http://html.rincondelvago.com/adquisicion-de-magnitudes-fisicas-mediante-
microcontrolador.html
- Arquitectura cerrada o abierta.
Entre los fabricantes de micros controladores hay dos tendencias para resolver
las demandas de los usuarios.
Los micros controladores con arquitectura cerrada poseen una determinada
UCP, cierta cantidad de memoria de datos, cierto tipo y capacidad de memoria
de instrucciones, un nmero de E/S y un conjunto de recursos auxiliares muy
concreto. El modelo no admite variaciones ni ampliaciones. La aplicacin a la
que se destina debe encontrar en su estructura todo lo que precisa, y en caso
contrario, hay que desecharlo.
Los micros controladores con arquitectura abierta se caracterizan porque,
adems de poseer una estructura interna determinada, emplean sus lneas de
E/S para sacar al exterior los buses de datos, direcciones y control, con lo que
se posibilita la ampliacin de la memoria y las E/S con circuitos integrados
externos. Esta solucin se asemeja a la que emplean los clsicos
microprocesadores.
La lnea que separa unos de otros es muy delgada, pero el concepto de micros
controlador se acerca posiblemente ms a la arquitectura cerrada.
Los micros controladores PIC estn basados en la arquitectura Harvard que posee buses y
espacios de memoria diferenciados para los datos y las instrucciones. Gracias a ella se puede
acceder de forma simultnea e independiente a la memoria de datos y a la memoria de
instrucciones, por tanto son ms rpidos que los micros controladores basados en la
arquitectura tradicional de Von Neuman.
Por otro lado, esta independencia entre datos e instrucciones permite que cada uno tenga el
tamao ms adecuado. As, los datos tienen una longitud de 8 bits, mientras que las
instrucciones son de 14 bits (Figura 6-6).



Como se observa en la Figura 6-7 el PIC16F84 consta de un procesador con una ALU y un
Decodificador de Instrucciones, una memoria de programa tipo FLASH de 1K palabras de 14
bits, una memoria de datos SRAM con 68 posiciones de 8 bits. Tambin existe una zona de 64
bytes de EEPROM para datos no voltiles. Finalmente dispone de interrupciones, un
temporizador, perro guardin y dos puertas A y B de entrada y salida de informacin digital.



http://www.dte.upct.es/docencia/temarios/tecn_electricidad_elect_dig/Tema6.PDF

4.1.1 Terminales.
4.1.2 CPU.
- Arquitectura del procesador o UCP.
Segn la filosofa de la arquitectura del procesador se puede distinguir entre:
- Micros controladores CISC.
- Micros controladores RISC.
- Micros controladores SISC.
Un micros controlador basado en la filosofa CISC (Computadores de Juego de
Instrucciones Complejo) dispone 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 acta como macros.
Tanto la industria de los computadores comerciales como los de los micros
controladores 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 ejecuta en un solo ciclo.
La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el
software del procesador.
En los micros controladores 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).
http://html.rincondelvago.com/adquisicion-de-magnitudes-fisicas-mediante-
microcontrolador.html
2.1. Procesador.
Es el elemento ms importante del micros controlador tanto a nivel hardware como software.
Se encarga de direccionar la memoria de instrucciones, recibir el cdigo OP (opcode) de la
instruccin en curso, su decodificacin y la ejecucin de la operacin aritmtica o lgica que
implica la instruccin, as como la bsqueda de los operan dos y el almacenamiento del
resultado.
La necesidad de conseguir rendimientos elevados en el procesamiento de las instrucciones ha
desembocado en el empleo generalizado de procesadores de arquitectura Hardvard, frente a
los tradicionales que seguan la arquitectura de Von Neuman. Esta ltima se caracteriza
porque la CPU se conectaba a una memoria nica donde coexistan datos e instrucciones a
travs de un sistema de buses. En la arquitectura Harvard son independientes la memoria de
instrucciones y la memoria de datos y cada una dispone de su propio sistema de buses para el
acceso. Esto propicia el paralelismo (Figura 6-5).


El procesador o CPU.
El procesador responde a la arquitectura RISC, que se identifica porque el juego de
instrucciones se reduce a 35, donde la mayora se ejecutan en un solo ciclo de reloj, excepto
las instrucciones de salto que necesitan dos ciclos.
La ALU (Arithmetic Logic Unit) ubicada dentro del procesador realiza las operaciones lgicas y
aritmticas con dos operandos, uno que recibe desde el registro W (registro de trabajo) y otro
que puede provenir de cualquier registro interno (Figura 6-7).


4.1.3 Espacio de Memoria.
Memoria
En los micros controladores 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 micros controladores de los
computadores personales:
- No existen sistemas de almacenamiento masivo como disco duro o
disquetes. Como el micros
- controlador 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 guarda r 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 micros controladores
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 micros controladores, la
aplicacin y utilizacin de los mismos es diferente. Se describen las cinco
versiones de memoria no voltil que se pueden encontrar en los micros
controladores del mercado.

ROM con mscara
Es una memoria no voltil de slo lectura cuyo contenido se graba durante la
fabricacin del chip. Si tenemos idea de cmo se fabrican los circuitos
integrados, sabremos de donde viene el nombre. Estos se fabrican en obleas
que contienen varias decenas de chips. Estas obleas se fabrican a partir de
procesos fotoqumicos, donde se impregnan capas de silicio y oxido de silicio, y
segn convenga, se erosionan al exponerlos a la luz. Como no todos los
puntos han de ser erosionados, se sita entre la luz y la oblea una mascara con
agujeros, de manera que donde deba incidir la luz, esta pasar. Con varios
procesos similares pero ms complicados se consigue fabricar los transistores
y diodos micromtricos que componen un chip. Ahora ya sabes de donde viene
la mscara y no te acostars sin saber una cosa ms. El elevado coste del
diseo de la mscara slo hace aconsejable el empleo de los micros
controladores con este tipo de memoria cuando se precisan cantidades
superiores a varios miles de unidades.
OTP
El micros controlador 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.

EPROM
Los micros controladores 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 micros controladores con memoria
OTP que estn hechos con material
plstico.

EEPROM, E2PROM o E
2
PROM
Se trata de memorias de slo lectura, programables y borrables elctricamente
EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la
programacin como el borrado, se realizan elctricamente desde el propio
grabador y bajo el control programado de un PC. Es muy cmoda y rpida la
operacin de grabado y la de borrado. No disponen de ventana de cristal en la
superficie. Los micros controladores dotados de memoria EEPROM una vez
instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera
sin ser retirados de dicho circuito. Para ello se usan "grabadores en
circuito"que confieren una gran flexibilidad y rapidez a la hora de realizar
modificaciones en el programa de trabajo. El nmero de veces que puede
grabarse y borrarse una memoria EEPROM es finito, por lo que no es
recomendable una reprogramacin continua. Son muy idneos para la
enseanza y la Ingeniera de diseo. Se va extendiendo en los fabricantes la
tendencia de incluir una pequea zona de memoria EEPROM en los circuitos
programables para guardar y modificar cmodamente una serie de parmetros
que adecuan el dispositivo a las condiciones del entorno. Este tipo de memoria
es relativamente lenta, como ya veremos ms adelante.

FLASH
Se trata de una memoria no voltil, de bajo consumo, que se puede escribir y
borrar. Funciona como una ROM y una RAM pero consume menos y es ms
pequea. A diferencia de la ROM, la memoria FLASH es programable en el
circuito. Es ms rpida y de mayor densidad que la EEPROM. La alternativa
FLASH est recomendada frente a la EEPROM cuando se precisa gran
cantidad de memoria de programa no voltil. Es ms veloz y tolera ms ciclos
de escritura/borrado. Las memorias EEPROM y FLASH son muy tiles al
permitir que los micros controladores que las incorporan puedan ser
reprogramados en circuito, es decir, sin tener que sacar el circuito integrado de
la tarjeta. As, un dispositivo con este tipo de memoria incorporado al control
del motor de un automvil permite que pueda modificarse el programa durante
la rutina de mantenimiento peridico, compensando los desgastes y otros
factores tales como la compresin, la instalacin de nuevas piezas, etc. La
reprogramacin del micros controlador puede convertirse en una labor rutinaria
dentro de la puesta a punto.

4.1.4 Entrada y Salida.
Puertas de Entrada y Salida
Las puertas de Entrada y Salida (E/S) permiten comunicar al procesador con el mundo exterior,
a travs de interfaces, o con otros dispositivos. Estas puertas, tambin llamadas puertos, son la
principal utilidad de las patas o pines de un microprocesador. Segn los controladores de
perifricos que posea cada modelo de micros controlador, las lneas de E/S se destinan a
proporcionar el soporte a las seales de entrada, salida y control.

Perifricos digitales de entrada.
Pulsadores.
Estos dispositivos permiten introducir un nivel lgico en el momento que se les acciona,
pasando al nivel contrario cuando se deja de hacerlo (vuelven a la posicin de reposo).

En el esquema de la izquierda de la Figura 6-14 la lnea de entrada (IN) recibe un nivel
lgico alto cuando el pulsador est reposo y un nivel lgico bajo cuando se acciona. El
pulsador de la derecha funciona al revs.



Hay multitud de detectores, finales de carrera y sensores digitales que funcionan de la
misma manera que los pulsadores.
Interruptores.
Los interruptores tienen dos estados estables y hay que accionarlos para cambiar de uno a
otro. El interruptor admite el estado abierto y el estado cerrado. Las formas de conectar un
Interruptor a una entrada de micros controlador son iguales a las de la figura 6-14,
sustituyendo el pulsador por el interruptor.
Todos los circuitos electromecnicos (pulsadores, interruptores,...)
originan un fenmeno denominado rebotes: las lminas se abren y
se cierran varias veces en el momento de la transicin (Figura 6-15).
El efecto que produce es semejante a abrir y cerrar el interruptor o
pulsador varias veces, por lo que puede provocar resultados
errneos.



El efecto de los rebotes se puede solucionar bien mediante software, o bien por hardware.
En la Figura 6-16 se muestran dos circuitos hardware anti rebotes. El circuito de la izquierda
emplea un condensador y el de la derecha un flip-flop R-S.



Perifricos digitales de salida
Diodos LED.
El diodo es un elemento que se emplea como indicador luminoso. Cuando la diferencia
de potencial entre su nodo y su ctodo supere un determinado valor umbral el diodo led se
encender. Las lneas de los PIC pueden suministrar suficiente corriente como para
encender a un diodo led, por eso se pueden conectar directamente a travs de una
resistencia como muestra la Figura 6-17. Si empleamos la conexin de la izquierda de la
figura, el diodo led se encender al poner a 1 la salida del micros controlador, mientras que
con la conexin de la derecha lo har cuando la salida se ponga a 0.



En ocasiones, los diodos u otro tipo de carga necesitan ms corriente que la que pueden
entregar las lneas de los PIC. En ese caso es necesario intercalar una etapa amplificadora.
Rels
La activacin y desactivacin de un rel brinda la oportunidad de poder controlar cargas
mucho mayores (ms corriente) porque pueden ser controladas por los contactos de dicho
rel (Figura 6-18).
Cuando la lnea de salida, OUT, aplica un nivel alto a la base del transistor Darlington (etapa
amplificadora) hace que conduzca y se active el rel. Al cerrarse los contactos del rel se
controla una carga mayor. El valor de la resistencia depende del tipo de rel y del transistor.



http://www.dte.upct.es/docencia/temarios/tecn_electricidad_elect_dig/Tema6.PDF




4.1.5 Caractersticas especiales.
Reloj principal
Todos los micros controladores disponen de un circuito oscilador que genera una onda
cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronizacin de
todas las operaciones del sistema. Esta seal del reloj es el motor del sistema y la que hace
que el programa y los contadores avancen.
Generalmente, el circuito de reloj est incorporado en el micros controlador y slo se necesitan
unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo.
Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien
un resonador cermico o una red R-C.
Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las instrucciones
pero lleva aparejado un incremento del consumo de energa y de calor generado.

RECURSOS ESPECIALES
Cada fabricante oferta numerosas versiones de una arquitectura bsica de micros controlador.
En algunas ampla las capacidades de las memorias, en otras incorpora nuevos recursos, en
otras reduce las prestaciones al mnimo para aplicaciones muy simples, etc. La labor del
diseador es encontrar el modelo mnimo que satisfaga todos los requerimientos de su
aplicacin. De esta forma, minimizar el coste, el hardware y el software. Los principales
recursos especficos que incorporan los micros controladores son:
- Temporizadores o Timers.
- Perro guardin oWatchdog.
- Proteccin ante fallo de alimentacin o Brownout.
- Estado de reposo o de bajo consumo (Sleep mode).
- Conversor A/D (Analgico ->Digital).
- Conversor D/A (Digital ->Analgico).
- Comparador analgico.
- Modulador de anchura de impulsos o PWM (PulseWide Modulation).
- Puertas de E/S digitales.
- Puertas de comunicacin.
A continuacin pasamos a ver con un poco ms de detalle cada uno de ellos
Temporizadores o Times

Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta de
acontecimientos que suceden en el exterior (contadores).
Para la medida de tiempos se carga un registro con el valor adecuado y a continuacin dicho
valor se va incrementando o decre mentando al ritmo de los impulsos de reloj o algn mltiplo
hasta que se desborde y llegue a 0, momento en el que se produce un aviso. Cuando se
desean contar acontecimientos que se materializan por cambios de nivel o flancos en alguna
de las patitas del micros controlador, el mencionado registro se va incrementando o decre
mentando al ritmo de dichos impulsos. Vaya, nos hemos metido en trminos de micros
controladores demasiado pronto. Bueno, con el fin de aclarar que es un registro, anticipamos
que es un valor numrico en una posicin fija de memoria. Un ejemplo: esto es igual que el
segundero de nuestro reloj digital, este va aumentando hasta que llega a 60 segundos, pero en
la pantalla pone 00, esto quiere decir que se desborda. Pero cuando cambia da un aviso y se
incrementan los minutos. En este ejemplo, el registro es el segundero; estos son fijos ya que
sabemos que son los de la derecha del todo y no se van a cambiar.

Perro guardin o Watchdog
Cuando el computador personal se bloquea por un fallo del software u otra causa, se pulsa el
botn del reset y se reinicia el sistema. Pero un micros controlador funciona sin el control de un
supervisor y de forma continuada las 24 horas del da. El Perro Guardin consiste en un
contador que, cuando llega al mximo, provoca un reset automticamente en el sistema.
Se debe disear el programa de trabajo que controla la tarea de forma que resetee al Perro
Guardin de vez en cuando antes de que provoque el reset. Si falla el programa o se bloquea
(si cae en bucle infinito), no se refrescar al Perro guardin y, al completar su temporizacin,
provocar el reset del sistema.

Proteccin ante fallo de alimentacin o Brownout
Se trata de un circuito que resetea al micros controlador cuando el voltaje de alimentacin
(VDD) es inferior a un voltaje mnimo (brownout). Mientras el voltaje de alimentacin sea
inferior al de brownout el dispositivo se mantiene reseteado, comenzando a funcionar
normalmente cuando sobrepasa dicho valor. Esto es muy til para evitar datos errneos por
transiciones y ruidos en la lnea de alimentacin

Estado de reposo de bajo consumo
Son abundantes las situaciones reales de trabajo en que el micros controlador debe esperar,
sin hacer nada, a que se produzca algn acontecimiento externo que le ponga de nuevo en
funcionamiento. Para ahorrar energa, (factor clave en los aparatos porttiles), los micros
controladores disponen de una instruccin especial (SLEEP en los PIC), que les pasa al estado
de reposo o de bajo consumo, en el cual los requerimientos de potencia son mnimos. En dicho
estado se detiene el reloj principal y se congelan sus circuitos asociados, quedando sumido en
un profundo sueo. Al activarse una interrupcin ocasionada por el acontecimiento esperado, el
micros controlador se despierta y reanuda su trabajo. Para hacernos una idea, esta funcin es
parecida a la opcin de Suspender en el men para apagar el equipo (en aquellos PCs con
administracin avanzada de energa)

Conversor A/D (CAD)
Los micros controladores que incorporan un Conversor A/D (Analgico/Digital) pueden
procesar seales analgicas, tan abundantes en las aplicaciones. Suelen disponer de un
multiplexor que permite aplicar a la entrada del CAD diversas seales analgicas desde las
patillas del circuito integrado.

Conversor D/A (CDA)
Transforma los datos digitales obtenidos del procesamiento del computador en su
correspondiente seal analgica que saca al exterior por una de las patillas del chip. Existen
muchos circuitos que trabajan con seales analgicas.

Comparador analgico
Algunos modelos de micros controladores 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 micros
controladores con un mdulo de tensin de referencia que proporciona diversas tensiones de
referencia que se pueden aplicar en los comparadores.

Modulador de anchura de impulsos o PWM
Son circuitos que proporcionan en su salida impulsos de anchura variable, que se ofrecen al
exterior a travs de las patitas del encapsulado.

Puertos digitales de E/S
Todos los micros controladores destinan parte de su patillaje a soportar lneas de E/S digitales.
Por lo general, estas lneas se agrupan de ocho en ocho formando Puertos.
Las lneas digitales de las Puertos pueden configurarse como Entrada o como Salida cargando
un 1 un 0 en el bit correspondiente de un registro destinado a su configuracin. Otra vez ms
nos volvemos a meter con unos, ceros y registros paciencia que pronto llega lo mejor.

Puertas de comunicacin
Con objeto de dotar al micros controlador 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.(Ej: Puerto Serie)
- 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.
Tanto el I2C en televisores, como el Bus CAN en automviles, fueron diseados para
simplificar la circuitera que supone un bus paralelo de 8 lneas dentro de un televisor, as como
para librar de la carga que supone una cantidad ingente de cables en un vehculo.


4.2 Programacin.
4.2.1 Modelo de programacin.
Modelo de programacin
El modelo de programacin es un diagrama de bloques simplificado en el que slo
aparecen los elementos que el programador puede manejar mediante el conjunto de
instrucciones.
En el MC68000 se dispone de 16 registros de 32 bits de propsito general (D0-D7, A0-
A7), un puntero contador de programa (PC) de 32 bits, y un registro de cdigos de
condicin (CCR) de 8 bits.
Los primeros 8 registros (D0-D7) se utilizan como registros de datos para bytes (8 bits),
words (16 bits) y long words (32 bits).
Los registros del segundo bloque de 8 (A0-A7) pueden ser utilizados como punteros de
pila o como bases de direcciones. En concreto el registro A7 es adoptado por el
microprocesador como puntero de la pila del sistema. Adems, los registros de
direcciones pueden ser utilizados en operaciones con words y long words.
Todos los registros pueden utilizarse como registros ndice.
Registro de datos

Registros de direcciones

(USP) Puntero de pila de usuario

Puntero de programa

CCR Registro de cdigos de condicin
Esquema de los registros del MC68000.

En estado supervisor se dispone de otros dos registros: Por una parte, el puntero de
la pila del supervisor (SSP Supervisor Stack Pointer) que sustituye al USP y por tanto
se establece como A7 en modo supervisor. Adems se dispone del registro de estado
(SR Status Register) que es una ampliacin del CCR.

Puntero de pila de supervisor

Registro de estado
Estos registros son exclusivos del modo supervisor.

EL REGISTRO DE ESTADO (SR)
Es un registro de 16 bits. El formato del registro de estado es el siguiente:

T S I2 I1 I0 X N Z V C

Estructura del registro de estado (SR).
Esta dividido lgicamente en sus dos bytes, el byte alto denominado BYTE del
SISTEMA, y el byte bajo, REGISTRO de CODIGOS DE CONDICION.
- BYTE del SISTEMA: slo puede ser modificado desde el modo supervisor,
posee 5 bits significativos que controlan el funcionamiento del microprocesador.
La funcin especfica de cada bit es:
o T : BIT DE TRAZA, Cuando este bit est a 1, la CPU entra en el modo
de ejecucin paso a paso. Despus de ejecutarse una instruccin se
genera una excepcin, que dar paso a la correspondiente subrutina. Util
para prueba y depuracin.
o S: BIT de ESTADO, Cuando este bit est a 1 el microprocesador opera
en modo supervisor, cuando est a 0, en modo usuario. Este bit permite
el paso de modo supervisor a modo usuario.
o I2,I1,I0 : MASCARA DE INTERRUPCIN, Estos 3 bits constituyen el
nivel de la mscara de interrupcin. Esto quiere decir que, para que una
interrupcin sea atendida, debe ser de un nivel superior al indicado por
estos 3 bits.
- REGISTRO DE CDIGOS DE CONDICIN (CCR): Solo son significativos
los 5 bits ms bajos. Cada uno de estos bits, llamados "flags", tiene la funcin de
sealar la ocurrencia de un hecho concreto:
- C : BIT DE ACARREO, Sirve para notificar que el resultado de un operacin
aritmtica supera el nmero de bits de los operando. Depende de la instruccin
concreta como se ver afectado el bit C y la interpretacin correcta de su valor.
Tambin se modifica por instrucciones de rotacin y desplazamiento. Otras
instrucciones lo ponen a 0.
- V : BIT de DESBORDAMIENTO. Tiene sentido cuando se trabaja con valores
numricos con signo (en complemento a 2 con el bit mas significativo reservado
para el signo) y se pone a 1 cuando el resultado de una operacin no se puede
almacenar en el numero de bits que permite la representacin del numero
- Z : BIT de CERO, Se pone a 1 cuando el resultado de una operacin o de una
transferencia de datos es cero.
- N: BIT DE SIGNO, Contiene el valor del bit ms significativo del resultado de
una operacin aritmtica lgica.
- X: BIT DE EXTENSION, Utilizado en operaciones de precisin mltiple , toma
el valor del bit C, salvo en operaciones de rotacin extendida.
http://www.ii.uam.es/~fjgomez/68000/tutorial/cap1.html

4.2.2 Conjunto de instrucciones.
ADD - Add Binary
ADD
Suma Binaria

Operacin
Fuente + Destino -> Destino
Sintaxis en Ensamblador
1- ADD <ea>,Dn
2- ADD Dn,<ea>
Atributos
Tamos =(Byte, Word, Long)
Descripcin
Suma el operando fuente con el operando destino, y guarda el resultado en el operando
destino. El tamao de los operando puede elegirse entre Byte, Word y Long. El Modo
de la instruccin que diferencia entre las dos sintaxis (1 o 2) indica que operando es el
fuente y cual es el destino as como los tamaos de los operando.
Registro de Cdigos de Condicin
X N Z V C
* * * * *
N: Se pone a 1 (Set) si el resultado es negativo. Se pone a 0 (Cleared) en otro caso.
Z: Se pone a 1 (Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Se pone a 1 (Set) si se genera desbordamiento (overflow). Se pone a 0 (Cleared) en
otro caso.
C: Se pone a 1 (Set) si se genera acarreo. Se pone a 0 (Cleared) en otro caso.
X: Toma el mismo valor que el C.
Codificacin Binaria
1 1 0 1 Reg. Datos Modo Operacin Direccin Efectiva
La Suma binaria admite dos Modos :
1. Modo 1 si se utiliza ADD <dir. efectiva>,Dx
2. con el Campo Modo Operacion = 000, 001, 010 Segn sea BYTE, WORD y
LONG.
1. Modo 2 si se utiliza ADD Dx, <dir. efectiva>
2. con el Campo Modo Operacion = 100, 101, 110 Segn sea BYTE, WORD y
LONG.
Los operandos pueden ser tamao Byte, Word, o Long.

ABCD - Add Decimal with Extend
ADDA - Add Address
ADDI - Add Immediate
ADDI
Suma Inmediata

Operacin
Dato Inmediato + Destino -> Destino
Sintaxis en Ensamblador
ADDI #<data>,<ea>
Atributos
Tamao=(Byte, Word, Long)
Descripcin
Suma el dato inmediato al operando destino, y almacena el resultado en el operando
destino. El tamao del operando puede ser Byte , Word o Long. El tamao del dato
inmediato se hace igual al del operando
Registro de Cdigos de Condicin
X N Z V C
* * * * *
N: Se pone a 1 (Set) si el resultado es negativo. Se pone a 0 (Cleared) de otro modo.
Z: Se pone a 1 (Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Se pone a 1 (Set) si se genera desbordamiento (overflow). Se pone a 0 (Cleared) en
otro caso.
C: Se pone a 1 (Set) si se genera acarreo. Se pone a 0 (Cleared) en otro caso.
X: Toma el mismo valor que el C.
Codificacin Binaria
El campo Tamao distingue entre :
1. BYTE = 00
1. WORD = 01
1. LONG = 10
Los operandos son tamao Byte,Word o Long
0 0 0 0 0 1 1 0 Tamao Modo Registro
WORD = Palabra (16 bits) BYTE = Byte ( 8 bits)
Palabra larga = LONG (32 bits)

ADDQ - Add Quick
ADDQ
Suma Rapida

Operacin
Dato Inmediato + Destino -> Destino
Sintaxis en Ensamblador
ADDQ #<data>,<ea>
Atributos
Tamao =(Byte, Word, Long)
Descripcin
Suma el dato inmediato al operando destino y queda el resultado en destino. El rango de
valores del dato inmediato es de 1 a 8. El tamao de la operacin puede especificarse
como Byte, Word o Long.
En operaciones de tamao Word o Long est tambin permitido usar registros de
direcciones, en cuyo caso el registro de cdigos de condicin no se ve afectado. Cuando
se suma el registro de direcciones, se emplea el tamao total del registro de direcciones
independientemente del tamao de operacin.
Registro de Cdigos de Condicin
X N Z V C
* * * * *
N: Se pone a 1 (Set) si el resultado es negativo. Se pone a 0 (Cleared) de otro modo.
Z: Se pone a 1 (Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Se pone a 1 (Set) si se genera desbordamineto (overflow). Se pone a 0 (Cleared) en
otro caso.
C: Se pone a 1 (Set) si se genera acarreo. Se pone a 0 (Cleared) en otro caso.
X: Toma el mismo valor que el C.
Los cdigos de condicin no se alteran si el operando destino es un registro de
direcciones
Codificacin Binaria
1 1 0 0 Dato 0 Tamao
Dir. Efectiva
Modo Registro
El campo Tamao distingue entre :
1. BYTE = 00
1. WORD = 01
1. LONG = 10
La operacin puede ser tamao Byte,Word o Long

ADDX - Add Extended
ADDX
Suma Extendida

Operacin
Fuente + Destino + X -> Destino
Sintaxis en Ensamblador
ADDX Dy,Dx
ADDX -(Ay),-(Ax)
Atributos
Tamao=(Byte, Word, Long)
Descripcin
Suma el operando fuente con el destino y con el bit X, guarda el resultado en el
operando destino
Los operando pueden direccionarse de dos maneras:
- Registro de Datos a registro de Datos: Los operando estn contenidos en los
registros de datos especificados en la instruccin.
- Memoria a Memoria: Se indican los operando con direccionamiento indirecto
con prede cremento usando el registro de direcciones especificado en la
instruccin.
El tamao de los operando puede ser byte, word, or long.
Registro de Cdigos de Condicin
X N Z V C
* * * * *
N: Se pone a 1 (Set) si el resultado es negativo. Se pone a 0 (Cleared) de otro modo.
Z: Se pone a 1 (Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Se pone a 1 (Set) si se genera desbordamiento (overflow). Se pone a 0 (Cleared) en
otro caso.
C: Se pone a 1 (Set) si se genera acarreo. Se pone a 0 (Cleared) en otro caso.
X: Toma el mismo valor que el C.
Nota: Normalmente el bit Z se pone a 1 va programa antes de iniciar una operacin.
Esto admite comprobar si el resultado es cero despus de realizar una operacin de
multiple-precisin
Codificacin Binaria
1 1 0 0 Reg. Destino 1 Tamao 0 0 R/M Reg. Fuente
Admite dos Modos :
1. R/M=0 si se utiliza ADDX Dy,Dx
1. R/M=1 si se utiliza ADDX -(Ay),-(Ax)
El campo Tamao distingue entre :
1. BYTE = 00
1. WORD = 01
1. LONG = 10
Los operandos son tamao Byte, Word o Long
AND - And Logical
AND
And Lgico

Operacin
Fuente & Destino -> Destino
Sintaxis en Ensamblador
AND <ea>,Dn
AND Dn,<ea>
Atributos
Tamao=(Byte, Word, Long)
Descripcin
Realiza la funcin lgica AND, bit a bit, entre el operando fuente y el destino
guardando el resultado en el destino.
El tamao de la operacin puede ser Byte, Word o Long.
No se puede usar como operando el contenido de un registro de direcciones.
Registro de Cdigos de Condicin
X N Z V C
- * * 0 0
N: Se pone a 1 (Set) si el bit mas significativo del resultado esta a 1. Se pone a 0
(Cleared) de otro modo.
Z: Se pone a 1(Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Siempre a 0 (cleared).
C: Siempre a 0 (cleared).
X: No se ve afectado.
Codificacin Binaria
1 1 0 0 Reg. Datos Modo Opera.
Dir. Efectiva
Modo Registro
El And lgico admite dos Modos :
1. Modo 1 si se utiliza AND <dir. efectiva>,Dx
2. con el Campo Modo Operacion = 000, 001, 010 Segn sea BYTE, WORD y
LONG.
1. Modo 2 si se utiliza AND Dx, <dir. efectiva>
2. con el Campo Modo Operacin = 100, 101, 110 Segn sea BYTE, WORD y
LONG.
Los operandos pueden ser tamao Byte, Word, o Long.
ANDI - AND Immediate
ANDI
AND Inmediato

Operacin
Dato Inmediato & Destino -> Destino
Sintaxis en Ensamblador
ANDI #<data>,<ea>
Atributos
Tamao=(Byte, Word, Long)
Descripcin
Realiza la operacin AND lgico entre el dato inmediato y el operando destino,
almacenado el resultado en el destino. El tamao de la operacin puede especificarse
como Byte, Word o Long. El tamao de la operacin se hace igual al tamao del
operando.
Registro de Cdigos de Condicin
X N Z V C
- * * 0 0
N: Se pone a 1 (Set) si el bit mas significativo del resultado esta a 1. Se pone a 0
(Cleared) de otro modo.
Z: Se pone a 1(Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Siempre a 0 (cleared).
C: Siempre a 0 (cleared).
X: No se ve afectado.
Codificacin Binaria
El campo Tamao distingue entre :
1. BYTE = 00
1. WORD = 01
1. LONG = 10
Los operando son tamao Byte,Word o Long
0 0 0 0 0 1 1 0 Tamao Modo Registro
WORD = Palabra (16 bits) BYTE = Byte ( 8 bits)
Palabra larga = LONG (32 bits)
ANDI to CCR - ANDI Immediate to Condition Codes
ANDI a CCR
ANDI Inmediato con el registro de Codigos de Condicin

Operacion
Fuente & CCR -> CCR
Sintaxis en Ensamblador
ANDI #<data>,CCR
Atributos
Tamao=(Byte)
Descripcin
Realiza la operacin AND entre el dato inmediato y el registro de codigos de condicin,
almacenando el resultado en el byte bajo del registro de estado.
Registro de Cdigos de Condicin
X N Z V C
* * * * *
N: Se pone a 0 (Cleared) si el bit 3 del dato inmediato es cero. No cambia en otro caso.
Z: Se pone a 0 (Cleared) si el bit 2 del dato inmediato es cero. No cambia en otro caso.
V: Se pone a 0 (Cleared) si el bit 1 del dato inmediato es cero. No cambia en otro caso.
C: Se pone a 0 (Cleared) si el bit 0 del dato inmediato es cero. No cambia en otro caso.
X: Se pone a 0 (Cleared) si el bit 4 del dato inmediato es cero. No cambia en otro caso.
Codificacin Binaria
ANDI a CCR
0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0 BYTE de datos ( 8 bits)
ANDI to SR - ANDI Immediate to the Status Register (Priviledged Instruction)

ADDQ - Add Quick
ASL,ASR - Arithmetic Shift
ASL
Desplazamiento aritmtico a la izquierda

Operacin

Sintaxis en Ensamblador
ASL Dy,Dx
ASL #<dato>,Dx
ASL <direccionamiento indirecto de memoria>
Atributos
Tamao=(Byte, Word, Long)
Descripcin
Suma el operando fuente con el destino y con el bit X, guarda el resultado en el
operando destino
Los operando pueden direccionarse de dos maneras:
- Registro de Datos a registro de Datos: Los operando estn contenidos en los
registros de datos especificados en la instruccin.
- Memoria a Memoria: Se indican los operando con direccionamiento indirecto
con predecremento usando el registro de direcciones especificado en la
instruccin.
El tamao de los operando puede ser byte, word, or long.
Registro de Cdigos de Condicin
X N Z V C
* * * * *
N: Se pone a 1 (Set) si el resultado es negativo. Se pone a 0 (Cleared) de otro modo.
Z: Se pone a 1 (Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Se pone a 1 (Set) si se genera desbordamiento (overflow). Se pone a 0 (Cleared) en
otro caso.
C: Se pone a 1 (Set) si se genera acarreo. Se pone a 0 (Cleared) en otro caso.
X: Toma el mismo valor que el C.
Nota: Normalmente el bit Z se pone a 1 va programa antes de iniciar una operacin.
Esto admite comprobar si el resultado es cero despus de realizar una operacin de
mltiple-precisin
Codificacin Binaria
1 1 0 0 Reg. Destino 1 Tamao 0 0 R/M Reg. Fuente
Admite dos Modos :
1. R/M=0 si se utiliza ADDX Dy,Dx
1. R/M=1 si se utiliza ADDX -(Ay),-(Ax)
El campo Tamao distingue entre :
1. BYTE = 00
1. WORD = 01
1. LONG = 10
Los operandos son tamao Byte, Word o Long
ASL,ASR - Arithmetic Shift
Bcc - Branch Conditionally
Bcc
Branch Conditionally

Operation
If (condition true) then PC + d -> PC
Assembler Syntax
Bcc <label>
Attributes
Size=(Byte, Word, Long)
Description
If the specified condition is met, program execution continues at location (PC) +
displacement. The displacement is a two's complement integer which counts the relative
distance in bytes. The value in the PC is the sign-extend instruction location plus two. If
the 8-bit displacement in the instruction word is zero, then the 16-bit displacement
(word immediately following the instruction) is used. If the 8-bit displacement in the
instruction word is all ones ($FF), then the 32-bit displacement (long word immediately
following the instruction) is used. "cc" may specify the following conditions:
CC carry clear (!C)
CS carry set C
EQ equal Z
GE greater or equal N*V+(!N)*(!V)
GT greater than N*V*(!Z)+(!N)*(!V)*(!Z)
HI high (!C)*(!Z)
LE less or equal Z+N*(!V)+(!N)*V
LS low or same C+Z
LT less than N*(!V)+(!N)*V
MI minus N
NE not equal (!Z)
PL plus (!N)
VC overflow clear (!V)
VS overflow set V
Condition Codes
Not affected.
BCHG - Test a Bit and Change
BCHG
Test a Bit and Change

Operation
~(<bit number> of Destination) -> Z;
~(<bit number> of Destination) -> (bit number) of Destination
Assembler Syntax
BCHG Dn,<ea>
BCHG #<data>,<ea>
Attributes
Size=(Byte, Long)
Description
A bit in the destination operand is tested and the state of the specified bit is reflected in
the Z condition code. After the test, the state of the specified bit is changed in the
destination. If a data register is the destination, then the bit numbering is a modulo 32
allowing bit manipulation on all bits in a data register. If a memory location is the
destination, a byte is read from that location, the bit operation is performed using the bit
number, modulo 8, and the byte is written back to the location. In all cases, bit zero
refers to the least significant bit. The bit number for this operation may be specified in
two different ways:
- Immediate: the bit number is specified in the second word of the instruction.
- Register: the bit number is contained in a data register specified in the
instruction.
Condition Codes
X N Z V C
- - * - -
N Not affected.
Z Set if the bit tested is zero. Cleared otherwise.
V Not affected.
C Not affected.
X Not affected.
BCLR - Test a Bit and Clear
BCLR
Test a Bit and Clear

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
BRA - Branch Always
BRA
Branch Always

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
BSET - Test a Bit and Set
BSET
Test a Bit and Set

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
BSR - Branch to Subroutine
BSR
Branch to Subroutine

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
BTST - Test a Bit
CHK - Check Register against Bounds
CHK
Check Register against Bounds

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
CLR - Clear an Operand
CLR
Clear an Operand

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
CMP - Compare
CMP
Compare

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
CMPA - Compare Address
CMPA
Compare Address

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
CMPI - Compare Immediate
CMPI
Compare Immediate

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
CMPM - Compare Memory
CMPM
Compare Memory

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
DBCC - Test Condition, Decrement and Branch
DBCC
Test Condition, Decrement and Branch

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
DIVS - Signed Divide
DIVS
Signed Divide

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
DIVU - Unsigned Divide
DIVU
Unsigned Divide

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
EOR - Exclusive OR Logical
EOR
Exclusive OR Logical

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
EORI - Exclusive OR Immediate
EORI
Exclusive OR Immediate

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
EXG - Exchange Registers
EXG
Exchange Registers

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
EXT - Sign Extend
EXT
Sign Extend

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
JMP - Jump
JMP
Jump

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
JSR - Jump to Subroutine
JSR
Jump to Subroutine

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
LEA - Load Effective Address
LEA
Load Effective Address

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
LINK - Link and Allocate
LINK
Link and Allocate

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
LSL,LSR - Logical Shift
MOVE - Move Data from Source to Destination
MOVE
Move Data from Source to Destination

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
MOVE from SR - Move from the Status Register
MOVE from SR
Move from the Status Register

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
MOVE to CCR - Move to Condition Codes
MOVE to CCR
Move to Condition Codes

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
MOVE to SR - Move to the Status Register
MOVE to SR
Move to the Status Register

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
MOVE USP - Move User Stack Pointer
MOVE USP
Move User Stack Pointer

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
MOVEA - Move Adress
MOVEA
Move Adress

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
MOVEM - Move Multiple Registers
MOVEM
Move Multiple Registers

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
MOVEP - Move Peripheral Data
MOVEP
Move Peripheral Data

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
MOVEQ - Move Quick
MOVEQ
Move Quick

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
MULS - Signed Multiply
MULS
Signed Multiply

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
NBCD - Negate Decimal with Extend
NBCD
Negate Decimal with Extend

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
NEG - Negate
NEG
Negate

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
NEGX - Negate with Extend
NEGX
Negate with Extend

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
NOP - No Operation
NOP
No Operation

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
NOT - Logical Complement
NOT
Logical Complement

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
OR - Inclusive OR Logical
OR
Inclusive OR Logical

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
ORI - Inclusive OR Immediate
ORI
Inclusive OR Immediate

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
PEA - Push Effective Address
PEA
Push Effective Address

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
RESET - Reset External Devices
ROL,ROR - Rotate (without Extend)
ROXL,ROXR - Rotate with Extend
RTE - Return from Exception
RTE
Return from Exception

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
RTR - Return and Restore Condition Codes
RTR
Return and Restore Condition Codes

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
RTS - Return from Subroutine
RTS
Return from Subroutine

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
SBCD - Subtract Decimal with Extend
SBCD
Subtract Decimal with Extend

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
SCC - Set According to Condition
SCC
Set According to Condition

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
STOP - Load Status Register and Stop
STOP
Load Status Register and Stop

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
SUB - Subtract Binary
SUB
Subtract Binary

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
SUBA - Subtract Address
SUBA
Subtract Address

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
SUBI - Subtract Immediate
SUBI
Subtract Immediate

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
SUBQ - Subtract Quick
SUBQ
Subtract Quick

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
SUBX - Subtract with Extend
SUBX
Subtract with Extend

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
SWAP - Swap Register Halves
SWAP
Swap Register Halves

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
TAS - Test and Set an Operand
TAS
Test and Set an Operand

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
TRAP - Trap
TRAP
Trap

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
TRAPV - Trap on Overflow
TRAPV
Trap on Overflow

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
TST - Test an Operand
TST
Test an Operand

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .
UNLK - Unlink
UNLK
Unlink

Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N .
Z .
V .
C .
X .

http://www.ii.uam.es/~fjgomez/68000/tutorial/cap4.html
Operaciones de movimiento de datos
Los transvases de datos y direcciones son realizados principalmente por la
instruccin MOVE. Esta instruccin con sus diversos modos de direccionamiento y las
tres longitudes de operando permite todo tipo de movimiento entre registros y memoria.
Adems de esto se permiten ciertos tipos de movimiento de datos especiales que son
ejecutados por las instrucciones: MOVEM ( mueve mltiples registros de una sola vez),
MOVEP (mueve valores a direcciones de perifricos de 8 bits), MOVEQ (ejecuta un
movimiento rpido de valores inmediatos pequeos), EXG (intercambia el contenido de
dos registros entre s), LEA (carga una direccin efectiva), PEA ( introduce en el stack
una direccin efectiva), LINK ( establece un encadenamiento), UNLIK ( elimina un
encadenamiento).

Instruccin
Sintaxis de los
operandos
Tamao Operacin
EXG Rn, Rm 32 Rn <=> Rm
LEA < ea > , An 32 < ea > => An
LINK An, # < d > 16 - >32 SP-4 => SP ; An => (SP)
SP => An ; SP + d => SP
MOVE
MOVEA
< ea >, < ea >
< ea >, list
8 , 16 , 32
16 , 32 -> 32
Origen => Destino
MOVEM list , < ea >
< ea > , list
16 , 32
16 , 32 -> 32
Reg de lista => Destino
Origen => Reg de lista
MOVEP Dn , (d16 , An )



(d16 , An ), Dn
16 , 32 Dn [ 31:24 ] => ( An + d ) ;
Dn [ 23:16 ] => ( An + d + 2 ) ;
Dn [ 15:8 ] => ( An + d + 4 ) ;
Dn [ 7:0 ] => ( An + d + 6 ) ;
( An + d ) => Dn [ 31:24 ] ;
( An + d + 2 ) => Dn [ 23:16 ] ;
( An + d + 4 ) => Dn [ 15:8 ] ;
( An + d + 6 ) => Dn [ 7:0 ] ;
MOVEQ # < data , Dn 8 -> 32 Dato inmediato => Destino
PEA < ea > 32 SP - 4 => SP ; < ea > => ( SP )
UNLK An 32
An => SP ; ( SP ) => An ; SP + 4
=> SP

fig. 4-2 - Instrucciones de movimientos de datos.
Operaciones aritmticas con enteros
Las operaciones aritmticas son bsicamente cuatro: ADD (suma), SUB (resta),
MUL (multiplicacin) y DIV (divisin). A estas deben aadirse CMP/CMPM
(comparacin), CLR (borrado) y NEG (negacin o cambio de signo).
Las operaciones de multiplicacin y divisin tienen dos variantes segn se trate de
aritmtica con signo o sin signo (MULS/MULU y DIV/DIVU).
Se pueden realizar operaciones multipresicin mediante las operaciones ADDX,
SUBX, NEGX y EXT (extensin de un operando de un determinado tamao hasta otro
superior).

Instruccin
Sintaxis de los
operandos
Tamao Operacin
ADD
ADDA
Dn , < ea >
< ea > , Dn
< ea > , An
8 , 16 , 32
8 , 16 , 32
16 , 32
Origen + Destino =>
Destino
ADDI
ADDQ
# < data > , < ea >
# < data > , < ea >
8 , 16 , 32
8 , 16 , 32
16 , 32
Dato inmediato + Destino
=>
Destino
ADDX
Dn , Dn
- ( An) , - ( An)
8 , 16 , 32
8 , 16 , 32
Origen + Destino + X =>
Destino
CLR < ea > 8 , 16 , 32 0 => Destino
CMP
CMPA
< ea > , Dn
< ea > , An
8 , 16 , 32
16 , 32
Destino - Origen
CMPI # < data > , < ea > 8 , 16 , 32 Destino -> Dato inmediato
CMPM ( An ) + , ( An ) + 8 , 16 , 32 Destino - Origen
DIVS
DIVU
< ea > , Dn 32/ 16 => 16 Destino / Origen =>
Destino
con / sin signo
EXT
Dn
Dn
8 => 16
16 => 32
Destino signo ext. =>
Destino
MULS
MULU
< ea > , Dn 16 * 16 => 32 Destino / Origen =>
Destino
con / sin signo
NEG < ea > 8 , 16 , 32 0 - Destino => Destino
NEGX < ea > 8 , 16 , 32 0 - Destino - X -> Destino
SUB

SUBA
Dn , < ea >
< ea > , Dn
< ea > , An
8 , 16 , 32
8 , 16 , 32
16 , 32
Destino - Origen =>
Destino
SUBI
SUBQ
# < data > , < ea >
# < data > , < ea >
8 , 16 , 32
8 , 16 , 32
Destino - Dato inm. =>
Destino
SUBX
Dn , Dn
- ( An) , - ( An)
8 , 16 , 32
8 , 16 , 32
Destino - Origen - X =>
Destino

fig. 4-3 - Instrucciones de operaciones aritmticas.
4.1.3.- Operaciones de lgica.
Las operaciones lgicas disponibles son AND, OR, EOR y NOR. Estas admiten todo
tipo de operando entero con cualquier tamao.
Para realizar operaciones lgicas con datos inmediatos existen las siguiente
variantes de las anteriores operaciones: ANDI, ORI y EORI.
A este conjunto de instrucciones se puede aadir la TST, que realiza una
comparacin del operando con cero, afectando en consecuencia a los cdigos de
condicin.

Instruccin Sintaxis de los operando Tamao Operacin
AND Dn, < ea >
< ea > , Dn
8 , 16 , 32
8 , 16 , 32
Origen Destino => Destino
ANDI
# < data > , < ea > 8 , 16 , 32
Dato inm. ^ Destino =>
Destino
EOR Dn, < ea > 8 , 16 , 32 Origen Destino => Destino
EORI # < data > , < ea > 8 , 16 , 32 Dato inm. Destino -> Destino
NOT < ea > 8 , 16 , 32 ~ Destino => Destino
OR Dn, < ea >
< ea > , Dn
8 , 16 , 32
8 , 16 , 32
Origen V Destino => Destino
ORI
# < data > , < ea > 8 , 16 , 32
Dato inm. V Destino =>
Destino
TST < ea > 8 , 16 , 32 Destino - 0 ==> Condiciones
del CCR

fig. 4-4 - Instrucciones de operaciones de lgica.
4.1.4.- Operaciones de rotacin y desplazamiento.
Se dispone de instrucciones de desplazamiento de los bits en un operando en los dos
sentidos, derecha e izquierda, y en modo aritmtico (con signo) y lgico. Estas son
ASL, LSL y LSR
Las operaciones de rotacin tambin pueden realizarse en los dos sentidos, y
adems pueden afectar o no al bit de extensin en el registro de cdigos de condicin
(CCR). se tienen por tanto cuatro instrucciones que son: ROR, ROL, ROXR, ROXL.
Las operaciones de rotacin y desplazamiento sobre registros admiten todos los
tamaos de operando y un nmero de bits a desplazar entre 1 y 8. Si el operando est en
memoria slo se admite el tamao word y movimientos de un bit.
La instruccin swap intercambia los contenidos de las dos mitades de 16 bits de un
registro.

Instruccin Sintaxis de los operandos Tamao Operacin
ASL Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
16

ASR Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
16

LSL Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
16

LSR Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
16

ROL Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
16

ROR Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
16

ROXL Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
16

ROXR Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
16

SWAP Dn 32

fig. 4-5 - Instrucciones de rotacin y desplazamiento.
4.1.5.- Operaciones de manipulacin de bits.
Se pueden realizar operaciones con bits mediante las instrucciones: BTST ( testeo de un
bit ). BSET ( testeo y puesta a uno de un bit ), BCLR ( testeo y puesta a cero de un bit )
y BCHG ( testeo y cambio del estado de un bit ). Cuando el operando es un registro el
tamao asumido es de 32 bits, pero si el operando est en memoria el tamao se toma
como byte.


Instruccin
Sintaxis de los
operandos
Tamao Operacin
BCHG Dn , < ea >
# < data > , < ea >
8 , 32
8 , 32
~ Destino [P] => Z =>
Destino [P]
BCLR Dn , < ea >
# < data > , < ea >
8 , 32
8 , 32
~ Destino [P] => Z;
0 => Destino [P]
BSET Dn , < ea >
# < data > , < ea >
8 , 32
8 , 32
~ Destino [P] => Z;
1 => Destino [P]
BTST Dn , < ea >
# < data > , < ea >
8 , 32
8 , 32
~ Destino [P] => Z ;
fig. 4-6 - Instrucciones de manipulaacin de bits.
4.1.6.- Operaciones con decimal codificado en binario ( BCD ).
Pueden realizarse operaciones aritmticas multi precisin con formato decimal
codificado en binario (BCD) mediante: ABCD ( suma decimal con extensin ),SBCD (
resta decimal con extensin ) y NBCD ( negacin o cambio de signo decimal con
extensin ).


Instruccin Sintaxis de los operandos Tamao Operacin
ABCD Dn, Dn
- ( An ), - ( An )
8
8
Origen + Destino + X =>
Destino
10 10 10
NBCD < ea > 8 0 - Destino + X => Destino
10 10
SBCD Dn, Dn
- ( An ), - ( An )
8
8
Destino - Origen - X =>
Destino
10 10 10

fig. 4-2 - Instrucciones de movimientos de datos.
4.1.7.- Operaciones de control del programa.
El flujo del programa se controla mediante tres grupos de instrucciones: saltos
condicionales ( Bcc y DBcc ), saltos incondicionales ( BRA, BSR, JMP y JSR ) y
retornos ( RTR y RTS ).
Las instrucciones de salto condicional admiten las condiciones de test vistas en el
apartado 3.2.
La instruccin NOP no tiene ningn efecto, por lo que puede considerarse dentro de
este grupo como un salto a la siguiente posicin.

Instruccin
Sintaxis de los
operandos
Tamao Operacin
Condicionales
Bcc < label > 8 , 16 Si cc cierta, PC + d => PC
DBcc
Dn , < label > 16 Si cc falsa, Dn - 1 => Dn;
si Dn distinto - 1, PC + d => PC
Scc < ea > 8 Si cc cierta 11111111 => Destino
si no, 0 => Destino
Incondicionales
BRA < label > 8, 16 PC + d => PC
BSR < label > 8, 16 SP - 4 => SP;
PC => ( SP );
PC + d => PC
JMP < ea > - < ea > => PC
JSR < ea > - SP - 4 =>SP;
PC => ( SP );
< ea > => PC
NOP - - -
Retornos
RTR - - SP => CCR;
SP + 2 => SP;
( SP ) => PC;
SP + 4 => SP
RTS - - ( SP ) => PC;
SP + 4 => SP

fig. 4-8 - Instrucciones de control de programa.
4.1.8.- Operaciones de control del sistema.
Las operaciones de control del sistema se realizan mediante las instrucciones
privilegiadas ( RESET, RTE, STOP, ORI to SR, MOVE USP, ANDI to SR, EORI to
SR y MOVE EAA to SR ), las de generacin de traps ( TRAP, TRAPV y CHK ) y
aquellas que utilizan o modifican el registro de estado SR ( ANDI CCR, EORI CCR,
MOVE CCR to EA, ORI CCR y MOVE SR to EA ).

Instruccin
Sintaxis de los
operandos
Tamao Operacin
Privilegiadas
ANDI # < data > , SR 16 Dato inmediato ^ SR =>SR
EORI # < data > , SR 16 Dato inmediato SR => SR
MOVE < ea > , SR 16 Origen => SR
MOVE USP, An
An, USP
32 USP => An
An => USP
ORI # < data > , SR 16 Dato inmediato SR => SR
RESET - - Activa la linea RESET
RTE - - ( SP ) => SR;
SP + 2 => SP;
( SP ) => PC;
SP + 4 => SP;
STOP # < data > 16 Dato inmediato => SR; Parar
Generacin de Traps
CHK < ea >, Dn 16 Si Dn < 0 Dn > ( < ea > ),
entonces excepcin CHK
TRAP # < data > 16 SSP - 4 => SSP;
PC => ( SSP );
SSP - 2 => SSP;
SR => ( SSP );
Vector trap n < data > => PC
TRAPV - - Si V es 1, proceso de excepcin
Registro de condiciones
ANDI # < data > , CCR 8 Dato inmediato ^ CCR => CCR
EORI # < data > , CCR 8 Dato inmediato CCR => CCR
MOVE SR, < ea > 16 SR => Destino
MOVE < ea > , CCR 16 Origen => CCR
ORI # < data > , CCR 8 Dato inmediato CCR => CCR

fig. 4-9 - Instrucciones de control del sistema.
4.1.9.- Operaciones multiprocesador.
Para trabajar con sistemas multiprocesador se dispone de la instruccin TAS que ejecuta
un ciclo de lectura-modificacin-escritura indivisible.

Instruccin
Sintaxis de los
operando
Tamao Operacin
TAS < ea > 8 Destino - 0; 1 => Destino

fig. 4-10 - Instrucciones multiprocesador.

4.2.3 Modos de direccionamiento.

MODOS DE DIRECCIONAMIENTO

2.1.-Direccionamiento y Formato de las instrucciones.
La codificacin de instrucciones del 68000 contiene dos tipos de datos: la operacin
a realizar y la localizacin de los operando. Esta localizacin de operando puede hacerse
de una de las tres siguientes formas:
'Especificacin de registro'. En la codificacin de la instruccin hay un campo en
el que se determina un nmero de registro.
'Direccin efectiva'. Este sistema se ver detalladamente a continuacin.
'Referencia implcita'. Por definicin de la operacin a realizar est implcito el
uso de determinados registros.
Los 14 modos de direccionamiento se agrupan en seis tipos bsicos:
1.-Direccionamiento directo a registro
* Directo a registro de datos
* Directo a registro de direcciones
2.- Direccionamiento absoluto
* Absoluto corto
* Absoluto largo
3.- Direccionamiento relativo al puntero de programa
* Relativo con desplazamiento
* Relativo con ndice y desplazamiento
4.-Direccionamiento indirecto
* Indirecto
* Indirecto con pos incremento
* Indirecto con pre decremento
* Indirecto con ndice y desplazamiento
5.- Direccionamiento inmediato
* Inmediato
* Inmediato rpido
6.- Direccionamiento implcito
* Registro implcito

Modos de direccionamiento.

2.2.1- Formato de las instrucciones.
La codificacin de instrucciones puede ocupar desde una word hasta cinco. En la
primera word se especifica la operacin a realizar y el tamao de los operando.


Cuando no se utiliza direccionamiento por direccin efectiva, la word de operacin
puede llevar tambin la especificacin de registros. En caso de utilizar el mtodo de
direccin efectiva se necesitan otras words de extensin que en alguna ocasin pueden
ser hasta cuatro.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
word de operacin
( especifica la operacin y el modo )
operando inmediato o extensin de direccin
efectiva de origen
( si es necesario, una o dos words )
direccin efectiva del destino
( si es necesario, una o dos words )
Formato de las instrucciones
2.2.2- Direccin efectiva.
La mayora de los direccionamientos en el 68000 se realizan mediante el mtodo de
'direccin efectiva'. Este mtodo consiste en codificar dentro de la word de operacin el
tipo de direccionamiento a usar segn la pauta de la siguiente figura.


Codificacin de la direccin efectiva
Codificacin:
MODO DE DIRECCIONAMIENTO Notacin MODO Registro
Directo por registro de datos. Dn 000 nmero
Directo por registro de direcciones An 001 nmero
Indirecto por registro de direcciones. (An) 010 nmero
idem con postincremento. (An)+ 011 nmero
idem con predecremento. -(An) 100 nmero
idem con desplazamiento. (d16,An) 101 nmero
idem con ndice y desplazamiento. (d8,An,Xm) 110 nmero
Absoluto corto xxx.W 111 000
Absoluto largo xxx.L 111 001
PC con desplazamiento (d16,PC) 111 010
PC con indice y desplazamiento (d8,PC,Xn)
111 011
Inmediato #<dato>
111 100
Direccionamientos por direccin efectiva
2.2.3- Modos directos a registro.
Estos modos especifican como operando uno de los 16 registros multifuncin del
68000. El tamao a utilizar de los mismos queda especificado en la word de operacin.
Considrese como ejemplo la instruccin ADD.W <ea>,D3 que realizar la siguente
suma con operando de tamao word : Dn + <ea> -> Dn.
Que tiene como formato general


La codificacin de esta instruccion a falta de decidir el modo de direccionamiento
empleado para el operando fuente ser

donde
- bits 15-12 indican el cdigo de operacin para ADD (1101)
- bits 11-9 indican que el registro de datos D3 es el destino (3 =011)
- bits 8-6 indican el tamao de operando (001 = WORD)
- bits 5-3 indicarn el modo de direccionamiento de la fuente
- bits 2-0 indicaran el registro(caso de ser necesario de la fuente).
2.2.3.1- Directo a registro de datos.
sera por ejemplo ADD.W D1,D3
El operando fuente es el registro de datos indicado en el cdigo.

donde modo=000 indica un registro de datos y 001 indica que es D1
2.2.3.2- Directo a registro de direcciones.
sera por ejemplo ADD.W A1,D3
El operando fuente es el registro de direcciones indicado en el cdigo.

donde modo=001 indica un registro de direcciones y 001 indica que es A1

2.2.4- Modos de direccionamiento de memoria.
Estos modos especifican como operando una posicin de memoria mediante
diferentes clculos para obtener la direccin de la misma.
2.2.4.1- Indirecto por registro de direcciones.
sera por ejemplo ADD.W (A0),D3
El operando se encuentra en memoria, en una posicin cuya direccin se
corresponde con el contenido del registro An.

donde modo=010 indica indirecto por registro de direcciones y 000 indica que es el
registro A0
2.2.4.2- Indirecto con pos incremento.
sera por ejemplo ADD.W (A0)+,D3
El operando se encuentra en memoria, en una posicin cuya direccin se
corresponde con el contenido del registro An. Una vez determinada dicha direccin se
incrementa el contenido del registro An en 1, 2 4 en funcin de la longitud de los
operandos (byte, word long word respectivamente).

donde modo=011 indica indirecto por registro de direcciones y 000 indica que es el
registro A0
NOTA: Si el registro es A7 (stack) y el tamao de la operacin es byte, el
postincremento es de dos unidades para mantener el alineamiento en direcciones pares
del stack. El byte queda almacenado en la direccin par, dejando sin significado el
contenido de la direccin impar inmediatamente siguiente.
2.2.4.3- Indirecto con pre decremento.
sera por ejemplo ADD.W -(A0),D3
Se comienza por decremento el contenido del registro An en 1, 2 4 en funcin de
la longitud de los operando (byte, word long word respectivamente). A continuacin
se considera que el operando se encuentra en memoria, en una posicin cuya direccin
se corresponde con el contenido del registro An.

donde modo=011 indica indirecto por registro de direcciones y 000 indica que es el
registro A0
NOTA: Si el registro es A7 (stack) y el tamao de la operacin es byte, el pre
decremento es de dos unidades para mantener el alineamiento en direcciones pares del
stack. El byte queda almacenado en la direccin impar inmediatamente siguiente.

2.2.4.4- Indirecto con desplazamiento.
ADD 4(A0),D3
Al contenido del registro An se le suma un entero de 16 bits previamente extendido
a 32, que debe encontrarse en la primera word de extensin (detrs de la word de
operacin). El resultado de dicha operacin es la direccin de memoria que determina el
operando.

2.2.4.5- Indirecto con ndice y desplazamiento.
El formato de la instruccin sera


donde
- Rn es el numero de registro empleado como indice
- (1) Indica el tipo de registro indice , = registro de datos y 1 registro de
direcciones
- (2) Indica el tamao del registro empleado como indice , 0 = WORD, 1 =
LONG,
- Desplazamietno de 8 bits. ( es un numero en complemento a 2)
Como por ejemplo : ADD 4(A0,D6),D3
Al contenido del registro An se le suma un entero de 8 bits previamente extendido a
32, que debe encontrarse en la primera word de extensin (detrs de la word de
operacin). A continuacin, al resultado obtenido se le suma el registro ndice (tambin
codificado en la word de extensin). Si el registro ndice est tomado en tamao word,
es extendido a 32 bits con anterioridad a la suma. Finalmente el resultado de ambas
sumas es la direccin de memoria que determina el operando.
La operacin realizada sera la suma siguiente:

o tambin puede ser ADD 4(A0,D6.L),D3



2.2.5- Modos especiales de direccionamiento.
Estos modos de direccionamiento no se basan en la utilizacin de registros.
2.2.5.1- Direccionamiento absoluto corto.
por ejemplo ADD ETIQUETA,D3

donde modo=111 indic modo especial y 000 indica que la direccin especificada en la
etiqueta cabe en un WORD.
Este modo de direccionamiento se basa en una word de extensin de la que se
obtiene la direccin del operando una vez que se le ha extendido el signo hasta 32 bits.
Por tanto este direccionamiento se puede utilizar dentro de los 32 kbytes primeros de la
memoria (0000-7FFF) y dentro de los 32 kbytes finales (FF8000-FFFFFF).

2.2.5.2- Direccionamiento absoluto largo.
por ejemplo ADD ETIQUETA,D3

donde modo=111 indic modo especial y 001 indica que la direccion especificada en la
etiqueta cabe en un LONG.
Este modo de direccionamiento utiliza dos words de extensin de las que se obtiene
la direccin del operando por concatenacin, situando la primera como parte alta de la
direccin y la segunda como parte baja.

2.2.5.3- Indirecto por PC con desplazamiento.
Al contenido del puntero de programa (program counter) se le suma un entero de 16
bits previamente extendido a 32, que debe encontrarse en la primera word de extensin
(detrs de la word de operacin). El resultado de dicha operacin es la direccin de
memoria que determina el operando. La direccin que contiene el puntero de programa
al tomar su contenido para hacer la suma es la de la word de extensin.

2.2.5.4- Indirecto por PC con ndice.
Al contenido del contador de programa (program counter) se le suma un entero de 8
bits previamente extendido a 32, que debe encontrarse en la primera word de extensin
(detrs de la word de operacin). A continuacin, al resultado obtenido se le suma el
registro ndice (tambin codificado en la word de extensin). Si el registro ndice est
tomado en tamao word, es extendido a 32 bits con anterioridad a la suma. Finalmente
el resultado de ambas sumas es la direccin de memoria que determina el operando. La
direccin que contiene el puntero de programa al tomar su contenido para hacer la suma
es la de la word de extensin.

El formato de la instruccin tiene la misma estructura que la explicada con anterioridad
el el direcionamiento indirecto con ndice y desplazamiento.
2.2.5.5- Dato inmediato.

Con este tipo de direccionamiento el operando se encuentra en una o dos words de
extensin, dependiendo de la longitud de la operacin. Si la operacin es de byte se
utiliza una word de extensin cuyos bits 0-7 son el operando y los 8-15 se ponen a cero.
En el caso de una operacin de tamao word se utiliza tambin una sola word y toda
ella es el operando. Por ltimo, en el caso de un tamao de operacin long word, el
operando se forma por concatenacin de dos words de extensin; la primera es la parte
alta (bits 16-31) y la segunda la parte baja (bits 0-15).
Por ejemplo ADDI #7,D3
El formato general de esta instruccin es

que en el caso del ejemplo es

Un caso particular es el direecionamiento inmediato rpido
ADDQ #7,D3
con el siguiente formato general

que se reduce por tanto a


2.2.6- Direccionamiento implcito.
Algunas instrucciones llevan implcito el uso de determinados registros. Estas son
las siguientes:
Mnemnico Instruccin Registros afectados
Bcc, BRA Salto condicional e incondicional PC
BSR Salto a subrutina PC, SP
CHK Chequeo de registros entre lmites SSP, SR
DBcc Test de condicin, decremento y salto PC
DIVS Divisin con signo SSP, SR
DIVU Divisin sin signo SSP, SR
JMP Salto PC
JSR Salto a subrutina PC, SP
LINK Encadena y reserva espacio SP
MOVE CCR Mover los cdigos de condicin SR
MOVE SR Mover el registro de estado SR
MOVE USP Mover el apuntador de pila de usuario USP
PEA Apilar la direccin efectiva SP
RTE Retorno de una excepcin PC, SP, SR
RTR Retorno restablecido cdigos condicin PC, SP, SR
RTS Retorno de subrutina PC, SP
TRAP Trap SSP, SR
TRAPV Trap si hay rebose SSP, SR
UNLK Desencadenar SP

http://www.ii.uam.es/~fjgomez/68000/tutorial/cap2.html

Modos de direccionamiento sin ningn componente.
El modo de direccionamiento sin componente, normalmente llamado direccionamiento
inmediato, es una forma particular ya que no tiene componente de direccin. El valor
del operando se especifica directamente en la misma instruccin. La importancia del
direccionamiento inmediato es obvia debido a la frecuencia con que esta ocurre. La
mayora de las constantes en un programa son especificadas usando direccionamiento
inmediato lo cual es ventajoso debido a que las constantes suelen ser nmeros pequeos
(cero y uno ocurren frecuentemente). Consecuentemente, esto es mas eficiente para
especificar las constantes, mejor que la ubicacin de una direccin de memoria. Adems
las constantes no necesitan ser cambiadas, porque ellas pueden ser colocadas en la
misma instruccin.
Hay dos lugares, bsicamente diferentes, en los cuales se almacena el dato inmediato :
1. Dentro de la instruccin bsica: esto es frecuentemente llamado direccionamiento
inmediato corto o rpido. Las constantes pueden ser solamente pequeas (debido a que
ellas tienen que ajustarse dentro del primer byte o palabra de instruccin), sin embargo
ellas usan memoria mas eficientemente.
2. Dentro de extensiones de instrucciones: este mtodo usa constantes con la longitud
igual a la longitud de instruccin bsica o un mltiplo de ellas. La longitud del dato
inmediato es normalmente especificada dentro de la parte bsica y el dato sigue
inmediatamente a esta parte bsica por ello se llama direccionamiento inmediato.

Modos de direccionamiento de un componente
Estos modos de direccionamiento especifican la direccin efectiva del valor del
operando mediante el uso de un nico componente en la operacin especifica. Este
componente puede ser un numero de registro o una direccin absoluta de un operando.
Ambos componentes pueden ser usados en forma directa o indirecta.
- Direccionamiento registro-directo. En este modo, se especifica un numero de
registro que indica al registro que contiene el valor del operando. Este modo es usado
frecuentemente por su eficiencia y velocidad. Ya que son pocos los registros que estn
disponibles (tpicamente 8 o 16), se puede obtener una especificacin compacta del
operando, usando 3 o 4 bits. Adems, porque el archivo del registro esta localizado
normalmente en un chip, este tiempo de acceso es muy pequeo comparado con el
tiempo de acceso a memoria o incluso al cache. Todas las arquitecturas modernas
poseen ms de un registro para soportar este modo. En arquitecturas con solo un
registro, este es a menudo especificado implcitamente.
La arquitectura MC68020 divide su set de registro en dos grupos : uno denominado
Registros de datos los cuales estn destinados principalmente para utilizarse como
fuente o destino para las operaciones aritmticas y lgicas. Y el otro grupo denominado
Registros de direcciones los cuales se utilizan principalmente para especificar
direcciones de operando .
- Direccionamiento absoluto. En este modo de direccionamiento una instruccin esta
compuesta por el cdigo de operacin y a continuacin la direccin del operando,
directamente especificada en uno o ms byte segn el alcance del campo de direcciones.
El direccionamiento absoluto es necesario en muchas arquitecturas para la
especificacin de un vector de entrada / salida y direcciones del registro de estado
(asumiendo que ellas forman una superposicin lgica con la memoria principal.
- Direccionamiento indirecto. Este direccionamiento es muy usado cuando las
direcciones de las estructuras de datos no son conocidas, hasta que se corra el programa,
porque las direcciones deben ser calculadas con instrucciones y almacenadas en un
registro, despus de lo cual el operando puede ser recuperado va este registro.
- Direccionamiento indirecto con modificacin de registro. Son posibles muchas
variaciones del modo de direccionamiento registro indirecto bsico. Muchas
arquitecturas soportan modos de direccionamiento en los cuales el registro contiene la
direccin del operando, la cual es modificada antes o despus de usado. Son entonces
posibles 4 modos, dependiendo de la direccin de la modificacin (incremento o
decremento) y del tiempo de modificacin (pre o pos modificacin).

Modos de direccionamientos de dos componentes.
Se pueden combinar dos componentes bsicos para formar un modo de
direccionamiento de dos componentes. Generalmente uno de los componentes es
denominado Base, mientras que el otro se denomina Desplazamiento, a menudo el
desplazamiento es la distancia que hay entre la direccin base y la direccin del
operando. La direccin base y el desplazamiento pueden ser fijos (conociendo el tiempo
de compilacin) o variables (calculando el tiempo de ejecucin del programa).
- Direccionamiento indexado. En este modo se especifica la direccin base (fija) en el
cdigo de instruccin (comparable al direccionamiento absoluto), as para formar la
direccin del operando se suma a la direccin base, el contenido de un registro
denominado ndice. Este modo se emplea cuando la direccin base de una estructura de
datos, tal como un vector, se conoce en el momento de la compilacin pero la posicin
exacta del elemento solo se puede determinar en el momento de la ejecucin. Para
acondicionar el tamao del operando de varias longitudes, el ndice es a menudo
multiplicado por un factor de escala. Si un vector A [0 .. 100] posee datos ocupando 4
byte, el factor de escala es 4, asumiendo una resolucin de direccin de un byte.
Dado que la direccin base para el vector A[0..100], cuya direccin de comienzo es
1000, el elemento A[3] puede ser encontrado en la direccin 1000 + 3-4 = 1012.
Tambin existe el modo de indexado indirecto, el cual presenta dos variantes : Pre
indexado indirecto y Pos-indexado indirecto. En el modo de pre-indexado, el
desplazamiento se suma a la direccin base, produciendo una direccin intermedia. Los
contenidos de estas direcciones intermedias son luego usados como direcciones de
operando. En el modo de pos indexado, la direccin base es usada como una direccin
intermedia. Despus, el desplazamiento se adiciona al contenido de la direccin
intermedia para obtener la direccin del operando.
-
- Direccionamiento base-indexado. En este modo, tanto la direccin base como el
desplazamiento son variables, y estos son calculados en el tiempo de ejecucin. Esto
permite el acceso a un elemento arbitrario en una estructura de datos, con la direccin
de comienzo que es desconocida al compilar.
- Direccionamiento relativo al contador de programa. Esta es una clase especial de
modo de direccionamiento de dos componentes, la cual usa el contador de programa
(PC) como el registro que contiene la direccin base. En este modo se obtiene la
direccin efectiva como la suma de un desplazamiento contenido como segundo byte de
la instruccin con el contenido del PC. Dado que el valor de la direccin base es
variable hay dos modos de direccionamiento posibles : el PC base (llamado
generalmente direccionamiento relativo)y el PC base indexado.
El uso ms comn del direccionamiento PC relativo es en instrucciones divididas, las
cuales son esenciales para la implementacin de estructuras de control en lenguajes de
alto nivel.

Modos de direccionamiento de multi-componentes.
Todos los modos de direccionamiento previamente tratados pueden ser combinados
para formar todas los tipos de modos de direccionamiento multi-componentes (algunos
muy utilizados)


4.2.4 Language ensmblador.
Estructura general de un programa en ensamblador.
En una programa escrito en lenguaje ensamblador, adems de las 35 instrucciones que
interpreta el procesador tambin se colocan directivas, que son comandos para realizar ciertas
operaciones con el programa. A continuacin se comentan las partes que generalmente hay en
un programa:
1. Modelo de procesador y sistema de numeracin.
Los programas comienzan con la directiva list que referencia el modelo de micros controlador.
Tambin se suele especificar el tipo de numeracin que se emplear con la directiva radix.
Lo usual es emplear el sistema hexadecimal, en el que los valores se expresan precedidos
de 0x. En los ejemplos que se desarrollarn a lo largo del tema comenzaremos el
programa ensamblador con las siguientes directivas (detrs del punto y coma se pueden
aadir comentarios):
List p=16F84 ;Se utiliza el micros controlador PIC16F84
Radix hex ; Se usar el sistema hexadecimal
2. Variables.
Las posiciones de la memoria de datos se utilizan para guardar operando y resultados,
adems de almacenar registros especiales.
Para que al programador le sea ms sencillo confeccionar el programa, en lugar de hacer
referencia a las posiciones de la memoria donde se encuentran los datos que va a emplear,
a cada una de estas posiciones se le asocia un nombre. La directiva equ relaciona un
nombre con la direccin que se asigna, as el programador trabaja con nombres y el
compilador traduce automticamente stos a las direcciones correspondientes. Por ejemplo
el registro que contiene la informacin de estado se encuentra en la direccin 0x03, el
puerto de entrada A en 0x05, etc.. Si queremos emplear nombres de variables para estas
direcciones de memoria escribiramos:
ESTADO equ 0x03 ;La etiqueta ESTADO est asociada a la direccin 0x03
PUERTAA equ 0x05 ;La etiqueta PUERTAA est asociada a la direccin 0x05
3. Origen del programa.
Antes de comenzar a escribir instrucciones mquina debe definirse la direccin de la
memoria de programa a partir de la cual se desea comenzar a cargar el programa. Para ello
se emplea la directiva org. En los PIC el origen del programa siempre se pone en la
direccin 0x00 porque es donde comienza a ejecutarse el programa despus de hacer un
reset. Definiremos el origen de la siguiente manera:
org 0x00 ;Inicio de programa
Cuando el programa maneja interrupciones, no se comienza a cargar el programa desde la
direccin 0x00, porque si se genera una interrupcin el programa que la atiende comienza
en la direccin 0x04 (vector de interrupcin). En este caso lo que se suele hacer es poner
en la direccin 0x00 un salto a una direccin de la memoria de programa posterior al vector
de reset, por ejemplo saltaramos a una posicin etiquetada como INICIO que se encuentra
en la direccin 0x05.

org 0x00 ;La siguiente instruccin estar al inicio de la memoria
goto INICIO ;Salta a la direccin etiquetada con INICIO
org 0x05 ;La siguiente instruccin estar en la direccin 0x05
INICIO
-------
-------
end
4. Cuerpo del programa y final.
Tras indicar la direccin donde se comenzar a cargar el programa, sigue el cuerpo del
mismo compuesto por las instrucciones mquina y los operando de stas.
El cdigo se estructura en columnas. La primera columna se utiliza para las etiquetas que
se emplean para hacer referencia a partes del programa y nos permiten realizar saltos a
estas partes (como INICIO en el ejemplo anterior). Las siguientes columnas contienen el
campo de instrucciones, el campo de datos y el campo de comentarios. Los comentarios
comienzan con ; ).
Al final del programa se coloca la directiva end.
3.4.2. Ejemplos de programacin.
Ejemplo 6.1. Sumar el contenido de la posicin de memoria 0Ch (5) con el contenido de la
posicin de memoria 0Dh (2) y almacenar el resultado en la posicin de memoria 0Eh.
El sumador (ALU) del PIC es capaz de sumar dos datos de 8
bits cada uno, pero debido a su configuracin uno de los sumandos
debe proceder del registro de trabajo W (Figura 6-7).
El ejemplo maneja tres posiciones de la memoria de datos de
propsito general (figura 6-19). En la posicin 0Ch se colocar el
primer operando con el valor 5; en la posicin 0Dh el segundo con el
valor 2 y el resultado se almacenar en 0Eh. Como se vio en la
Figura 6-9 las direcciones 0Ch, 0Dh y 0Eh son las tres primeras
posiciones de la memoria de datos RAM (banco 0) que el usuario
puede emplear para fines propios.
Antes de exponer el cdigo del programa se explican las
instrucciones que se van a utilizar:
Instruccin mov
Permite transferir el contenido de un registro fuente f a un registro destino d. En los PIC
todos los datos residen en posiciones de la memoria de datos a excepcin del registro W.
La instruccin mov puede mover tres tipos fundamentales de operando:
1. El contenido del registro W.
2. El contenido de una posicin de memoria de datos.
3. Un literal o valor.
movf f,d : mueve el contenido del operando fuente f (posicin de la memoria de datos) al
destino d (puede ser W o la propia fuente).

Programa fuente:
El programa fuente esta compuesto por una sucesin de lneas de programa. Cada lnea
de programa esta compuesta por 4 campos separados por uno o ms espacios o
tabulaciones. Estos campos son:
[Etiqueta] Comando [Operando(s)] [;Comentario]
La etiqueta es opcional. El comando puede ser un mnemnico del conjunto de
instrucciones. El operando esta asociado al comando, si no hay comando no hay
operando, e inclusive algunos comandos no llevan operando. El comentario es opcional
para el compilador aunque es buena prctica considerarlo obligatorio para el
programador.
La etiqueta, es el campo que empieza en la primer posicin de la lnea. No se pueden
insertar espacios o tabulaciones antes de la etiqueta sino ser considerado comando.
Identifica la lnea de programa haciendo que el compilador le asigne un valor
automticamente. Si se trata de una lnea cuyo comando es una instruccin de programa
del micros controlador, se le asigna el valor de la direccin de memoria correspondiente
a dicha instruccin (location counter). En otros casos se le asigna un valor de una
constante, o la direccin de una variable, o ser el nombre de una macroinstruccin, etc.
El comando puede ser un cdigo mnemnico de instruccin del micros controlador, o
una directiva o pseudo s instruccin para el compilador. En el primer caso ser
directamente traducido a cdigo de maquina, en el segundo caso ser interpretado por el
compilador y realizara alguna accin en tiempo de compilacin como ser asignar un
valor a una etiqueta, etc.
El campo de parmetros puede contener uno o ms parmetros separados por comas.
Los parmetros dependen de la instruccin o directiva. Pueden ser nmeros o literales
que representen constantes o direcciones.
El campo de comentario debe comenzar con un carcter punto y coma. No necesita
tener espacios o tabulaciones separndolo del campo anterior, e incluso puede empezar
en la primer posicin de la lnea. El compilador ignora todo el texto que contenga la
lnea despus de un carcter punto y coma. De esta manera pueden incluirse lneas que
contengan solo comentarios, y es muy buena prctica hacer uso y abuso de esta
posibilidad para que los programas resulten autodocumentados.
http://www.geocities.com/micros_uan/cap2.html
Conjunto de instrucciones
El conjunto de instrucciones de los microprocesadores PIC 16C5X consiste en un
pequeo repertorio de solo 33 instrucciones de 12 bits, que pueden ser agrupadas para
su estudio en tres a cinco grupos. En este curso se ha optado por clasificarlas, desde el
punto de vista del programador, en cinco categoras bien definidas de acuerdo con la
funcin y el tipo de operando involucrados. En primer lugar se agrupan las
instrucciones que operan con bytes y que involucran algn registro de la memoria
interna. En segundo lugar se analizaran las instrucciones que operan solo sobre el
registro W y que permiten cargarle una constante implcita o incluida literalmente en la
instruccin (literales). En tercer lugar se agrupan las instrucciones que operan sobre bits
individuales de los registros de la memoria interna. En cuarto lugar se clasifican las
instrucciones de control de flujo del programa, es decir las que permiten alterar la
secuencia lineal de ejecucin de las instrucciones. Por ltimo se agrupan unas pocas
instrucciones que llamaremos especiales, cuyas funciones o tipos de operandos son muy
especficos y no encajan en ninguna de las clasificaciones anteriores.


Instrucciones de Byte que operan con Registros
Estas instrucciones pueden ser de simple o doble operando de origen. El primer
operando de origen ser siempre el registro seleccionado en la instruccin, el segundo,
en caso de existir, ser el registro W. El destino, es decir donde se guardara el resultado,
ser el registro seleccionado o el W, segn se seleccione con un bit de la instruccin.
El formato genrico de estas instrucciones es el siguiente :
11 10 9 8 7 6 5 4 3 2 1
0
d f f f f f
Los bits 0 a 4 (5 bits), denominados f permiten seleccionar uno de 32 registros de la
memoria interna. El bit 5, denominado d, permite especificar el destino del resultado.
Si d = 1 el resultado se guardara en el registro seleccionado. Si d = 0 el resultado se
guardara en W. Los bits 6 a 11 identifican la instruccin especifica a realizar.
Las instrucciones siguientes son las tres operaciones lgicas de doble operando :
ANDWF f,d ;operacin AND lgica, destino = W . f
IORWF f,d ;operacin OR lgica, destino = W v f
XORWF f,d ;operacin XOR lgica, destino = W f
Los nombres mnemnicos de estas instrucciones provienen de : AND W con F,
Inclusive OR W con F y XOR W con F.
Las que siguen son las cuatro operaciones aritmticas y lgicas sencillas de simple
operando :
MOVF f,d ;movimiento de datos, destino = f
COMF f,d ;complemento lgico, destino = NOT f
INCF f,d ;incremento aritmtico, destino = f + 1
DECF f,d ;decremento aritmtico, destino = f - 1
Los mnemnicos de estas instrucciones provienen de : MOVe File, COMplement File,
INCrement File y DECrement File.
En las siete instrucciones anteriores el nico bit afectado de la palabra de estado del
procesador es el Z, que se pone en 1 si el resultado de la operacin es 00000000, y se
pone en 0 si el resultado tiene cualquier otro valor.

A continuacin siguen las dos instrucciones de rotacin de bits a travs del CARRY :
RLF f,d ;rotacin a la izquierda, destino = f ROT
RRF f,d ;rotacin a la derecha, destino = f ROT
En estas operaciones (Rotate Left File y Rotate Right File) los bits son desplazados de
cada posicin a la siguiente, en sentido derecho o izquierdo. El desplazamiento es
cerrado, formando un anillo, con el bit C (CARRY) de la palabra de estado.
En estas dos instrucciones, el nico bit afectado de la palabra de estado del procesador
es el bit C, que tomar el valor que tenia el bit 7 o el bit 0, segn sea el sentido del
desplazamiento.
Estas instrucciones son muy tiles para la manipulacin de bits, y adems para realizar
operaciones aritmticas, ya que en numeracin binaria, desplazar un nmero a la
izquierda es equivalente a multiplicarlo por 2, y hacia la derecha, a dividirlo por 2.
La instruccin siguiente realiza el intercambio de posiciones entre los cuatro bits menos
significativos y los cuatro ms significativos (nibble bajo y nibble alto).
SWAPF f,d ;intercambia nibbles, destino = SWAP f
Esta instruccin (SWAP File) no afecta ninguno de los bits de la palabra de estado del
procesador.
Esta instruccin es muy til para el manipuleo de nmeros BCD empaquetados, en los
que en un solo byte se guardan dos dgitos BCD (uno en cada nibble).

Las dos operaciones que siguen son la suma y la resta aritmticas :
ADDWF f,d ;suma aritmtica, destino = f + W
SUBWF f,d ;resta aritmtica, destino = f - W
Estas operaciones (ADD W a F y SUBstract W de F) afectan a los tres bits de estado C,
DC y Z.
El bit Z se pone en 1 si el resultado de la operacin es 00000000, y se pone en 0 si el
resultado tiene cualquier otro valor.
La suma se realiza en aritmtica binaria pura sin signo. Si hay un acarreo del bit 7, es
decir que el resultado es mayor que 255, el bit C (carry) resulta 1, en caso contrario
resulta 0. Si hay un acarreo del bit 3, es decir que la suma de las dos mitades (nibbles)
menos significativas (bits 0 a 3) resulta mayor que 15, se pone en 1 el bit DC (digit
carry), en caso contrario se pone en 0.
Ejemplos :
1010 0010 1101 0000
+ 0100 1111 C DC Z + 0110 1111 C DC Z
1111 0001 0 1 0 0011 1111 1 0 0

La resta se realiza sumando, en binario puro sin signo, el registro f ms el complemento
a dos de W (el complemento a 1, o complemento lgico, ms 1)
Ejemplos :
f 0100 0100 0010 1000
W - 0010 1000 C DC Z - 0100 0100 C DC Z
0001 1100 1 0 0 1110 0100 0 1 0

equivalente a :
f 0100 0100 0010 1000
cmp.2 W + 1101 1000 C DC Z + 1011 1100 C DC Z
0001 1100 1 0 0 1110 0100 0 1 0

Los bits de estado C y DC toman el valor normal correspondiente a la suma de f con el
complemento a 2 de W. De esta manera el significado para la operacin de resta resulta
invertido, es decir que C (carry) es 1 si no hubo desborde en la resta, o dicho de otra
manera, si el contenido de W es menor que el de f. El bit DC se comporta de manera
similar, es decir que DC es 1 si no hubo desborde en la mitad menos significativa, lo
que equivale a decir que el nibble bajo del contenido de W es menor que el del registro
f.

Las instrucciones que siguen son de simple operando, pero son casos especiales ya que
el destino es siempre el registro seleccionado :
CLRF f ;borrado de contenido, f = 0
MOVWF f ;copia contenido W f, f = W
La instruccin CLRF (CLeaR File) afecta solo al bit Z que resulta siempre 0.
La instruccin MOVWF (MOVe W a F) no afecta ningn bit de la palabra de estado.


Instrucciones de Byte que operan sobre W y Literales
Estas instrucciones se refieren todas al registro W, es decir que uno de los operandos de
origen y el operando de destino son siempre el registro W. En las instrucciones de este
grupo que tienen un segundo operando de origen, este es siempre una constante de
programa literalmente incluida en la instruccin, llamada constante literal o
simplemente literal.
El formato genrico de estas instrucciones es el siguiente :
11 10 9 8 7 6 5 4 3 2 1
0
k k k k k k k k
Los bits 0 a 7 especifican la constante literal de 8 bits que se utilizara en la operacin.
Las tres instrucciones que siguen son las operaciones lgicas tradicionales, similares a
las que ya vimos anteriormente, pero realizadas entre una constante de programa y el
registro W :
IORLW k ; operacin OR lgica, W = W v k
ANDLW k ; operacin AND lgica, W = W . k
XORLW k ; operacin XOR lgica, W = W k
En estas tres instrucciones (Inclusive OR Literal W, AND Literal W y XOR Literal W)
el nico bit afectado de la palabra de estado del procesador es el Z, que se pone en 1 si
el resultado de la operacin es 00000000, y se pone en 0 si el resultado tiene cualquier
otro valor.
La instruccin que sigue sirve para cargar una constante de programa en el registro W :
MOVLW k ;carga constante en W, W = K
Esta (MOVe Literal W) instruccin no afecta ninguno de los bits de estado del
procesador.
La instruccin que sigue (CLeaR W) no correspondera incluirla en este grupo, y
pertenece en realidad al primero, el de las instrucciones que operan sobre registros, ya
que se trata de un caso especial de la instruccin CLRF, con destino W, y f = 0. La
incluimos aqu porque como se le ha asignado un mnemnico particular referido
especficamente al registro W, creemos que, desde el punto de vista del programador, es
ms til verla dentro del grupo de instrucciones referidas a W.
CLRW ;borra el contenido de W, W = 0
Al igual que en la instruccin CLRF, el nico bit de estado afectado es el Z que resulta
1.

Instrucciones de Bit
El formato genrico de estas instrucciones es el siguiente :
11 10 9 8 7 6 5 4 3 2 1
0
b b b f f f f f
Los bits 0 a 4 (5 bits), denominados f, permiten seleccionar uno de 32 registros de la
memoria interna. Los bits 5 a 7, denominados b, permiten especificar el numero de bit
(0 a 7) sobre el que se operara. Estas instrucciones operan solamente sobre el bit
especificado, el resto de los bits del registro no son alterados. Estas instrucciones no
tienen especificacin de destino, ya que el mismo es siempre el registro seleccionado.
BCF f,b ;borra el bit b de f ;bit f(b) = 0
BSF f,b ;coloca en uno el bit b de f ;bit f(b) = 1
Estas instrucciones (Bit Clear File y Bit Set File) no afectan ningn bit de la palabra de
estado del procesador.


Instrucciones de Control
GOTO k ;salto a la posicin k (9 bits) del programa
Esta es la tpica instruccin de salto incondicional a cualquier posicin de la memoria de
programa (que en la mayora de los microprocesadores convencionales se llama JUMP).
La constante literal k es la direccin de destino del salto, es decir la nueva direccin de
memoria de programa a partir de la cual comenzarn a leerse las instrucciones despus
de ejecutar la instruccin GOTO. Esta instruccin simplemente carga la constante k en
el registro PC (contador de programa). La nica complicacin de esta instruccin es que
la constante k es de solo 9 bits, mientras que el registro PC es de 11 bits, ya que en el
16C57 debe permitir direccionar una memoria de programa de 2 K. Los dos bits
faltantes, bit 9 y 10 del PC, son tomados respectivamente de los bits de seleccin de
pgina PA0 y PA1 de la palabra de estado. Este comportamiento particular hace que la
memoria de programa aparezca como dividida en paginas de 512 posiciones como se
vera ms adelante. El programador debe tener en cuenta que antes de ejecutar una
instruccin GOTO es posible que haya que programar los bits PA0 y PA1.
La que sigue es la instruccin de llamado a subrutina:
CALL k ;salto a la subrutina en la posicin k (8 bits)
Su comportamiento es muy similar al de la instruccin GOTO, salvo que adems de
saltar guarda en el stack la direccin de retorno de la subrutina (para la instruccin
RETLW). Esto lo hace simplemente guardando en el stack una copia del PC
incrementado, antes de que el mismo sea cargado con la nueva direccin k. La nica
diferencia con la instruccin GOTO respecto de la forma en la que se realiza el salto, es
que en la instruccin CALL la constante k tiene solo 8 bits en vez de 9. En este caso
tambin se utilizan PA0 y PA1 para cargar los bits 9 y 10 del PC, pero adems el bit 8
del PC es cargado siempre con 0. Esto hace que los saltos a subrutina solo puedan
realizarse a posiciones que estn en las primeras mitades de las paginas mencionadas. El
programador debe tener en cuenta este comportamiento y asegurarse de ubicar las
posiciones de inicio de las subrutinas en las primeras mitades de las paginas.
La instruccin que aparece a continuacin es la de retorno de subrutina:
RETLW k ;retorno de subrutina con constante k, W = k
Esta (RETurn con Literal in W) instruccin produce el retorno de subrutina con una
constante literal k en el registro W. La operacin que realiza consiste simplemente en
sacar del stack un valor y cargarlo en el PC. Ese valor es el PC incrementado antes de
realizar el salto, de la ultima instruccin CALL ejecutada, por lo tanto es la direccin de
la instruccin siguiente a dicho CALL.. Dado que el stack es de 11 bits, el valor cargado
en el PC es una direccin completa, y por lo tanto se puede retornar a cualquier posicin
de la memoria de programa, sin importar como estn los bits de seleccin de pagina.
Esta instruccin adems carga siempre una constante literal en el registro W. Ya que
esta es la nica instruccin de retorno de subrutina de los PIC16C5X, no hay en estos
microprocesadores forma de retornar de una subrutina sin alterar el registro W. Por otro
lado, y con una metodologa especial de programacin, un conjunto de sucesivas
instrucciones RETLW puede ser usado como una tabla de valores constantes incluida en
el programa (Ej. : tablas BCD/7 seg., hexa/ASCII, etc.).

A continuacin se presentan las dos nicas instrucciones de salteo (skip) condicional.
Estas instrucciones son los nicos medios para implementar bifurcaciones condicionales
en un programa. Son muy generales y muy poderosas ya que permiten al programa
tomar decisiones en funcin de cualquier bit de cualquier posicin de la memoria
interna de datos, y eso incluye a los registros de perifricos, los puertos de
entrada/salida e incluso la palabra de estado del procesador. Estas dos instrucciones
reemplazan y superan a todo el conjunto de instrucciones de salto condicional que
poseen los microprocesadores sencillos convencionales (salto por cero, por no cero, por
carry, etc.).
BTFSC f,b ;salteo si bit = 0, bit = f(0) saltea
BTFSS f,b ;salteo si bit = 1, bit = f(1) saltea
BTFSC (Bit Test File and Skip if Clear) saltea la prxima instruccin si el bit b del
registro f es cero. La instruccin BTFSS (Bit Test File and Skip if Set) salta si el bit es
1. Estas instrucciones pueden usarse para realizar o no una accin segn sea el estado de
un bit, o, en combinacin con GOTO, para realizar una bifurcacin condicional.
Ejemplo 1 :

- - - - - - - - - - - - -
- - - - - - - - - - - - -
btfsc flags,run ;s ha arrancado el reloj
incf tiempo ;incremento contador de tiempo
- - - - - - - - - - - - -
- - - - - - - - - - - - -


Ejemplo 2 :

- - - - - - - - - - - - -
- - - - - - - - - - - - -
movf tiempo,w ;testeo por tiempo = 60
xorlw 60
btfss STATUS,Z
goto acc_2 ;salto si tiempo <> 60
- - - - - - - - - - - - - ;accin 1
- - - - - - - - - - - - -
- - - - - - - - - - - - -
goto acc_fin
acc_2
- - - - - - - - - - - - - ;accin 2
- - - - - - - - - - - - -
- - - - - - - - - - - - -
acc_fin ;ac se unen los caminos


Las instrucciones que siguen son casos especiales de las de incremento y decremento
vistas anteriormente. Estas instrucciones podran categorizarse dentro del grupo de
instrucciones orientadas a byte sobre registros (primer grupo), ya que efectivamente
operan sobre los mismos, y el formato del cdigo de la instruccin responde al de ese
grupo, pero, a diferencia de las otras, pueden adems alterar el flujo lineal del programa
y por eso se les incluy en este grupo.
DECFSZ f,d ;decrementa y saltea s 0, destino= f - 1, = 0 saltea
INCFSZ f,d ;incrementa y saltea s 0, destino= f + 1, = 0 saltea
Estas dos instrucciones (DECrement File and Skip if Zero, e INCrement File and Skip if
Zero) se comportan de manera similar a DECF e INCF, salvo que no afectan a ningn
bit de la palabra de estado. Una vez realizado el incremento o decremento, si el
resultado es 00000000, el microprocesador salteara la prxima instruccin del
programa. Estas instrucciones se utilizan generalmente en combinacin con una
instruccin de salto (GOTO), para el diseo de ciclos o lazos (loops) de instrucciones
que deben repetirse una cantidad determinada de veces.
Ejemplo:
clrf 10 ;pongo cero en la posicin 10 de la memoria interna
loop ;lo que sigue se ejecutar 256 veces
.....................................
.....................................
.....................................
incfsz 10,1 ;incremento la posicin 10 hasta que llegue a 0
goto loop ;si no llego a cero voy a repetir la secuencia
;cuando llegue a cero salteo el goto
..................................... ;y sigue la continuacin del programa
.....................................
.....................................


Instrucciones Especiales
En este grupo se reunieron las instrucciones que controlan funciones especficas del
microprocesador o que actan sobre registros especiales no direccionados como
memoria interna normal.
La instruccin que sigue es la tpica NO OPERA TION, existente en casi todos los
microprocesadores.
NOP ;no hace nada, consume tiempo
Esta instruccin solo sirve para introducir una demora en el programa, equivalente al
tiempo de ejecucin de una instruccin. No afecta ningn bit de la palabra de estado.
La siguiente es una instruccin especifica de control de los puertos de entrada/salida.
TRIS f ;carga el tristate control, TRISf = W
Esta instruccin (TRIState) carga el registro de control de los buffers tristate de un
puerto de entrada salida (data direccin register), con el valor contenido en W. El
parmetro f debe ser la direccin de memoria interna del puerto, aunque el valor W no
ser cargado en el puerto sino en el registro de tristate del mismo. Los valores validos
para f son 4 y 5 en los 16C54/56 y 4, 5 y 6 en los 16C55/57. Esta instruccin no afecta
ningn bit de la palabra de estado.
La siguiente instruccin sirve para programar el registro OPTION que controla el
RTCC y prescaler
OPTION ;carga el registro OPTION, OPTION = W
El registro OPTION no es accesible como memoria interna y solo se lo puede
programar con esta instruccin. Esta instruccin no afecta ningn bit de la palabra de
estado.
La instruccin que sigue borra el contador del watch dog timer. Este registro tampoco
esta accesible como memoria, y esta es la nica instruccin que lo modifica.
CLRWDT ;borra el watch dog timer, WDT = 0
Esta instruccin, adems, coloca en uno los bits PD (power down) y TO (time-out) de la
palabra de estado.
La siguiente es una instruccin especial de control del micros controlador que lo pone
en el modo power down. En este modo el microprocesador se detiene, el oscilador se
apaga, los registros y puertos conservan su estado, y el consumo se reduce al mnimo.
La nica forma de salir de este estado es por medio de un reset o por time-out del watch
dog timer.
SLEEP ;coloca el C en modo sleep, WDT = 0
Esta instruccin, adems, borra el bit PD (power down) y setea el bit TO (time-out) de
la palabra de estado.


Resumen de instrucciones (clasificacin segn el fabricante en tres grupos):

Instrucciones orientadas a byte:

Instrucciones orientadas a bit:

Instrucciones orientadas a literal y control:

En esta tabla de resumen del conjunto de instrucciones se pueden observar los
mnemnicos, la explicacin, el nmero de ciclos, el cdigo de mquina y los bits
afectados del registro STATUS para cada una de las instrucciones.
http://www.geocities.com/micros_uan/cap21.html
Modos de direccionamiento
Direccionamiento de la memoria de datos (RAM)
La memoria interna se direcciona en forma directa por medio de los 5 bits f
contenidos en las instrucciones que operan sobre registros. De esta manera se puede
direccionar cualquier posicin desde la 00 a la 1F. Como se vi en el captulo
correspondiente a los mapas de memoria, las direcciones 10 a 1F corresponden a los
bancos de registros, por lo tanto, en los micros controladores que tengan ms de un
banco, antes de acceder a alguna variable que se encuentre en esta zona, el programador
deber asegurarse de haber programado los bits de seleccin de banco en el registro
FSR.

Los registros especiales y de uso general de la posicin 00 a la 0f estn presentes en
todos los PIC16C5X, al igual que el banco 0 de registros. Los bancos 1, 2 y 3 de
registros estn presentes solo en el 16C57.
El registro FSR, adems de servir para seleccionar el banco activo, sirve como puntero
para direccionamiento indirecto. La posicin 00 del mapa de RAM es la llamada
direccin indirecta. S en cualquier instruccin se opera con la direccin 00, en realidad
se estar operando con la direccin a donde apunte el contenido del FSR. Por ejemplo si
el FSR contiene el valor 14, una instruccin que opere sobre la direccin 0, operara en
realidad sobre la direccin 14. Se puede decir en este ejemplo que la posicin 14 de
memoria fue direccionada en forma indirecta a travs del puntero FSR.
Ejemplo :
; Esta porcin de programa borra 5 posiciones de memoria a partir de la direccin 12
FSR equ 04 ;(definicin al comienzo del programa)
.....................................
.....................................
movlw 5 ;prepara para repetir 5 veces
movwf 08 ;(el registro 08 es el contador del loop)
movlw 12h ;apunta a la direccin 12h
movwf FSR ;
loop:
clrf 0 ;borra una posicin de memoria
incf FSR ;apunta a la siguiente
decfsz 08 ;si todava no borra todas
goto loop ;sige borrando
.....................................
.....................................
El direccionamiento indirecto es muy til para el procesamiento de posiciones
consecutivas de memoria, como en el ejemplo, o para el direccionamiento de datos en
subrutinas.
Direccionamiento de la memoria de programa (EPROM, OTP)
La instruccin GOTO dispone solo de 9 bits en el cdigo de operacin para especificar
la direccin de destino del salto. Al ejecutar una instruccin GOTO el microprocesador
toma los dos bits que restan para completar la direccin de 11 bits, de los bits 5 y 6 de la
palabra de estado. Estos ltimos son llamados bits de seleccin de pgina (PA0 y PA1).
El programador deber asegurarse de que estos dos bits tengan el valor correcto antes de
toda instruccin GOTO. Ver figura 2.2.1


FIG 2.2.1 Direccionamiento directo con instruccin GOTO
Deber tenerse en cuenta adems que es posible avanzar de una pgina a otra en forma
automtica cuando el PC se incrementa. Esto ocurre si el programa empieza en una
pgina y sigue en la siguiente. Sin embargo, al incrementarse el PC desde la ltima
posicin de una pgina a la primera de la siguiente, los bits PA0 y PA1 no se
modifican, y por lo tanto s se ejecuta una instruccin GOTO, CALL o alguna que
acte sobre el PC, esta producir un salto a la pgina anterior, a menos que el
programador tenga la precaucin de actualizar el valor de dichos bits. Por este motivo es
conveniente dividir el programa en mdulos o rutinas que estn confinados a una
pgina.
En el caso de la instruccin CALL, el direccionamiento se complica un poco ms, ya
que la misma solo dispone de 8 bits para especificar la direccin de destino salto. En
este caso tambin se utilizan los mismos bits de seleccin de pgina para completar los
bits dcimo y decimoprimero de la direccin, pero falta el noveno bit. En estas
instrucciones este bit se carga siempre con 0, lo que implica que solo se pueden realizar
saltos a subrutina a las mitades inferiores de cada pgina. En este caso tambin el
programador deber asegurarse que el estado de los bits PA0 y PA1 sea el correcto al
momento de ejecutarse la instruccin. Ver figura 2.2.2


FIG. 2.2.2 Direccionamiento directo con instruccin CALL
Las instrucciones que operan sobre el PC como registro y alteran su contenido
provocando un salto, responden a un mecanismo muy similar al de las instrucciones
CALL para la formacin de la direccin de destino. En este caso los bits 0 a 7 son el
resultado de la instruccin, el bit 8 es 0 y los bits restantes se toman de PA0 y PA1.
Este mecanismo se llama paginado, y a pesar de que representa una complicacin
bastante molesta para el programador, resulta muy til ya que permite ampliar la
capacidad de direccionamiento de memoria de programa para las instrucciones de salto.
http://www.geocities.com/micros_uan/cap22.html
Herramientas de desarrollo
UNA MIRADA RAPIDA AL MPLAB
Qu es el MPLAB ?
EL MPLAB es un Entorno de Desarrollo Integrado (Integrated Development
Environment,
IDE) que corre en Windows , mediante el cual Usted puede desarrollar aplicaciones
para los microcontroladores de las familias PIC 16/17.
EL MPLAB le permite a Usted escribir, depurar y optimizar los programas (firmware)
de sus diseos con PIC 16/17. EL MPLAB incluye un editor de texto, un simulador y un
organizador de proyectos. Adems, el MPLAB soporta el emulador PICMASTER y a
otras herramientas de desarrollo de Microchip como el PICSTART - Plus.
De que forma le ayuda el MPLAB ?
Con el MPLAB Usted puede:
- Depurar sus programas fuente.
- Detectar errores automticamente en sus programas fuente para editarlos.
- Depurar los programas utilizando puntos de corte (breakpoints) mediante valores
de los registros internos.
- Observar el flujo del programa con el simulador MPLAB -SIM, seguirlo en
tiempo real utilizando el emulador PICMASTER.
- Realizar medidas de tiempo utilizando un cronmetro.
- Mirar variables en las ventanas de observacin.
- Encontrar respuestas rpidas a sus preguntas, utilizando la Ayuda en lnea del
MPLAB.
LAS HERRAMIENTAS DEL MPLAB
El Organizador de Proyectos (Proyect Manager).
El organizador de proyectos (Proyect Manager) es parte fundamental de MPLAB. Sin
crear un proyecto Usted no puede realizar depuracin simblica. Con el Organizador de
Proyectos (Proyect manager) puede utilizar las siguientes operaciones:
- Crear un proyecto.
- Agregar un archivo de programa fuente de proyecto.
- Ensamblar o compilar programas fuente.
- Editar programas fuente.
- Reconstruir todos los archivos fuente, o compilar un solo archivo.
- Depurar su programa fuente.
Software ensamblador:
El software ensamblador que presenta Microchip viene en dos presentaciones, una, para
entorno DOS llamado MPASM.EXE y la otra, para entorno Windows llamado
MPASMWIN.EXE
Las dos presentaciones soportan a TODOS los micros controladores de la familia PIC
de Microchip.
El conjunto de instrucciones de los micros controladores PIC es en esencia la base del
lenguaje ensamblador soportado por este software.

Directivas de uso frecuente:
Son instrucciones para el compilador.
#DEFINE
ej. #define <nombre> [<valor a remplazar>]
explicacin: declara una cadena de texto como substituto de otra
END
ej. end
explicacin: indica fin de programa
EQU
ej. status equ 05
explicacin: define una constante de ensamble
INCLUDE
ej. include <PIC16F84.h>
explicacin: incluye en el programa un archivo con cdigo fuente
ORG
ej. org 0x100
explicacin: ensambla a partir de la direccin especificada
Para informacin ms completa referirse a la gua rpida del MPASM.


Una vez instalado adecuadamente el MPLAB, para realizar la simulacin de un
programa deben seguirse los siguientes pasos:
Edite en un archivo de texto el siguiente programa:
;ejemplo:
status equ 0x03 ;hace equivalencia entre el smbolo status indicndolo como 3 en
hexadecimal
Cont equ 0x20
F equ 1
org 0 ;indica posicin de memoria desde donde se ensambla
Inicio
movlw 0x0F ;carga de w con el valor constante 15 (literal)
movwf Cont ;el contenido de w se pasa al reg. CONT
Loop
decfsz Cont,F ;decremento de Cont y elude siguiente si=0
goto Loop ;salto incondicional a Loop
goto $ ;Salto incondicional aqui mismo
end ;Fin del cdigo

Lista de pasos:
1. Haga doble click en el cono correspondiente a MPLAB.
2. Crear el archivo fuente correspondiente (men File...New Source).
3. Salve el archivo (con extensin .ASM) una vez terminada su edicin (men
FILE...Save).
4. Debe a continuacin crearse un nuevo proyecto (men Project...New Project).
5. Cuando aparezca la ventana de New Project editar las cajas de texto:
Project path and Name y Development Mode, hacer click en <OK>.
6. En la siguiente ventana Edit Project, hacer click en la seccin Non-project files sobre
el nombre del archivo fuente realizado en los pasos 2 y 3.
7. Haga click en el botn <=add y luego de que ste aparezca en la seccin Project Files
haga click sobre el botn <OK>.
8. Salvar el proyecto (en el men Project...Save project).
9. Realizar la "construccin de todo el proyecto" (men Project...Build All).
10. En esta etapa se realiza en forma automtica el ensamble de nuestro programa
fuente y el vaciado de ste en memoria de simulacin. El proceso de ensamble generar
un archivo de errores en caso de que estos existan, s es as deben corregirse
directamente sobre el archivo fuente, salvar las correcciones y reconstruir el proyecto
(men Project...Build All).
<<<En esta etapa del proceso ya se tiene el entorno listo para la simulacin>>>

Vista tpica del entorno MPLAB

Como en la mayora de las aplicaciones Windows la pantalla se divide en varias
secciones:
1. Barra de ttulo: Se observa el nombre del proyecto
2. Barra de menus: Acceso a las diferentes opciones del entorno
3. Barra de herramientas: Cada cono ejecuta las acciones correspondientes
4. Barra de estados: Indica el estado del entorno y sus ventanas


Simulacin:
1. Resetear el procesador (men Debug...Run...Reset) con F6 con el cono
correspondiente en la barra de herramientas.
2. Crear una nueva ventana donde se incluyan las variables que queremos tener en
cuenta (Window...New Watch Window)
3. Empezar a correr paso a paso el programa haciendo el seguimiento detallado de todos
y cada uno de los pasos (men Debug...Run...Step) con la tecla F7 con el cono
correspondiente en la barra de herramientas.
El proceso de simulacin nos permite detectar y corregir problemas de lgica,
problemas de situaciones que no hayamos tenido en cuenta que son errores que no
pueden ser detectados en el momento del ensamble del programa.

Nota: El programa MPLAB puede obtenerse en forma gratuita de la direccin:
http://www.microchip.com/10/Tools/mTools/MPLAB/index.htm
http://www.geocities.com/micros_uan/cap23.html

Importancia del lenguaje ensamblador
La importancia del lenguaje ensamblador radica principalmente que se trabaja
directamente con el microprocesador; por lo cual se debe de conocer el
funcionamiento interno de este, tiene la ventaja de que en el se puede realizar
cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden
realizar. Otro punto sera que los programas en ensamblador ocupan menos
espacio en memoria.
2. Ventajas y desventajas del Lenguaje Ensamblador
Ventajas
1. Velocidad .- Como trabaja directamente con el microprocesador al ejecutar
un programa, pues como este lenguaje es el mas cercano a la mquina la
computadora lo procesa mas rpido.
2. Eficiencia de tamao .- Un programa en ensamblador no ocupa mucho
espacio en memoria porque no tiene que cargan libreras y dems como son los
lenguajes de alto nivel
3. Flexibilidad .- Es flexible porque todo lo que puede hacerse con una
mquina, puede hacerse en el lenguaje ensamblador de esta mquina; los
lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al
mximo los recursos de la mquina. O sea que en lenguaje ensamblador se
pueden hacer tareas especificas que en un lenguaje de alto nivel no se pueden
llevar acabo porque tienen ciertas limitantes que no se lo permiten
Desventajas
Tiempo de programacin .- Como es un lenguaje de bajo nivel 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.
Programas fuente grandes .- Por las mismas razones que aumenta el tiempo,
crecen los programas fuentes; simplemente requerimos ms instrucciones
primitivas para describir procesos 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 .- Que todo error que podamos
cometer, o todo riesgo que podamos tener, podemos afectar los recursos de la
maquina, programar en este lenguaje lo ms comn que pueda pasar es que la
mquina se bloquee o se reinicialice. 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.
Falta de portabilidad.- Porque para cada mquina existe un lenguaje
ensamblador; 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.
3. Relacin del lenguaje ensamblador con los componentes internos del
procesador
En- la memoria se almacena la informacin en celdas especiales llamados
registros los cuales tienen un nivel alto y un nivel bajo.
Unidad aritmtica y- lgica es la responsable de realizar como su nombre
lo indica operaciones aritmticas y lgicas.
- Unidad de control Se encarga de coordinar de que los otros componentes
ejecuten las operaciones correctamente.
- Bus interno son los canales por donde pasa la informacin que la mquina
va a procesar (bus de entrada) o procesada (bus de salida).
Registros de uso general
AX = Registro acumulador, dividido en AH y AL (8 bits cada uno).- Interviene en
las operaciones aritmticas y lgicas, despus de la operacin arroja un
resultado.
BX = Registro base, dividido en BH y BL.- Se utiliza en transferencias de datos
entre la memoria y el procesador.
CX = Registro contador, dividido en CH y CL.- Se utiliza como contador en
bucles(LOOP), en operaciones con cadenas(REP), y en desplazamientos(CL).
DX = Registro de datos, dividido en DH y DL.- Se utiliza en operaciones de
multiplicacin y divisin junto con Ax y en operaciones de entrada y salida de
puertos, su mitad inferior DL contiene el nmero de puertos.
Registros de Estado
Hay nueve indicadores de un bit en este registro de 16 bits. Los cuatro bits ms
significativos estn indefinidos, mientras que hay tres bits con valores
determinados: los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno.
CF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (en caso de suma) o
"prstamo" (en caso de resta). Este indicador es usado por instrucciones que
suman o restan nmeros que ocupan varios bytes. Las instrucciones de
rotacin pueden aislar un bit de la memoria o de un registro ponindolo en el
CF.
PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un
nmero par de bits a 1. Este indicador se puede utilizar para detectar errores
en transmisiones.
AF (Auxiliary carry Flag, bit 4): Si vale 1, indica que hubo "arrastre" o
"prstamo" del nibble (cuatro bits) menos significativo al nibble ms
significativo. Este indicador se usa con las instrucciones de ajuste decimal.
ZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de la operacin es
cero.
SF (Sign Flag, bit 7): Refleja el bit ms significativo del resultado. Como los
nmeros negativos se representan en la notacin de complemento a dos, este
bit representa el signo: 0 si es positivo, 1 si es negativo.
TF (Trap Flag, bit 8): Si vale 1, el procesador est en modo paso a paso. En este
modo, la CPU automticamente genera una interrupcin interna despus de
cada instruccin, permitiendo inspeccionar los resultados del programa a
medida que se ejecuta instruccin por instruccin.
IF (Interrupt Flag, bit 9): Si vale 1, la CPU reconoce pedidos de interrupcin
externas. Si vale 0, no se reconocen tales interrupciones
DF (Direction Flag, bit 10): Si vale 1, las instrucciones con cadenas sufrirn
"auto-decremento", esto es, se procesarn las cadenas desde las direcciones
ms altas de memoria hacia las ms bajas. Si vale 0, habr "auto-incremento",
lo que quiere decir que las cadenas se procesarn de "izquierda a derecha".
OF (Overflow flag, bit 11): Si vale 1, hubo un desborde en una operacin
aritmtica con signo, esto es, un dgito significativo se perdi debido a que
tamao del resultado es mayor que el tamao del destino.
Relacin entre el cdigo binario y el lenguaje ensamblador
En el cdigo binario se utilizan ceros y unos, mientras que el lenguaje
ensamblador es una coleccin de smbolos mnemnicos que representan:
operaciones, nombres simblicos, operadores y smbolos especiales.
La relacin entre estos dos lenguajes sera que el binario es el lenguaje que la
mquina entiende y el ensamblador se acerca mas lenguaje de esta.
4. Manejo de la memoria: Direccionamiento (interno y externo)
El manejo de la memoria depende de que procesador tenga la mquina, entre
los cuales a continuacin se mencionan los siguientes:
Memoria de- Programa
Memoria Externa de Datos-
Memoria Interna de- Datos
- Registros de Funciones Especiales
Memoria de Bit.-
El espacio de la Memoria de Programa contiene todas las instrucciones, datos,
tablas y cadenas de caracteres (strings) usadas en los programas. Esta
memoria se direcciona principalmente usando el registro de 16 bits llamado
Data Pointer. El tamao mximo de la Memoria de Programa es de 64 Kbytes.
La Memoria Externa de Datos contiene todas las variables y estructuras de datos
que no caben en la memoria interna del Microprocesador. Esta memoria se
direcciona principalmente por el registro de 16 bits Data Pointer , aunque
tambin se puede direccionar un banco de Memoria Externa de Datos de 256
bytes usando los dos primeros registros de propsito general .
El espacio de Memoria Interna de Datos funcionalmente es la memoria de
datos ms importante, ya que ah es donde residen cuatro bancos de registros
de propsito general; la pila o stack del programa; 128 bits de los 256 bits de
un rea de memoria direccionarlo por bit y todas las variables y estructuras de
datos operadas directamente por el programa. El tamao mximo de la
Memoria Interna de Datos es de 256 bytes.
Contiene un espacio para los denominados Registros de Funciones Especiales
destinado para los puertos de entrada/salida, temporizadores y puerto serie del
circuito integrado. Estos registros incluyen al Stack Pointer; al registro de la
palabra de estado del programa y al Acumulador. La cantidad mxima de
Registros de Funciones Especiales es 128.
Todos los Registros de Funciones Especiales tienen direcciones mayores a
127 y se ubican en los 128 bytes superiores de la Memoria Interna de Datos.
Estas dos reas de la Memoria Interna de Datos se diferencian por el modo de
direccionamiento usado para acedarlas. Los Registros de Funciones
Especiales solo se pueden acezar usando el modo de direccionamiento
Directo, mientras que los 128 bytes superiores solo se pueden acezar con el
modo de direccionamiento Indirecto.
Por otra parte, el espacio de Memoria de Bit se usa para almacenar variables y
banderas de un bit. El tamao mximo de la Memoria de Bit es de 256 bits, 128
de los bits comparten su espacio con 16 bytes del espacio de la Memoria
Interna de Datos y los otros 128 bits lo hacen con los Registros de Funciones
Especiales.
http://www.monografias.com/trabajos14/lenguensambla/lenguensambla.shtml

4.3 Aplicaciones.
4.3.1 Como sistema independiente.
4.3.2 Como subsistema de una computadora.

Potrebbero piacerti anche