microcontrolador mc68hc11
microcontrolador mc68hc11
microcontrolador mc68hc11
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
MICROCONTROLADOR 68HC11: Fundamentos, recursos y programación.<br />
MICROBÓTICA.<br />
Se saca una conclusión muy importante al comparar ambos modos de direccionamiento: siempre que sea<br />
posible conviene usar el direccionamiento directo, es decir, "SITUAR LAS VARIABLES EN LAS<br />
DIRECCIONES BAJAS DE LA MEMORIA, EN EL ESPACIO $00−$FF". De esta manera, todas las<br />
instrucciones que hagan referencia a variables, utilizarán direccionamiento directo y se ahorrarán muchos bytes de<br />
memoria.<br />
¿Quién decide el modo de direccionamiento. Es el propio ensamblador. Al encontrarse el ensamblador con<br />
la instrucción 1 (LDAB $FC00) sabe que la dirección es superior a $FF y que debe utilizar direccionamiento<br />
extendido. Al encontrarse con la instrucción 2, la dirección es menor que $FF y por tanto utiliza direccionamiento<br />
directo ahorrando un byte.<br />
3.3.4. Indexado<br />
Este modo de direccionamiento se utiliza para acceder a TABLAS (Arrays, cadenas....) en la memoria. El<br />
dato se busca de la siguiente forma: Se toma la dirección del registro índice (X ó Y), se le suma un desplazamiento<br />
(offset) de 8 bits y el contenido de esa dirección es el dato buscado.<br />
Este modo de direccionamiento se especifica colocando como argumentos en la instrucción un offset, una<br />
coma y el registro índice.<br />
Ejemplo: LDAB 5,X Esta instrucción carga en el acumulador B el contenido de la dirección especificada por X<br />
más un offset de 5. Se simboliza de la siguiente manera:<br />
dir = (X) + 5 , siendo dir la dirección que contiene el dato.<br />
Para el caso particular de tener un offset de 0, es decir, que se quiera acceder a la dirección contenido en X,<br />
se puede especificar de las siguientes maneras:<br />
LDAB 0,X<br />
LDAB ,X<br />
LDAB X<br />
Las 3 instrucciones son equivalentes.<br />
Este modo de direccionamiento es muy interesante porque permite acceder a cualquier dirección de<br />
memoria ($0000−$FFFF) como en el direccionamiento extendido pero las instrucciones sólo ocupan 2 bytes, como<br />
en el direccionamiento directo. Además, el registro X se puede variar (incrementar, decrementar...) con lo que se<br />
obtiene una gran flexibilidad a la hora de acceder a tablas de datos.<br />
Para acceder a los registros de configuración del <strong>microcontrolador</strong>, que se encuentran en las direcciones<br />
$1000−$103F, es conveniente utilizar este modo de direccionamiento porque así las instrucciones ocupan menos<br />
bytes. En el registro índice se introduce la dirección $1000 correspondiente al comienzo de los registros de<br />
configuración del <strong>microcontrolador</strong>, y sólo es necesario especificar el desplazamiento:<br />
Instrucciones Comentarios Tamaño instrucción<br />
LDX $1000 ; X = $1000 (3 Bytes)<br />
STAA 1,X ; Meter A en dir. $1001 (2 Bytes)<br />
STAB $2C,X ; Meter B en dir. $102C (2 Bytes)<br />
STAA $10,X ; Meter A en dir. $1010 (2 Bytes)<br />
Para realizar esto mismo con direccionamiento extendido sería:<br />
STAA $1001<br />
; Meter A en dir. $1001 (3 Bytes)<br />
STAB $102C<br />
; Meter B en dir. $102C (3 Bytes)<br />
STAA $1010<br />
; Meter A en dir. $1010 (3 Bytes)<br />
Para acceder a 3 registros de control distintos, ambos trozos de código ocupan 9 bytes de memoria. Pero si<br />
se pretende acceder a más de 3 registros de control, que suele ser lo más habitual, se ahorra memoria utilizando<br />
direccionamiento indexado.<br />
El offset aplicado es de 8 bits y sin signo por lo que el offset máximo es de 256 bytes.<br />
XXV