Existe una necesidad urgente de escribir un programa de cronómetro utilizando un programa de microcontrolador.
Tiempo EQU 40 horas
Minutos EQU 41H
Segundo EQU 42H
c 100 US EQU 43H
Verifique EQU 10000; número de interrupciones
t 100 US EQU 256-100; establezca el valor inicial del temporizador
Inicio LJMP; p>
ORG 000BH entrada de interrupción del temporizador 0
T0INT: Push PSW protección nacional
Push ACC
MOV A, C100us+1
¿El valor del recuento de JNZ GOON es 0?
Diciembre C100us
GOON: DEC C100us+1
MOV A, C100us
ORL A, C100us+1
p>
Exportación JNZ
MOV C100us, #alto (marcado) valor de recuento de reinicio
MOV C100us+1, #bajo (marcado)
INC segundo; agregue uno al segundo valor
MOV A, segundo
CJNE A, #60, determine si el segundo valor es 60.
MOV segundo, #0; cuando el segundo valor es 60, se borra a 0.
INC minutos; puntuación más uno
MOV un minuto
CJNE A, #60, salida determina si la puntuación es 60.
Minutos MOV, # 0; si la puntuación es 60, borre 0.
INC hora; suma 1 al valor de la hora
MOV por una hora
CJNE A, #24, determina si el valor de la hora es 24.
Hora MOV, # 0; si el valor de la hora es 24, bórrelo a 0.
Salir: pop-up ACC
POP PSW
Reti
Retraso:; subrutina de retardo
MOV R7 , #0FFH
Circuito de retardo:
DJNZ R7, circuito de retardo
Delaru Jazz·R6
Water Soaker Soft
LEDMAP: código de pantalla de tubo digital de ocho segmentos DB 3FH, 06H, 5BH, 4FH
DB 66H, 6DH, 7DH, 07H
Base de datos 7FH, 6FH, 77H, 7CH
DB 39H, 5EH, 79H, 71H
Pantalla LED:
MOV R0, #LEDBUF
MOV R1, #6; ***6 tubos de 8 segmentos
MOV R2, #01111111B; valor inicial del código de escaneo de bits
Bucle: MOV A, #0
MOV P0 ,A; apague los ocho tubos.
MOV A,@R0
MOV P0,A
R2 MOV
MOV·P3 muestra una tubería de ocho segmentos.
MOV R6, #01H
Retraso de llamada
MOV A, R2; muestra el siguiente dígito
RR A
MOV·R2
INC R0
DJNZ R1, ciclo
Remojar en agua para ablandar
T0LED: MOV DPTR, # LEDMAP Convierte códigos de campo en códigos de visualización.
MOVC A, @A+DPTR
Remojado en agua para suavizarlo
Primera versión: MOV TMOD, modo de funcionamiento 2 del temporizador #02H
MOV TH0, # t 100 us; Establecer valor inicial del temporizador
MOV TL0, #T100us
MOV IE, # 10000010B; >
Tiempo MOV, # 0; mostrar valor inicial
Minutos MOV, #0
Segundo MOV, #0
MOV C100us, #alto ( marcar Seleccionar)
MOV C100us+1, #Low (marcado)
SETB TR0; iniciar temporizador 0
MLOOP: MOV A, hora en diez; El número de dígitos muestra el valor de la hora.
MOV B, #10
Rama AB
Llamar a T0LED
MOV · Ledbuff envía el valor de las decenas al búfer de código de visualización; .
MOV A, B; muestra el valor de la hora en unidades.
Llamar a T0LED
ORL A, # 80H mostrar punto decimal
MOV LEDBUF+1, A; enviar búfer de código de visualización
MOV A, minutos; muestra el valor de los minutos en decenas de dígitos.
MOV B, #10
Rama AB
Llamada T0LED
MOV LEDBUF+2, A envía el valor de diez dígitos; al búfer de código de visualización.
MOV A, B; muestra el valor de los minutos.
Llamar a T0LED
ORL A, # 80H mostrar punto decimal
MOV LEDBUF+3, A; enviar búfer de código de visualización
MOV A, segundo
MOV B, #10; muestra el segundo valor decimal.
División AB
Llamar T0LED
MOV LEDBUF+4, A; enviar código de visualización buffer
MOV A, B
Llamar T0LED
MOV · Ledbuff +5, A
Identificador de llamadas subrutina de visualización de llamadas
LJMP MLOOP
p>Fin