Usando djnz para hacer un bucle en el lenguaje ensamblador 8051 [cerrado]

-3

Para programar 8051 usando djnz loop, sé que si le damos a r0 un número, el loop se ejecutará en consecuencia. Por ejemplo:

Mov r0,#50
Back: instructions
Djnz r0,back

El bucle se ejecutará 50 veces.

Pero si quiero colocar djnz al principio, ¿debo inicializar r0 como 51 para que las instrucciones de bucle se omitan 50 veces?

Por ejemplo:

Ex: djnz r0, skip
instructions 
Skip: end

Quiero pasar las instrucciones 50 veces para una ISR de interrupción. Entonces, ¿puedes decirme qué número debo usar?

    
pregunta corvettee

1 respuesta

0

Es realmente muy simple. La instrucción djnz disminuye el valor de un registro en uno y luego ejecuta el salto si el resultado fue distinto de cero. Entonces, sí, si desea omitir un bloque de código 50 veces, debe establecer el valor de registro en 51 para comenzar.

Tenga en cuenta que si el valor de registro es 1, la disminución producirá un resultado de 0 y el salto NO se tomará. Por lo tanto, para omitir el código una vez, debe comenzar con un valor de 2.

Tenga en cuenta también que si el registro es 0 para comenzar, la disminución dará como resultado un valor de 255, y se realizará el salto.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas