¿Cómo utilizar el retraso del microcontrolador para lograr el retraso?
La unidad de tiempo de retardo() en el microcontrolador no la proporciona el sistema, sino que la programa el usuario.
Si se implementa un bucle mediante una declaración de bucle, no se puede calcular, pero el tiempo específico se puede ver mediante la simulación del software. Sin embargo, generalmente no se pueden lograr retrasos precisos utilizando declaraciones de bucle.
Si desea retrasar con precisión, generalmente necesita usar un temporizador. El tiempo de retardo está relacionado con el oscilador de cristal. Los sistemas MCU generalmente usan osciladores de cristal de 11.059 2 MHz, 12 MHz o 6 MHz. El primero es más fácil de generar varias velocidades en baudios estándar, y los dos últimos tienen un ciclo de máquina de 1 μs y 2 μs respectivamente, lo que facilita un retraso preciso. Este programa supone que se utiliza un oscilador de cristal con una frecuencia de 12 MHz.
El tiempo de retardo más largo puede alcanzar 216=65 536 μs. Si el temporizador funciona en modo 2, se puede lograr un retraso muy corto y preciso; si se utilizan otros métodos de sincronización, se debe considerar el tiempo para reinstalar el valor inicial del temporizador (reinstalar el valor inicial del temporizador requiere 2 máquinas); ciclos).
Información ampliada
El principio de la función de retardo en el programa de lenguaje C del microcontrolador es: solo ejecuta algunas de las llamadas "instrucciones sin sentido" sin un impacto sustancial, como comparar tamaños. la operación de autoadición de un determinado int, etc.
Algunos programas del microcontrolador necesitan llamar al programa de retardo y organizar razonablemente el número de ciclos y el número de no operaciones. Método: si utiliza ensamblaje, calcule su ciclo de instrucción en función de su oscilador de cristal actual. frecuencia y luego combínela con sus necesidades.
Al escribir un programa de retardo, si usa C, todavía depende de cómo se ve el código ensamblador final generado. La forma más sencilla es escribir el programa y luego ejecutar una simulación suave en el compilador para comprobar la hora.
Problemas a los que se debe prestar atención cuando se utiliza el retraso del lenguaje C del microcontrolador:
No hay declaraciones vacías en el lenguaje C estándar. Sin embargo, en la programación de microcontroladores en lenguaje C, a menudo es necesario utilizar varias instrucciones vacías para producir un efecto de retardo breve. Esto es fácil de implementar en lenguaje ensamblador, solo escriba algunos nops.
En keil C51, llame directamente a la función de biblioteca:
#include // declara void _nop_(void);
_nop_(); Instrucción NOP
Función: Para un breve retraso, que requiere nivel, utilice la función "_nop_". Esta función es equivalente a la instrucción NOP del ensamblador, con un retraso de varios microsegundos. La instrucción NOP es una instrucción de ciclo único y el tiempo de retardo se puede calcular a partir de la frecuencia del oscilador de cristal. Para un oscilador de cristal de 12 M, el retardo es 1uS. Para un retraso relativamente largo, que debe ser superior a 10 us, se utiliza la instrucción de bucle en C51 para implementarlo.