Red de conocimiento informático - Conocimiento sistemático - Ensamblaje de un programa de retardo escrito con DJNZ ¿Cómo finalizar el bucle?

Ensamblaje de un programa de retardo escrito con DJNZ ¿Cómo finalizar el bucle?

Existen muchos métodos de retraso y el cronometraje/conteo es más conveniente y preciso. Si utiliza un retraso de software, puede utilizar bucles (ya sean múltiples o anidados). Determine el número de ciclos en función del tiempo y esfuércese por ser preciso. El cálculo del tiempo se basa en la frecuencia del oscilador de cristal de la máquina para calcular el tiempo de ejecución de cada instrucción (el tiempo de ejecución de cada instrucción multiplicado por el número de ciclos es el tiempo total de ejecución de la instrucción) y la suma de todos los tiempos de ejecución de las instrucciones. es el tiempo de retraso.

Por ejemplo: asumiendo que la frecuencia del oscilador de cristal es 12MHz, cada ciclo de la máquina es 1us

El programa de retardo 513us es

DL513: MOV R7, #0FFH; 1us

p>

DJNZ R7, $; 2us *255=510us

RET ; 2us

El tiempo de retardo es 1 510 2 = 513us

Retraso Si el tiempo es mayor, se pueden usar ciclos múltiples (tomando ciclos cuádruples como ejemplo), como:

KKKK0: MOV R2, #XX 1us

;

KKKK1: MOV R3, #LL; 1us*XX

KKKK2: MOV R4, #NN; 1us*XX*LL

KKKK3: MOV R5, #MM; *XX*LL*NN

DJNZ R5, $; 2us *XX*LL*NN*MM

DJNZ R4, KKKK3;

DJNZ R3, KKKK2; 2us *XX *LL

DJNZ R2, KKKK1; 2us *XX

RET

El tiempo de retardo es 1us; 1us*XX 1us*XX*LL 1us*XX *LL*NN 2us *XX*LL*NN*MM 2us *XX*LL*NN 2us *XX*LL 2us *XX 2us

Determinar apropiadamente el cuatro tiempos de ciclo XX, LL, NN y MM. Puede obtener un tiempo de retraso preciso.