Papel de reloj LCD MCU
Número de templado EQU 30H
Segundo EQU 31H
Tiempo mínimo de EQU 32H
Tiempo de EQU 33 horas
NUM EQU 34H
Tim·EQU 35H
Tiempo EQU 36H
EQU Zhou 37H
Taiwán EQU 38 horas
Temper_H EQU 39H
EQU 3AH
Luz EQU 00H
Luna EQU 04H
Anillo EQU 02H p>
EQU Código Postal 11H
Exist_18B20 EQU 06H
DQ EQU P1.3
Organización 0000H
Gerente General LJMP
ORG 000BH
LJMP int_t0
Principal: MOV SP, #40H
Estado de MOV, #00H
cantidad de templado de mov , #03h
MOV No. 55H
MOV mínimo, #59H
Tiempo de MOV, #11H
MOV TW_NUM# 00H
luz SETB; estado brillante
CLR Luna; tarde
timbre SETB; alarma sonando
CLR TEM _ ST no emitir un comando de conversión de temperatura.
ltiempo de inicialización de llamada
aa: lcall name _ disp
ajmp aa
inicialización programada
Inicialización Sincronización:
MOV TMOD, #01H
MOV TH0, #03BH
MOV TL0, #03CH
SETB TR0;
SETB ET0; habilita la interrupción T0
SETB EA; la interrupción de la CPU está completamente activada
Remojar en agua para suavizar la memoria
; inicialización
Inicializar memoria:
Estado MOV, #00H
Número MOV 50H
MOV mínimo, #59H
Hora MOV, #11H
MOV TW _ NUM # 00H
Número MOV, #00H
Minutos de hora MOV, #00H
Hora MOV, #12
luz SETB; estado brillante
luna SETB; tarde
alarma CLR apagada
CLR TEM_ST No se emitió ningún comando de conversión de temperatura.
CLR EXIST_18b20
Remojado en agua para suavizar
; Muestra la subrutina y muestra dos tuberías al mismo tiempo.
; Entrada: el número mostrado por R6 (código BCD comprimido)
; R7 muestra la posición del tubo digital (alto 2, 4, 6, 8)
Pantalla: Presione ACC
MOV ACC, R3
Presione ACC
Región administrativa R2 MOV
Presione ACC
MOV·R2, segundo clasificado
R6 MOV
Intercambio A
DI1:
ANL A, #0FH
Pulse ACC
MOV A, R7
MOV R3, A
MOV A, #0FEH
DI2 :
p>RR A
DJNZ R3, DI2
MOV R3, A
ACC popular
SETB P1.7
MOV DPTR, #CODE_TAB
MOVC A, @A DPTR
CLR TI
MOV·SBUFF p>
JNB Titanio, USD
CLR TI
MOV SBUF, R3
JNB Titanio, USD
CLR P1. 7
p>LCALL retrasada el 1
7 de diciembre
R6 MOV
DJNZ R2, DI1
Popular ACC
MOV·R2
ACC popular
MOV R3, A
ACC popular
Remojar en agua para que quede suave
p>
CODE_TAB: DB 040H, 079H, 24H, 30H, 19H, 12H
DB 02H, 78H, 00H, 10H, 48H, 7FH
DB 16H, 10H, 46H, 40H
; código BCD más una subrutina
Entrada: dirección de datos R7 (
; Salir : B más 1 valor (el valor original ha sido Cambiar).
ADD_1: Empujar ACC
MOV ACC, R0
Pulsar ACC
MOV A, R7
MOV R0, A
MOV A, @R0
Empresa A
Ada
MOV @R0, A
Película B, un
ACC popular
MOV R0, A
ACC popular
Remojado en agua para suavizar
;Menos uno (00 después de 59)
;Entrada: Dirección de datos R7
;
SUB_1_60: Pulsar ACC
MOV ACC, R0
Empujar ACC
Empujar PSW
MOV A, R7
MOV R0, A
MOV A, @R0
CJNE A, #00H, SU10
MOV @R0, #59H
POP PSW
ACC popular
MOV R0, A
ACC popular
Remojado en agua para suavizar
SU10: CLR C
SUBB A , #1
Esquina MOV
JNC SU20
SUBB A, No. 5
MOV @R0, A
POP PSW
ACC Popular
MOV R0, A
ACC Popular
Remojado en agua para hacer suave
;Menos uno (12 es igual a 1)
;Entrada: dirección de datos R7
;
SUB_1_12: Empujar ACC
MOV ACC, R0
Empujar ACC
Empujar PSW
MOV A, R7
MOV R0, A
MOV A , @R0
CJNE A, #01H, SU01
MOV @R0, #12H
POP PSW p>
ACC Popular
p>MOV R0, A
ACC Popular
Remojado en agua para suavizar
SU01 : CLR C
SUBB A, # 1
Esquina MOV
Jiannanchun SU02
SUBB A, No. 5
MOV @R0, A
POP PSW
Pop ACC
MOV R0, A
Pop ACC
Remojado en agua para ablandar
; Subrutina retrasada
;
DELAY6: pulsar ACC con retraso de 6 milisegundos
MOV A, R5
Empuje ACC
R4 MOV
Empuje ACC
MOV R5 # 0BH
LJMP DL2
DELAY1: Pulsar ACC retardo 1ms
MOV A, R5
Pulsar ACC
R4 MOV
Pulsar ACC
MOV R5, #02H
DL2: MOV R4, #0FAH
DJNZ R4, USD
DJNZ R5, DL2
ACC popular
MOV R5 , A
ACC popular
MOV·R4
ACC popular
Remojado en agua para suavizar
; T0 interrumpe el programa de servicio
int.
_ t0: CLR ET0; apaga la interrupción
CLR TR0 apaga el contador
MOV TL0, # 0B8H
MOV TH0, # 03CH cuenta de recarga (corrección)
SETB TR0; empezar a contar
Presione ACC
Presione B
Presione PSW
MOV A, R0
Pulsar ACC
MOV A, R1
Pulsar ACC
R2 MOV
Pulsar ACC
MOV A, R3
Empujar ACC
R4 MOV
Empujar ACC
MOV A, R5
Pulsar ACC
R6 MOV
Pulsar ACC
MOV A, R7
Pulsar ACC
MOV País A
CJNE A, #00H, TWINKLE parpadeará si no está en estado 0.
; 0 estado
Número de empresa
MOV A, NUM
CJNE A, #20H, regresa si no se alcanza un segundo; Bell, se acabó la interrupción.
;1 segundo en llegar
Número MOV, #00H
MOV R7, # segundo
LCALL ADD_1;1 segundo, Agregar 1 a cada segundo.
MOV A, SEC
CJNE A, #60h, regreso 60 segundos?
;Llegó
MOV SEC, #00H segundos para borrar
MOV R7, #Mínimo
LCALL ADD_1;Agregue 1 individualmente
MOV más pequeño
CJNE A, #60h, ¿regreso 60 minutos?
MOV es el más pequeño, #00H60 puntos, cero puntos.
MOV R7, # horas;
LCALL ADD _ 1; tiempo más 1
MOV A, B
CJNE A, # 12H, n. 13; llegó a 12?
CPL Luna; Llegó a las 12 en punto, actualizado por la mañana y por la tarde.
N13:
CJNE A, #13H, regresa; llega a 13?
Hora MOV, #01H; cuando llega el 13, pasa a ser 01.
Regreso LJMP
Flash: INC TW_NUM
MOV A, número de Taiwán
CJNE A, #06H, retorno 50ms*6; =0.3s para llegar?
MOV TW_NUM, # 0H0.3s, se borra el recuento.
LCALL TW_DISP
CPL claro; voltear brillante y oscuro
Volver a:
ACC popular
MOV R7 , Un
ACC Popular
MOV·R6
ACC Popular
MOV R5, Un
Popular ACC
MOV·R4
ACC popular
MOV R3, A
ACC popular
MOV·R2
ACC popular
MOV R1, A
ACC popular
MOV R0, A
POP PSW
p>
Pop Bay
ACC popular
SETB ET0
Reti
Mostrar subrutina de hora;
; Parámetro de entrada: B es el contenido de visualización.
Tiempo DISP:
Pulsar ACC
R6 MOV
Pulsar ACC
MOV A, R7 p> p>
Presione ACC
MOV A, B
JNB Luna, hora DISP
Agregue uno, #20H
Tiempo DISP:
Agregar uno, #0C0H
MOV·R6
MOV R7, #08H
Pantalla LCALL
ACC popular
MOV R7, A
ACC popular
MOV·R6
ACC popular
Remojar en agua lo suaviza
; Subrutina de visualización normal (sin parámetros de entrada y salida)
Nomination_DISP: Push ACC
MOV R0, A p> p>
Pulsar ACC
MOV R5, A
Pulsar ACC
MOV·R6
Pulsar ACC p>
MOV R7, A
Push ACC
MOV R7, #02H posición de visualización inicial
MOV R5, #03H ciclo
MOV R0, # cantidad de templado
NOM1: MOV A, @R0
MOV·R6
MOV A, R7
Empuje ACC proteger R7
Pantalla LCALL
ACC popular
MOV R7, ACC
INC R0
INC R7
La posición de visualización de INC R7 se mueve hacia arriba
djnz R5, NOM1
MOV B, @R0
LCALL DISP hora; visualización Hora
ACC popular
MOV R7, A
ACC popular
MOV·R6
ACC popular
MOV R5, A
ACC Popular
MOV R0, A
ACC Popular
Remojado en agua para suavizar
;Texan
TW_DISP: Accesorio Push
R4 MOV
Push ACC
R6 MOV
Empujar ACC
MOV A, R7
Empujar ACC
Estado MOV R4
CJNE R4, # 01H , ESTADO2
ESTADO1: MOV B, hora estado 1: normal, primera corrección.
LCALL DISP hora; cuando la hora se muestra normalmente.
Lámpara JNB, TD1
Minnesota MOV·R6
MOV R7, #06H Mostrar hora y momentos destacados
Pantalla LCALL
p>
LJMP TIME_D_END
TD1: MOV R6, #0BBH puntos brillantes y oscuros
MOV R7, #06H
LCALL Show
LJMP Time_D_End
Estado 2: Estado MOV R4
CJNE R4, Estado 02, Estado 3
Minnesota MOV·R6 normal; pantalla
MOV R7, No. 6
Pantalla LCALL
Luz JNB, TD2
MOV B, hora cuando la pantalla está brillante;
Tiempo DISP
Tiempo LJMP_D_END
TD2: MOV R6, #0BBH DISP_DARK HOUR
MOV R7, #08H
LCALL DISPLAY
LJMP TIME_D_END
ESTADO 3: ESTADO MOV R4
CJNE R4, 03er lugar, 4to estado
MOV B, estado TIM_HOUR 1: normal, corrección de hora.
LCALL DISP hora; cuando la hora se muestra normalmente.
Lámpara JNB, TD3
Tim·MOV·R6
MOV R7, #06H Mostrar hora y momentos destacados
Pantalla LCALL
p>LJMP Time_D_End
TD3: MOV R6, #0BBH puntos brillantes y oscuros
MOV R7, #06H
LCALL DISP_RING DISPLAY DE ALARMA
LJMP TIME_D_END
ESTADO 4: ESTADO MOV R4
CJNE R4, #04, T_D_END
MOV R6, visualización normal de sincronización
MOV R7, No. 6
Pantalla LCALL
Luz JNB, TD4
MOV B, hora cuando la pantalla está brillante; p>
Tiempo DISP
Tiempo LJMP_ D _end
TD4: MOV R6, #0BBH muestra tiempo oscuro
MOV R7, #08H
LCALL muestra
Llamar DISP
T_D_END: ACC emergente
MOV R7, A
ACC popular
MOV·R6
ACC Popular
MOV·R4
ACC Popular
Remojado en agua para hacer suave
DISP_Ring:
Pulsar acc
mov acc, r6
Pulsar acc
mov acc, r7
Empujar acceso
anillo jnb, DRING1
mov r6, #0aH abierto "0n"
mov r7, #02H p>
lcall display
ajmp DR_end
DRING1:
mov r6, #00h abre "00"
mov r7 , #02H
visualización de llamada
DR_end: cuenta emergente
mov r7, archivo adjunto
Cuenta popular
mov r6, a
Acceso popular
Remojado en agua para suavizarlo
;Procesamiento de teclado
KEY_DEAL: Empuje ACC p>
R4 MOV
Pulsar ACC
MOV A, R7
Pulsar ACC
KEY_D1: LCALL TW_DISP
KEY_ADD: JB P1.4, ¿KEY_SUB es la clave para agregar?
LCALL TW_DISP; retraso gt8ms
JB P1.4, ¿KEY_SUB es la clave agregada?
Estado MOV R4; sí
¿CJNE R4, #01, KA_ST2 estado 1 (visualización normal)? Si no, vaya a KA_ST2
KA_ST1: MOV R7, #MIN
LCALL ADD_1; miniute Add 1;
SEC MOV·R4
CJNE R4, #60H, ka 1; ¿son 60 segundos?
MOV SEC, #00H es, segundos seguros
KA1: AJMP KEY_SUB
KA_ST2: estado MOV R4
CJNE R4, # 02H, tarjeta ST3
MOV R7, # horas;
LCALL ADD_1
MOV R4, hora
KANE R4, #13H, KA2
MOV hora, #01H
KA2: AJMP KEY_SUB
Tarjeta ST3: Estado MOV R4
CJNE R4, #03H, KA_ST4
MOV R7, #tiempo mínimo
LCALL ADD_1
Tim·MOV·R4
CJNE R4, #60H, KA3
Tiempo MOV minutos, #00H
KA3: AJMP KEY_SUB
KA_ST4: estado de MOV R4
CJNE R4, #04H, KA4
MOV R7, #hora_hora
LCALL ADD_1
MOV·R4, hora
CJNE R4, #13H, KA4
MOV hora, #01H
KA4: NOP
p>
;Llamada explícita
KEY_SUB: JB P3.3, ¿subclave KEY_CAL?
LCALL TW_DISP;
JB P3.3, ¿subclave KEY_CAL?
KS_ST1: MOV R4, estado; subclave
CJNE r4, #01H, KS_ST2 estado 1?
MOV R7, #ESTADO MIN 1
LCALL SUB_1_60
ajmp KEY_CAL
KS_ST2: ESTADO MOV R4
Kane R4, #02H, Kansas ST3
MOV R7, #Hora
LCALL SUB_1_12
ajmp KEY_CAL
ESTADO de Kansas ST3: ESTADO MOV R4
CJNE R4, #03H, KS_ST4
MOV R7, #TIEMPO MINIMO
LCALL SUB_1_60
ajmp KEY_CAL p>
KS_ST4: estado MOV R4
CJNE R4, #04H, KEY_CAL
MOV R7, #time_hour
LCALL SUB_1_12
;Llamada explícita
KEY_CAL: JB P1.5, KEY_FUN
LCALL TW_DISP
JB P1.5, KEY_FUN
p >
ESTADO MOV R4
CJNE R4, #03H, KC_ST4
KC:
CPL RING
AJMP KEY_FUN
p>Estado MOV R4
CJNE R4, #04H, KEY_FUN
Anillo CPL
llamada explícita
KEY_FUN: JB P3.4, To_KEY_ADD
LCALL TW_DISP
JB P3.4, To_KEY_ADD
Estado de la empresa
Estado MOV R4
CJNE R4, #05H, TO_KEY_D1
Estado MOV, #00H
salida de clave ljmp
To_KEY_ADD: ljmp KEY_ADD
TO _ KEY _ d 1: LJMP KEY _ d 1
Salida codificada:
Popular
ACC
MOV R7, Un
ACC Popular
MOV·R4 Aerolíneas
ACC Popular
Inmersión en agua Hacer suave
CFG_18B20:
JB Exist_18B20, RE_config 1; si DS18B20 existe, vaya a RE_CONFIG1.
Remojado para suavizar
Reconfiguración 1:
MOV A, #0CCH emitió el comando skip ROM
LCALL write_bytes
MOV A, #4EH escribe comando de almacenamiento temporal
LCALL write_byte
MOV A, #00H escribe en TH (límite superior de alarma) 00H.
LCALL write_byte
MOV A, # 00H escribe 00H (límite inferior de alarma) en TL.
LCALL write_bytes
Remojar en agua para suavizarlo