introduccion a la programacion de los microcontroladores motorola-freescale
Post on 23-Jun-2015
1.076 Views
Preview:
TRANSCRIPT
- 1. INTRODUCCION A LA PROGRAMACION DE LOS
MICROCONTROLADORES
Presentado por: Gonzalo Castillo.
Magda Alejandra Socha.
2. Introduccin
Para iniciar la travesa en el camp de la programacin de
microcontroladores necesario comprender su filosofa de trabajo, as
como su vocabulario que para nuestro caso se trata del set de
instrucciones, las cuales en el presente capitulo se visualizaran
en un cuadro resumen
3. REGISTROS DE USO GENERAL
Existen unos registros que se encuentran constantemente
interactuando con el micro controlador, efectuando tareas de
acuerdo con las instrucciones que se vallan realizando.
Estos registros son:
4. ACUMULADOR:Comnmente se utiliza para almacenar operandos,
resultados de clculos aritmticos y de manipulacin de datos.
Cuando se almacenan datos numricos se debe tener en cuenta la
notacin de la base a utilizar para introducir las cantidades,
S: cantidad hexadecimal
%: cantidad binaria
t: cantidad decimal
5. REGISTRO INDICE (x):Se emplea para los modos de direccionamiento
indexados o bien puede usarse como acumulador auxiliar, esta
constituido por 8 bits, valor que puede ser cargado directamente o
desde una posicin de memoria.
El valor provisto por la instruccin puede puede ser de 0, 1 o 2
bytes de largo.
6. REGISTRO INDICE (H:X) Este registro puede ser visto como un solo
formado por 16 bits o como dos registros de 8 bits independientes,
H y X. Este registro se utiliza en los modos de direccionamiento
indexados y sirve como un apuntador, siendo capaz de cubrir todo el
mapa de memoria con 16 bits.
7. PUNTERO DE PILA (SP) (stack pointer): Es un registro de 16 bits
que contiene la direccin de la posicin disponible en el stack. El
stack pointer puede funcionar como un registro de indexado para
acceder a datos en el stack.
una pila stack es una estructura de datos de tipo LIFO que permite
almacenar y recuperar datos mediante operaciones push (apilar) y
por (desapilar) estas operaciones se realizan sobre un nico extremo
de la pila llamado cima.
8. CONTADOR DE PROGRAMA (PC): Es un registro de 16 bits que
contiene la direccin de la siguiente instruccin u operacin a
procesar. En otras palabras se podra decir que el registro contador
de programa (PC) es usado por la CPU para no perder de vista la
direccin de la prxima instruccin a ejecutar.
En muchas de las variantes de la familia HC08, algunos de los bits
superiores del contador de programa no son usados y estn siempre en
cero.
9. REGISTRO DE BANDERAS (CCR): Es un registro de 8 bits que
contiene el bit de enmascarado general de interrupciones y 5
banderas de estado, las cuales indican ciertas condiciones
originadas por la instruccin previamente ejecutada. El registro de
cdigo de condicin(o registro de banderas)contienen una mascara de
interrupcin y cuatro indicadores de estado que reflejan el
resultado de operaciones aritmticas y de otro tipo de la CPU. Las
cinco banderas son semi-acarreo (H), mascara de interrupcin (I),
negativo (N), cero (Z) y acarreo/prestamo(C).
10. 11. Este registro contiene in conjunto de banderas que dan
informacin sobre el resultado de la ultima operacin ejecutada. La
mayora de las instrucciones de salto utilizan estas banderas como
condicin. Aqu se encuentra tambin el habilitador global de
interrupciones. Los bits que componen este registro son:
12. V: BANDERA DE REBOSAMIENTO: Esta bandera es el equivalente de C
para operaciones con signo. Se activa si el resultado sale del
rango de -128 a 127. Este bit puede ser modificado tambin por
instrucciones no aritmticas.
La CPU coloca esta bandera en 1 cuando al efectuar el complemento a
dos ocurre rebosamiento.
1: Rebosamiento
0: No rebosamiento
13. H: BANDERA DE MEDIO CARRY: Indica si existi un desbordamiento
en los primeros 4 bits del resultado. Funciona de la misma manera
que C para instrucciones aritmticas, pero considerando solo los
primeros 4 bits del resultado.
La CPU coloca este bit en 1 cuando ocurre un carry entre los bits 3
y 4 durante una suma con o sin carry; el medio carry es requerido
cuando se utiliza codificacin en BCD.
1: Carry entre los bits 3 y 4
2: No carry entre los bits 3 y 4
14. I: MASCARA DE INTERRUPCION: Este bit es el habilitador global
de interrupciones. Si se encuentra en 1, todas las interrupciones
(exceptuando las no enmascarables) sern inhibidas y permanecern
pendientes hasta que este bit sea colocado en 0. Este habilitador
se modifica en lenguaje C con las instrucciones (EnableInterrupts)
(DisableInterrupts)
15. N: BANDERA DE VALOR NEGATIVO: Esta bandera refleja el estado
del bit de signo (bit 7) del resultado anterior. Al igual que la
bandera de cero, esto se extiende a otro tipo de
instrucciones.
Este bit se coloca en 1 lgico cuando el resultado de una operacin
aritmtica es negativa.
1: Resultado negativa
0: Resultado positivo
16. Z: BANDERA DE CERO: Este bit se coloca en 1 lgico cuando el
resultado de una operacin aritmtica o lgica de cmo resultado CERO.
Esta bandera no solo es modificada por instrucciones aritmticas,
por lo que se activara siempre que el valor del registro de destino
de la instruccin sea igual a 0.
1: Resultado cero
2: Resultado no cero
17. C: BANDERA DE CARRY: En instrucciones aritmticas sin signo,
esta bandera indica si ocurri un desbordamiento en el resultad, es
decir, si sali del rango de 0 a 255. Las instrucciones de
corrimiento y rotacin pueden tambin hacer uso de bit.
Este bit se coloca en 1 lgico cuando el resultado de una operacin
aritmtica produce carry despus del bit 7. El bit C se usa para
indicar si ha habido o no acarreo de una suma o pedido de prstamo
como resultado de una resta.
18. Las instrucciones de desplazamiento y rotacin operan sobre y a
travs del bit C para facilitar operaciones de desplazamiento de
mltiples bytes. El bit C es afectado adems durante las
instrucciones de evaluacin de bit y de bifurcacin.
1: carry
2: No carry
19. MODOS DE DIRECCIONAMIENTO
En todo proceso de programacin se requiere realizar constantemente
operaciones asignacin de valores a registros y extraer valores
existentes en otros registros para transferirlos y/o procesarlos
con otros datos; este proceso de extraccin y adjudicacin se conoce
como DIRECCIONAMIENTO.
20. Una de las operaciones que brindan actualmente los
microcontroladores consiste en la habilidad para acceder a la
memoria; aprovechando tal cualidad, los modos de direccionamiento
existentes en la CPU proveen esta capacidad. Existe una gran
variedad de formas de direccionar los datos, las cuales se
clasifican segn la forma en que una instruccin obtendr el valor
requerido para su ejecucin. Debido a los diferentes modos de
direccionamiento, una instruccin puede acceder al operando en una
de las diversas maneras.
21. Cada variante del modo de direccionamiento de una instruccin
debe tener un nico cdigo de operacin de instruccin. Los
microcontroladores Freescale usan seis modos de direccionamiento,
que son:
Inherente
Inmediato
Extendido
Directo
Indexado
sin desplazamiento
con desplazamiento de 8 bits
con desplazamiento de 16 bits
Relativo
22. MODO DE DIRECCIONAMIENTO INMEDIATO
En el modo de direccionamiento inmediato, el operando esta
contenido en el byte inmediatos siguiendo al cdigo de operacin.
Este modo se usa cuando se requiere un valor o constante conocido
en el momento de escribir el programa y que cumple con el hecho de
que no cambiara durante la ejecucin del programa.
23. EJEMPLOS:
LDA#$0f;A=$0F
EXPLICACION:
Los pasos que se ejecutan en el momento de evaluar la anterior
instruccin son los siguientes:
La CPU almacena el nuevo valor en el registro acumulador (A); en
este caso, se almacena el valor de 0F en hexadecimal o 15 en
decimal y se ajusta las banderas requeridas segn la operacin.
LDX#10T;X=10
24. EXPLICACION
Los pasos que se ejecuten en el momento de evaluar la anterior
instruccin son los siguientes:
La CPU almacena el nuevo valor en el registro ndice (x); en este
caso se almacena el valor 10 y se ajusta las banderas requeridas
segn la operacin.
A continuacin se muestra el listado de instrucciones que permiten
la ejecucin del direccionamiento inmediato.
25. 26. MODO DE DIRECCIONAMIENTO INHERENTE
Este modo de direccionamiento se caracteriza por que toda la
informacin requerida para la operacin ya es implcitamente conocida
por la CPU y no es necesario utilizar valores adicionales para su
ejecucin. En caso de requerirse algn operando en particular, son
solo los registros de la CPU o bien valores de datos almacenados en
la pila.
27. EJEMPLOS:
INCA;Incrementar el acumulador
EXPLICACION:
Los pasos que se ejecutan en el momento de evaluar la anterior
instruccin son los siguientes:
La CPU lee el valor que se encuentra almacenado en el registro
acumulador.
La CPU le suma uno al valor actual del acumulador.
La CPU almacena el nuevo valor en el acumulador y ajusta las
banderas requeridas segn la operacin.
CLRA;borrar el Acumulador
28. EXPLICACION:
Los pasos que se ejecuten en el momento de evaluar la anterior
instruccin son los siguientes:
La CPU almacena el valor (00h) en el registro acumulador (A),
borrando toda informacion que se encontrara almacenada previamente
en este registro y ajusta las banderas requeridas segn la
operacin.
29. A continuacin se listan las instrucciones que pueden usar el
modo de direccionamiento inherente.
30. MODO DE DIRECCIONAMIENTO EXTENDIDO: Uno de los mtodos de
direccionamiento mas importantes dentro de la programacin de los
microcontroladores es el modo de direccionamiento extendido, que
consiste en extraer la informacin almacenada en una direccin de
memoria que para representarla requiere 2 bytes (16 bits), y se
escribe su valor seguido de la instruccin. Este modo se emplea para
hacer referencia a cualquier posicin de memoria dentro del espacio
de memoria del MCU, incluyendo direcciones de puertos de
entrada/salida, direcciones de la memoria RAM, ROM, EPROM,
flash.
31. EJEMPLO:
Supongamos que en la posicin de memoria $0367 se encuentra
almacenado el valor $0f, entonces:
LDA $0367;A=$0F,es decir el valor 0Fh (15 en base 10)
La anterior instruccin extrae el valor que se encuentra almacenado
en la direccin extendida 0367h y lo almacena en el registro
Acumulador (A).
32. EXPLICACION:
La CPU lee la instruccin que significa cargar el acumulador usando
el modo de direccionamiento extendido.
La CPU lee el valor $03, el cual es interpretado como el valor
correspondiente a los 8 bits de mayor peso de la direccin a
leer.
La CPU arma la direccin extendida completa $0367 con los dos
valores previamente ledos, esta direccin es colocada en el bus de
direcciones y la CPU leer el valor almacenado en la posicin de
memoria $0367 almacenndolo en el registro Acumulador (A)
En el acumulador quedara almacenado el valor 0Fh para el caso del
ejemplo.
33. A continuacin se ilustra la tabla de instrucciones que permiten
el uso de direccionamiento extendido.
34. MODO DE DIRECCIONAMIENTO DIRECTO
Uno de los modos de direccionamiento mas utilizados en la
programacin de microcontroladores es el modo de direccionamiento
directo; este es muy similar al modo de direccionamiento extendido,
con la diferencia de que le byte correspondiente a la parte alta de
la direccin del operando (los 8 bits de mas peso del valor de la
direccin) se asume con el valor $00, de tal forma que solo es
necesario incluir el byte de menos peso de la direccin el operando
(8 bits de menos peso del valor de la direccin) en la instruccin a
ejecutar.
35. INDEXADO CON DESPLAZAMIENTODE 8 BITS
36. En este podemos encontrar la segunda subclasede
direccionamiento indexado denominada indexado con desplazamiento de
8 bits consiste:
- en que la direccin efectiva es la sumadel contenido del registro ndice de 8 bits(X) y el byte de desplazamiento siguientea la instruccinejecutar.
37. Hay que teneren cuentaque el bytede desplazamientosuministrado en la instruccines un numero ENTEROno signado de 8 bits 38. Para tener en cuentaes que a pesar de contarse con la suma de dos registros de 8 bitscada uno, la suma de ambas cantidades nodebe superar256 , lo que quiere decirque de esta manera el modo de direccionamientopermita acceder a las primeras 256 posiciones de memoria. ( desde $0000 hasta $00FF)
top related