Red de conocimiento informático - Computadora portátil - Programación de retraso

Programación de retraso

;Lo adapté del sitio web del Laboratorio de Producción Electrónica. El diagrama del circuito es el de la placa de prueba del microcontrolador 51. Mientras se conserven el LED P1.0, la tecla de marcación de 4 dígitos, el zumbador, los interruptores K1, K2, el circuito de visualización y el circuito estabilizador de voltaje, el sistema mínimo del microcontrolador es. logrado.

; Temporizador de cuenta regresiva, puede configurar la hora y puede elegir una cuenta regresiva de 5/15/20/30/35/45/50 minutos.

;El tiempo de cuenta atrás se controla mediante 2/3/4 de las cuatro posiciones del interruptor DIP.

;El segundo dígito representa 5 minutos, el tercer dígito representa 15 minutos y el El cuarto dígito representa 15 minutos. El número de dígitos representa 30 minutos.

;La cuenta regresiva de 5/15/20/30/35/45/50 minutos se puede generar mediante diferentes combinaciones.

; El diodo emisor de luz externo del puerto P1.0 es un LED de estado, que siempre está encendido cuando el cronometraje no ha comenzado y parpadea durante el cronometraje.

; K1 es el botón de inicio y K2 es el botón de parada.

¿un poco? equivalente? 20h? ;Unidad de almacenamiento de un dígito de tubo digital

b_bit? equivalente? 21h? ;Unidad de almacenamiento de diez dígitos de tubo digital

¿Trabajador temporal? equivalente? 22h? ;La ubicación de la memoria donde se almacena el valor del contador.

;Inicialización de arranque

¿MOV? P3, #0FFH inicializa el puerto P3 y lo establece en alto para entrada clave.

¿MOV? P0, #0FFH apaga el tubo digital de visualización de la hora.

¿CLR? p 1.0; enciende el indicador LED

; espera la entrada del teclado

Inicio: ¿JB? P3.6, $; ¿Se ha presionado el botón de inicio de evaluación del ciclo K1?

¿Llamar? retraso 10; retraso 10 ms para eliminar la fluctuación de contacto

JB? P3.6, comenzar; si hay interferencia, regresar.

¿JNB? P3.6, $; espere a que se suelte el botón.

; Leer el estado del dip switch y obtener el tiempo de cuenta atrás.

Escena: ¿MOV? a, # 0; borre uno primero.

¿JB? P2.0, un 1; determina si el segundo bit del interruptor DIP está activado. Si está conectado, agregue 5 a A (el valor aquí puede modificarlo usted mismo).

¿Información adicional? Uno, #5

A1: ¿JB? P2.1, A2; determine si el tercer bit del interruptor DIP está activado. Si está conectado, agregue 15 a A (el valor aquí puede modificarlo usted mismo).

¿Información adicional? a, #15

A2: ¿JB? P2.2, A3; determine si el cuarto bit del interruptor DIP está activado. Si está conectado, agregue 30 a A (el valor aquí puede modificarlo usted mismo).

¿Información adicional? Uno, #30

A3: ¿MOV? Temperatura, A

En este momento, el valor en TEMP es el tiempo de cuenta atrás

El programa que utiliza un tubo digital para mostrar el tiempo

; Muestra: CLR? P2.4 libera el relé 1 y comienza a cronometrar (el relé está en estado cerrado cuando se enciende) (dado que eres un recordatorio de cuenta regresiva del partido, no necesitas un relé y puedes ignorarlo).

¿CLR? P2.3 libera el relé 2 y comienza a cronometrar (el relé está en estado de activación al arrancar).

¿MOV? R2, #120

Arturo: ¿MOV? R3, #250

TIEMPO1: ¿mov? 1. ¿Trabajadores temporales? ;¿Convertir un número hexadecimal en temperatura a 10?

mov? b, #10? ;10 base/10=10 base

div? ¿Abdominales

movimiento? b_bit,a? ;movimiento decimal

