Programación de retraso
; 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