Familiarización con el Juego de Instrucciones
Como en la mayoría de los campos de la ingeniería, más de una sucesión de instrucciones, puede
realizar cualquier tarea. Una buena manera de aprender un nuevo juego de instrucciones, es ver de cuántas
maneras diferentes se puede resolver algún pequeño problema de programación. A esto se le llama destreza del
juego de instrucciones.
La
Figura 36
muestra cuatro maneras diferentes para verificar el cierre de un interruptor conectado al bit
0 del puerto A. Se usaron dos de estas maneras en el programa ejemplo del
Aunque todas las secuencias logran la misma tarea básica, hay sutiles diferencias. Normalmente estas diferencias
no son significantes, pero a veces pueden ahorrar tiempo de ejecución o espacio de memoria de programa. En un
microcontrolador pequeño, el espacio de memoria puede ser una consideración importante.
0000
PORTA EQU
0300
0300
B6 00
[3] TOP1
0302
A4 01
[2]
0304
27 FA
[3]
0306
01 00 FD [5] TOP2
0309
B6 00
[3] TOP3
030B
44
[3]
030C
24 FB
[3]
030E
A6 01
[2]
0310
B5 00
[3] TOP4
0312
27 FC
[3]
Los números entre corchetes, son el número de ciclos que la CPU requiere para cada instrucción de la
línea de programa. La secuencia TOP1 necesita seis bytes de espacio de programa y ocho ciclos. El acumulador
es $01cuando el programa llega a la declaración BEQ. La secuencia TOP2 sólo necesita tres bytes y cinco ciclos
y el acumulador no estará perturbado. (Ésta probablemente es la mejor secuencia en la mayoría de casos). La
secuencia TOP3 toma un byte menos que la secuencia TOP1, pero también necesita un ciclo extra en la
ejecución. Después de la secuencia TOP3, el acumulador todavía mantiene los otros siete bits leídos del puerto
A, aunque estos se han desplazado una posición a la derecha. La última secuencia necesita seis bytes y un total
de ocho ciclos, pero el propio lazo es de sólo seis ciclos. Trabajando a través de ejercicios así, se mejorará la
destreza con el juego de instrucciones. Esto será muy útil cuando se necesita reducir unos bytes de un programa
para encajarlo en el espacio de memoria disponible.
Desarrollo de la Aplicación
Motorola ofrece unos sistemas de desarrollo simples para la familia MC68HC705 (por ejemplo el
M68ICS05JE para el MC68HC705KJ1A y MC68HC705J1A). Estos sistemas incluyen un simulador en circuito
(software y placa hardware). Las placas se conectan al puerto serie (com) de un PC. Con un cable permite, al
simulador en circuito, ser conectado a una aplicación para ocupar el lugar del microcontrolador que se usará en
el futuro. También en la placa de desarrollo hay un zócalo especial que permite programar una versión EPROM
o OTP.
Un simulador es un programa para PC, que ayuda al desarrollo y la depuración de un programa. Esta
herramienta simula las acciones de un microcontrolador real, pero tiene algunas ventajas importantes. Por
ejemplo, en un simulador se tiene el control completo sobre 'cuando' y 'si debe' la simulación de la CPU debe
adelantar a la siguiente instrucción. También se puede 'mirar a' y 'cambiar los registros' o 'posiciones de
memoria' antes de ir a la siguiente instrucción.
Los simuladores no corren a velocidad de tiempo real. Desde el PC se simulan acciones de la MCU con
programas de software, la MCU necesita más tiempo para ejecutar cada instrucción, que lo habría en una MCU
real. Para muchos programas, esta reducción de velocidad no es notable. Tan lento como puede ser un simulador,
todavía es mucho más rápido que en términos humanos. Algunos programas generan retardos de tiempo en lazos
de software (como los de la rutina DLY50 del
$00
ORG
$0300
LDA
PORTA
AND
#$01
BEQ
TOP1
BRCLR 0,PORTA,TOP2
LDA
PORTA
LSRA
BCC
TOP3
LDA
#$01
BIT
PORTA
BEQ
TOP4
Figura 36. Cuatro maneras de verificar un interruptor
Listado 3. Listado Ensamblador
Listado 3. Listado Ensamblador
;Dirección directa del puerto A
;El programa empezará en la dirección $0300
;Lee el pulsador en LSB del Puerto A
;Prueba el bit-0
;Lazo hasta bit-0 = 1
;Lazo desde aquí hasta cerrar el interruptor
;Lee el pulsador en LSB del Puerto A
;Desplaza el Bit-0 para acarreo
;Lazo hasta pulsador cerrado
;1 en LSB
;Prueba el pulsador para bit-0
;Lazo hasta interruptor cerrado
76
). Los retardos de 50 ms de
.