Cómo crear un retraso variable usando el código de ensamblaje 8051

0

Estoy aprendiendo el ensamblaje y ahora puedo establecer un retraso ya sea marcando TF0 o esperando una interrupción. ¿Cómo puedo escribir una rutina que acepte un tiempo variable? Todo lo que busco en google no es variable. Por ahora no necesito recargar el temporizador. Tengo un tiempo de ciclo de 1us por lo que cualquier cosa entre 1 y 65 ms sería genial.

Soy un estudiante de primer año de secundaria y quiero agradecerte de antemano.

    
pregunta Randy_3

1 respuesta

1

La pregunta es amplia y puede ser más adecuada para stackoverflow.com, pero puedo ayudar ya que yo mismo uso un procesador basado en 8051.

Para escribir una rutina, necesita saber cómo está conectado su dispositivo de entrada al chip procesador 8051 y qué señales se envían en función del dispositivo de entrada. Este dispositivo de entrada puede ser tan simple como un botón conectado a una entrada Pin del microcontrolador.

Ya que desea definir una cantidad de tiempo variable, puede crear un circuito con tres botones y el procesador 8051. Un botón puede ser un valor de incremento, uno puede ser un valor de disminución y uno puede ser aceptado.

Luego, el usuario puede presionar el incremento o decremento hasta que se ingrese el número deseado. Luego use ese número en su rutina de temporizador deseada.

Puede verificar el estado de los botones en el código al verificar que el puerto al que está conectado el botón esté en el estado correcto.

Por ejemplo, si al presionar el botón, el valor en el pin está en el nivel lógico bajo y el pin al que está conectado el botón es el bit más alto del puerto 3, entonces este código funcionará:

jb P3.7,skipPress
# button is pressed - stall until button is released
jnb P3.7,$
# button is released
skipPress:

Ahora digamos que tiene un botón ARRIBA conectado al puerto 3 y el tercer bit más alto (P3.5) que incrementa un número cuando el botón causa una baja lógica en el pin y un botón ABAJO conectado al puerto 3 y el bit más alto (P3 .7) que disminuye un número cuando el botón causa una baja lógica en el pin. Aquí hay un ejemplo de código que funciona:

jb P3.5,skipUp
jnb P3.5,$
inc R7
skipUp:

jb P3.7,skipDown
jnb P3.7,$
dec R7
skipDown:

Coloque lo anterior en una subrutina y ejecútelo cada vez que se permita la entrada del usuario en su programa. Yo uso R7 para almacenar el número de 8 bits. Luego use R7 para comparar con otros datos en sus rutinas de temporizador.

Tenga en cuenta que el procesador 8051 trata con datos de 8 bits, lo que significa que su aritmética está generalmente limitada a números de 0 a 255 inclusive. Si necesita más de 255, debe crear rutinas para almacenar números de 16 bits.

Vaya a enlace para obtener información sobre cómo almacenar números de 16 bits.

Ahora, si realmente desea que un usuario pueda ingresar un número específico y que la pantalla LCD muestre el número, es posible, pero necesitará más botones y, dependiendo de cómo invente el circuito, el proyecto puede ser más caro. Recuerda, cada clave también cuesta dinero.

Lo siento, no puedo escribir su programa de principio a fin, pero debe proporcionar más detalles sobre el hardware que está usando con el chip, ya que eso determina cómo se debe escribir el código.

    
respondido por el user116345

Lea otras preguntas en las etiquetas