Requisitos urgentes para el programa de reloj electrónico del microcontrolador
disp primer EQU 30H;disp primera ubicación de memoria de dirección
Timbre EQU p 1.4;timbre
Combus EQU 2FH tiempos guardados
p><; p>ORG 0000H Dirección de inicio de ejecución del programaInicio LJMP; saltar a la etiqueta y comenzar a mantener
ORG 0003H Interrupción externa 0 interrumpir programa
RETI Interrupción externa 0; retorno de interrupción
ORG 000BH temporizador T0 proceso de interrupción
LJMP INTT0 salta a INTT0 para su ejecución.
ORG 0013H; Interrupción externa 1 programa de interrupción
RETI; Interrupción externa 1 retorno de interrupción
ORG 001BH Proceso de interrupción del temporizador T1
LJMP intt 1; salta a INTT1 para su ejecución.
ORG 0023H entrada del programa de interrupción en serie
RETI; retorno del programa de interrupción en serie
QQQQ: MOV A, #10H
Bahía MOV, 79H
MUL AB
Agregar uno, 78H
MOV·Combs
bucle bs: LCALL ds 20 ms TELÉFONO CORTO; p>
LCALL DL1S
LCALL DL1S
LCALL DL1S
DJNZ CONBS, BSLOOP
CLR 08H CLEAR Marca de hora p>
AJMP START1
;* * * * * * * * * * * * * *Se inicia el programa principal* * * * * * * * * * * * * *
Inicio: tono de llamada CLR;
LCALL ST muestra el año, mes, día y número de clase cuando se enciende.
MOV R0, # 00H borra la unidad de almacenamiento 00H~H
MOV R7 # 80H
Borrar pantalla: MOV @R0, #00H
INC R0
DJNZ R7, CLEARDISP
MOV 20H, #00H borrar 20 horas (para marcar)
MOV 7AH, #0AH entrada "off" Datos
MOV TMOD, # 11H; Sean t0 y t1 temporizadores de 16 bits.
MOV TL0, # 0B0H50 valor inicial de temporización de milisegundos (para temporización T0)
MOV TH0, # 3CH50 valor inicial de temporización de milisegundos
MOV TL1, # 0B0H50 milisegundos valor inicial de temporización (temporización de flash T1)
MOV TH1, # 3CH50 valor inicial de temporización de milisegundos
SETB EA; interrupción completa habilitada
SETB ET0 permite interrupción T0;
SETB TR0; activa la interrupción T0
MOV R4, # 14H; conteo de tiempo de 1 s (50 milisegundos*20)
MOV DISPFIRST, unidad de visualización # 70H Son 70H ~ 75H.
; El siguiente es el bucle del programa principal
START1: visualización LCALL; subrutina de visualización de llamada
JNB P1.0, ajuste 1 cuando P1.0; El puerto está a las 0 en punto, vaya al programa de ajuste de hora.
JNB P1.1, función de cronómetro FUNSS, presione la tecla P1.1 para ajustar la hora y restar 1.
JNB P1.2, cronómetro FUNPT, botón, reloj
JNB P1.3, configuración del reloj despertador temporizado TSFUN
JB 08H, el símbolo QQQQ es 1, decir la hora.
AJMP inicia 1; cuando P1.1 es 1, vuelve a START1.
FUNPT: LJMP FUNPT
; El siguiente es el procedimiento de configuración de la hora de la alarma. Presione P1.3 para ingresar a la configuración.
No es divertido: LCALL ds20 ms
JB P1.3, START1
esperar 113: JNB p 1.3, esperar 113;
JB 05H, CLOSESP Si la alarma está encendida, apágala.
MOV DISPFIRST, # 50H ingresa al programa de configuración de alarma y muestra la unidad de temporización de alarma 50H~55H.
MOV 50H,#0CH "-" Al configurar la alarma, el modo de visualización es 00:00: -
MOV 51H,#0AH "Negro"
Esperando: SETB EA
LCALL muestra
JNB P1.2, DSFINC agrega 1 solo
JNB P1.0, DSDEC menos 1
JNB P1.3, Ajuste de entrada DSSFU
AJMP DSWAIT
CLOSESP: CLR 05H Indicador de alerta de cierre
CLR Bell
AJMP START1
DSSFU: LCALL ds 20 ms; anti-vibración
JB P1.3, DSWAIT
Ajuste LJMP DSSFUNN al ingresar
SETMM 1: LJMP SETMM; Ir a la configuración del programa de ajuste de tiempo mm.
ds finc: LCALL ds 20 ms; antivibración
JB P1.2, DSWAIT
DSWAIT12: visualización LCALL; emisión de bonos de igual cantidad
JNB P1.2, DSWAIT12
CLR EA
MOV R0, #53H
LCALL agrega 1 configuración de alarma se divide en 1; p>
MOV A, R3; subdatos puesto
clr C; borrar bandera de transporte
CJNE A, #60H, ADDHH22
addhh 22: JC ds espera; cuando sean menos de 60 minutos, regresa.
ACALL CLR0 Cuando es mayor o igual a 60 minutos, la unidad de cronometraje de minutos se pone a 0.
AJMP DSWAIT
ds dec: LCALL ds 20 ms; antivibración
JB P1.0, DSWAIT
dswaite: LCALL mostrar ;Emisión de bonos iguales
JNB P1.0, Desweet
CLR EA
MOV R0, #53H
LCALL sub 1; el ajuste de la alarma se reduce en 1.
LJMP DSWAIT
; El siguiente es el programa de conversión de función de cronómetro/reloj.
; Presione P1.1 para la conversión de funciones.
FUNSS: LCALL DS20MS
JB P1.1, START11
Esperando 11: JNB p 1.1
CPL 03H
JNB 03H, Timfen
MOV DISPFIRST, #60H Mostrar unidad de datos del cronómetro
MOV 60H, #00H
MOV 61H, #00H
MOV 62H, #00H
MOV 63H, #00H
MOV 64H, #00H
MOV 65H, #00H
MOV TL1, # 0F0H10ms valor inicial de temporización
MOV TH1, # 0D8H10ms valor inicial de temporización
SETB TR1
SETB ET1
Inicio 11: LJMP Inicio 1
TIMFUN: MOV DISPFIRST, #70H Unidad de datos del reloj de visualización
CLR ET1
CLR TR1
START12 : LJMP START1
; El siguiente es el programa de función de pausa y borrado del cronómetro.
; Presione P1.2 para pausar o borrar 0, presione P1.1 para salir del cronómetro y volver al reloj.
FUNPTT: LCALL DS20MS
JB P1.2, START12
Esperando 22: JNB P1.2, esperando 21
CLR ET1
CLR TR1
Esperando 33: JNB P1.1, interesante
JB P1.2, WAIT31
LCALL DS20MS
JB P1.2, espera 33
Espera 66: JNB P1.2, espera 61
MOV 60H, #00H
MOV 61H, #00H
MOV 62H, #00H
MOV 63H, #00H
MOV 64H, #00H
MOV 65H, #00H
ESPERE 44: JNB P1.1, interesante
JB P1.2, ESPERE41
LCALL DS20MS
JB P1.2, Esperando 44
Esperando 55: JNB P1.2, esperando 51
SETB ET1
SETB TR1
AJMP START1
;La siguiente es la pantalla que no se apaga cuando la tecla está esperando ser liberada
WAIT21: Pantalla LCALL
AJMP espera 22
WAIT31: visualización LCALL
AJMP espera 33
WAIT41: visualización LCALL
AJMP espera 44
WAIT51: LCALL muestra
AJMP espera 55
WAIT61: LCALL muestra
AJMP espera 66
; * * * * * * Programa de cronometraje de 1 s * * * * * * * * * * * * * * * *