Listado Ensamblador; Listado 3. Listado Ensamblador - Motorola HC05 Manual Del Usuario

Iniciación a los microcontroladores de las familias de 8 bits
Tabla de contenido

Publicidad

Listado Ensamblador

Después de escribir un programa completo o una subrutina, se debe convertir de código mnemotécnico
a código máquina (binario), para que después la CPU lo pueda ejecutar. Se utiliza un PC para realizar esta
conversión a leguaje máquina, con un programa llamado ensamblador. El ensamblador lee el código
mnemotécnico del programa (también llamado código fuente del programa) y produce código máquina del
programa, en una forma que después se podrá programar en la memoria de la MCU.
El ensamblador también produce un listado compuesto de ambos, donde muestra el programa fuente
original (mnemónicos) y el código objeto traducido. Este listado se usa durante la fase de depuración del
proyecto y como parte de la documentación del programa (software). El
muestra el listado que resulta de ensamblar el programa ejemplo. Los comentarios se agregan antes de ensamblar
el programa.

Listado 3. Listado Ensamblador

*******************************************************
* Programa ejemplo 68HC05
* Lee el estado de un interruptor en el bit 0 del puerto A; 1 = cerrado
* Cuando se cierra, el LED se enciende 1 segundo; El LED se enciende
* cuando el bit 7 del Puerto A es 0. Espera a que se abra el interruptor,
* y entonces repetir. Rebotes del interruptor de 50mS
* NOTA: Tiempos basados en el tiempo de ejecución de las instrucciones
* Si usa un simulador o cristal menor de 4MHz, esta rutina correrá más
* lenta que la deseada
*******************************************************
$BASE 10T
0000
PORTA EQU $00
0004
DDRA
00E0
TEMP1 EQU $C0
0300
0300 A6 80
INIT
0302 B7 00
0304 B7 04
* El resto del puerto A se configura como entrada
0306 B6 00
TOP
0308 A4 01
030A 27 FA
030C CD 0323
030F 1F 00
0311 A6 14
0313 CD 0323
0316 4A
0317 26 FA
0319 1E 00
031B 00 00FD OFFLP BRSET 0,PORTA,OFFLP ;Lazo hasta interruptor abierto
031E CD 0323
0321 20 E3
interruptor
* DLY50 — Subrutina de retardo ~50ms
* Guarda el valor original del acumulador
* pero X siempre estará a cero en el retorno
0323 B7 C0 DLY50
0325 A6 41
0327 5F
OUTLP
0328 5A
INNRLP
0329 26 FD
032B 4A
032C 26 F9
032E B6 C0
0330 81
Para la siguiente descripción hay que referirse a la
listado con números de referencia indicando las varias partes de la línea. La primera línea es un ejemplo de una
línea de directiva del ensamblador. Esta línea realmente no es parte del programa; más bien, proporciona
información al ensamblador para que el programa real pueda convertirse propiamente en código máquina
(binario).
; Díce al ensamblador que usa el modo decimal
; menos los valores $ o %
;Dirección Directa del puerto A
EQU $04
;Dirección control de dato, puerto A
;One byte temp storage location
ORG $0300
;El Programa empezará en $0300
LDA #$80
;Empieza la inicialización
STA PORTA
;El LED se apagará
STA DDRA
;Pone el bit 7 del puerto como salida
LDA PORTA
;Lee el interruptor en LSB del Puerto A
AND #$01
;Prueba el bit-0
BEQ TOP
;Lazo hasta bit-0 = 1
JSR DLY50
;Retardo de 50 ms para los rebotes
BCLR 7,PORTA ;Enciende el LED (bit-7 a 0)
LDA #20
;El Decimal 20 se ensambla como $14
DLYLP JSR DLY50 ;Retardo de 50 ms
DECA
;Contador de Lazo hasta 20 lazos
BNE DLYLP
;20 veces (20-19,19-18,...1-0)
BSET 7,PORTA ;Apaga el LED
JSR DLY50
;Retorno realizado
BRA TOP
;Mira para el siguiente cierre del
STA TEMP1
;Guarda el acumulador en la RAM
LDA #65
;lazo externo de 65 veces
CLRX
;X se usa como lazo interno contador
DECX
;0-FF, FF-FE,...1-0 256 lazos
BNE INNRLP
;6 ciclos * 256 * 500ns/ciclo = 0.768ms
DECA
;65-64, 64-63,...1-0
BNE OUTLP
;1545 ciclos * 65 * 500ns/ciclo = 50.212ms
LDA TEMP1
;Recupera el valor guardado en el acumulador
RTS
;Retorno
Listado 3. Listado Ensamblador
Figura
33. Esta figura muestra algunas las líneas del
71

Publicidad

Tabla de contenido
loading

Este manual también es adecuado para:

Hc08

Tabla de contenido