? un poco, b? ;Un poco en la zona b.

mov? dptr,#tabuladornum? ;Especifique la dirección inicial de la búsqueda en la tabla.

mov? r0,#4?

dpl1:? ¿movimiento? r1,#250? ;

dplop:? ¿movimiento? ¿Uno, un bit? ;Tomar un solo dígito

MOVC? 1. ¿@一DPTR? ;Encontrar código de 7 segmentos con un dígito

mov? p0,a? ;Enviar un código de 7 dígitos

clr? p2.7? ;Abrir una pantalla de bits

¿Llamar? retraso 1; visualización durante 1 milisegundo

setb? p2.7 Apague el monitor de la unidad para evitar imágenes fantasma.

mov? a, b_bit? ;Tomar diez dígitos

MOVC? 1. ¿@一DPTR? ;Compruebe el código de 7 segmentos para ver si hay decenas de dígitos.

mov? p0,a? ;Envía un código de 7 segmentos de diez dígitos.

clr? p2.6? ;Activar visualización de decenas

¿Llamar? retraso 1; visualización durante 1 milisegundo

setb? p2.6 Apague la visualización de decenas de dígitos para evitar imágenes fantasma.

; Insertar un segmento de programa para determinar si hay entrada clave durante el proceso de cronometraje.

C1: ¿JB? P3.6, B1

¿Llamar? retraso 10; retraso de 10 milisegundos para eliminar la inquietud.

¿JB? P3.6, C1

¿JNB? P3.6, $; espere a que se suelte el botón.

¿AJMP? Configuración

B1: ¿JB? P3.7, M33

¿Llamar? retraso 10; retraso de 10 milisegundos para eliminar la inquietud.

¿JB? P3.7, B1

¿JNB? P3.7, $; espere a que se suelte el botón.

¿AJMP? Sobre

M33: djnz? r3,TIEMPO1? ;El bucle de 2 ms se ejecuta 250 veces y el tiempo es de aproximadamente 0,5 segundos.

¿CPL? p 1.0; hace que el LED parpadee cada 1 segundo.

djnz? r2,AB? ;El bucle se ejecuta 120 veces y el tiempo es 1 minuto.

¿Diciembre? Temperatura; para minutos enteros, restar 1 al tiempo de cronometraje.

¿MOV? 1. ¿Temporal

JNZ? Pantalla; determinar si el valor de TEMP es 0? ¿No haces un bucle para 0?

;Finalizar temporizador

OVER: ¿CLR? p 1.0; la luz indicadora LED está siempre encendida

SETB? P2.4 el relé 1 se enciende, el temporizador finaliza y vuelve al estado en el que estaba encendido.

¿SETB? P2.3 el relé 2 se enciende, el temporizador finaliza y vuelve al estado en el que se encendió.

¿SETB? P2.5 Si quieres recordármelo, te daré una bocina y la tocaré regularmente. Por supuesto, también puedes personalizar algunos métodos de recordatorio.

¿Llamar? retraso 10;

¿Llamar? retraso 10;

¿Llamar? retraso 10;

¿Llamar? retraso 10;

¿Llamar? retraso 10;

AJMP? Inicio; volver al estado de inicialización de arranque

; subrutina de retraso de 1 milisegundo

MOV? R4, segundo clasificado

D1: ¿MOV? R5, #248

¿DJNZ? R5, USD

¿DJNZ? R4, D1

Remojar en agua para suavizar

; subrutina de retraso de 10 milisegundos

Retraso 10: ¿MOV? R4, No. 20

D2: ¿MOV? R5, #248

¿DJNZ? R5, USD

¿DJNZ? D2 R4

Remojado en agua para suavizarlo

; Los dígitos 0~9 de los 7 tubos digitales en el tablero experimental son * * * códigos de visualización negativos.

tabulación numérica:? DB? 0CFH, 03H, 5DH, 5BH, 93H, 0DAH, 0DEH, 43H, 0DFH, 0DBH

Fin