Programación en
Ensamblador
5.1. Ejemplos básicos de programación
Ejemplos de programas en ensamblador de los microcontroladores 8051.
NAME CONTADOR_HEX
ORG 0
END
NAME CONTADOR_BCD
ORG 0
END
NAME ROTACION_ACUMULADOR
ORG 0
END
El tiempo de un retardo por programa no tiene un valor fijo, este depende de las
instrucciones que forman parte del bucle (los ciclos máquina utilizados) y de la
velocidad del reloj del microprocesador (CPU).
Para este ejemplo en cuestión, el bucle se realiza sobre la instrucción DJNZ, la cual
necesita dos ciclos máquina para su ejecución. Cada ciclo máquina utiliza 12 periodos de
reloj. Si la frecuencia de la CPU es de 12MHz, el tiempo empleado en realizar las 256
iteraciones es de 512 μs (microsegundos).
NAME RETARDO_1
ORG 0
END
Para poder realizar retardos por software con tiempos superiores al segundo se ha
de realizar mediante el anidamiento de bucles. En la figura se muestra un anidamiento
de bucles con los registros R0, R1 y R2. En este sistema, por cada decremento del
registro R1, el registro R0 se ha decrementado 256 veces, y por cada decremento de R2
el R1 ha realizado 256 iteraciones, por lo que el resultado final es de 2^24 = 16777216
iteraciones. El tiempo resultante es aproximadamente 33,554432 segundos, según
las condiciones expuestas en el ejemplo anterior.
Para determinar el tiempo se han de modificar los bits que representan los valores más
significativos, correspondientes al R2.
NAME RETARDO_2
ORG 0
END