periodo. Esta convención se usa en el bucle regulador, pero necesariamente no es una norma recomendada por
Motorola o por compañías del ensamblador.
En el juego de instrucciones del MC68HC05, las instrucciones de manipulación de bit son de la forma siguiente:
xxxx
14 08
El Bit# es un número entre 0 y 7, que identifica el bit dentro del registro dd de la posición que será
cambiada o probada.
En otros casos, se quiere construir una máscara con varios bits y entonces escribir este valor compuesto
a una posición del registro. Por ejemplo, suponiendo que se quieren poner los bits RTIFR, RTIE y RT1 en el
registro TSCR.
Se pueden usar estas instrucciones:
xxxx
A6 16
xxxx
B7 08
El símbolo # significa el modo de direccionamiento inmediato. La expresión (RTIFR.+RTIE.+RT1.) es
una OR Booleana de tres máscaras de posición de bit. El ensamblador evalúa la expresión Booleana durante el
ensamblaje del programa y substituye la respuesta (un solo valor binario de 8 bits) en el programa ensamblado.
Estas declaraciones de programa producirían exactamente el mismo resultado, pero no son fáciles de leer.
xxxx
A6 16
xxxx
B7 08
Aplicación de los EQU del Sistema
Normalmente, alguna aplicación específica de las directivas EQU estará en un programa para definir las
señales conectadas a los pins de E/S. Estas directivas EQU, se deben poner después de las directivas de las MCU
normales y antes del inicio del programa principal. Este sistema tiene un interruptor conectado al bit-0 del puerto
A y un LED conectado al bit-7 del puerto A, estas conexiones se han definido con directivas EQU.
El interruptor no se usa en la estructura del programa del bucle regulador del
del Programa Base
, pero no le hace ningún daño incluir las directivas EQU relacionadas. Las directivas EQU
no generan ningún código objeto que ocupe espacio de memoria del sistema microcontrolador.
Preparación de los Vectores
En todos los programas se deben preparar los vectores de 'reset' y de interrupción. Los vectores
especifican las direcciones donde la CPU empezará a procesar las instrucciones cuando ocurra un 'reset' o una
interrupción. El 'reset' y cada fuente de interrupción esperan encontrar su vector asociado en un par de
posiciones de memoria específicas. Por ejemplo, el vector de 'reset' es una de las dos posiciones más altas de la
memoria ($07FE y $07FF en el MC68HC705J1A). Si no se ponen valores en estas posiciones, la CPU tomará
cualquier valor binario encontrado allí y los tratará como si fueran una dirección de 2 bytes que estuviera allí
guardada.
Vector de Reset
La manera usual de definir un vector es con una directiva FDB.
07FE
03 00
Durante el ensamblaje, el ensamblador evalúa la etiqueta START en una dirección de 2 bytes y guarda
esta dirección en las dos siguientes posiciones de memoria disponible del programa. Las columnas de la
izquierda de la línea del listado muestran que la dirección $0300 se guardó en $07FE y $07FF ($03 en $07FE y
$00 en $07FF).
En esta línea de programa, RESETV es una etiqueta opcional. Aunque no se usa para referencia a través
de otras declaraciones en este programa en particular, se incluyó para identificar esta línea de directiva FDB
como la declaración que define el 'vector de reset'.
-----
BSET bit#,dd
LDA # {RTIFR.+RTIE.+RT1.}
STA TSCR
LDA #%00010110
STA $08
RESETV
FDB
; Pone a 1 el bit en la posición dd
; Forma de la máscara
; Escribe la máscara al registro TSCR
;Forma de la máscara
;Escribe la máscara al registro TSCR
START
; Inicio del programa con un 'reset'
80
Listado 4. Estructura