Programa de montaje de prensa larga y prensa corta
Programa fuente
El programa fuente es el siguiente: ORG 0000H entrada de inicio del programa
Inicio LJMP
ORG 0003H Interrupción externa 0 entrada de programa de interrupción
Reti
ORG 000BH entrada de programa de interrupción del temporizador T0.
LJMP INTT0 salta a int para su ejecución.
ORG 0013H; entrada del programa de interrupción de interrupción externa 1
Reti
ORG 001BH; entrada del programa de interrupción del temporizador T1.
LJMP int 1
ORG 0023H dirección de entrada del programa de interrupción serial
Reti
;-Programa principal;
Inicio: MOV R0, #70H70 a R0, borrar la memoria de la pantalla 70-7FH.
MOV R7, #0FH
CLEARDISP: MOV @R0, #00H0 se almacena en la memoria en la dirección R0 (70H).
INC R0
DJNZ R7, CLEARDISP
MOV 78H, # 2; la hora predeterminada es las 12:00, la alarma es las 5:00.
MOV 79H, #1
MOV 74H, #2; Evita que el tubo digital muestre 00 horas cuando está encendido.
MOV 75H, #1
MOV 66H, # 1; cuando el tiempo de salida de la interrupción es 1 y llega a 66H, los datos de las unidades de sincronización de minutos y horas se moverán al bandera de memoria.
MOV 68H, # 1; el despertador está encendido de forma predeterminada después del encendido
MOV 7DH, # 6;
MOV canal 7, tercero
MOV 69H, #0
MOV 7AH, #0AH entrada datos "off"
MOV TMOD , # 11H; Sean T0 y T1 temporizadores de 16 bits.
MOV TL0, # 0B0H Valor inicial de temporización de 50 milisegundos (para temporización T0)
MOV TH0, #3CH
SETB EA interrupción completa habilitada
SETB ET0; habilita la interrupción T0
SETB TR0; el temporizador T0 comienza a contar.
MOV R4, # 14H; valor inicial de temporización de 1 segundo (50 milisegundos × 20)
INICIO1: pantalla LCALL; pantalla de subrutina
pitido LCALL; alarma consulta de reloj
JNB P1.7, programa de ajuste de tiempo SETTIMEP1.7 con puerto 0.
JMP inicia 1; cuando P1.7 es 1, vuelve a INICIO1.
;-Sistema de ajuste de hora del despertador;
NFLAG: MOV A, 68H establece el estado del interruptor de alarma
CJNE A, #1, BEE68
MOV 68H, #0
JMP E6
BEE68: MOV 68H, #1
E6: MOV 66H, #8 cuando la interrupción sale del tiempo; Cuando no es igual a 1 hasta 66H, los datos de la unidad de cronometraje de hora y hora se moverán al indicador de memoria de video.
MOV 72H, 7BH
MOV 73H, 7CH
MOV 74H, 7DH
MOV 75H, 7EH
LCALL DDL
LCALL DDL
MOV 72H, 68H
MOV 73H, 69H
MOV 74H, 7AH
MOV 75H, 7AH
LCALL DDL
LCALL DDL
MOV 66H, #1
LJMP INICIO1
SETTIME: LCALL DDL
JB P1.7, NFLAG Cuando se presiona la tecla durante menos de 1 segundo, configure el estado del interruptor de alarma y verifique la hora de la alarma. Cuando no esté cerrado, asegúrese de la precisión y ajústelo durante más de 1 segundo.
MOV TL1, # 0B0HT1 valor inicial de sincronización del flash
MOV TH1, #3CH
MOV R2, # 06H ingresa al estado de sincronización y establece la sincronización inicial del flash valor.
MOV 66H, #8; Sigue moviéndote al configurar el despertador, apaga el reloj y muestra datos.
SETB et 1; permitir interrupción T1
SETB tr 1; iniciar temporizador T1
SET1: visualización de llamada LCALL para evitar que se presionen teclas. mostrado.
JNB P1.7, conjunto 1; el puerto P1.7 es 0, esperando que se suelte el botón.
MOV R5, #00H borra el indicador intermitente del tipo de configuración.
conjunto 1: INC R5; ajuste de minutos de alarma
conjunto 5: visualización LCALL
JB P1.7, conjunto 5
visto 1: LCALL DDL; cuando se presiona una tecla durante más de 1 segundo, se agregará continuamente (0,5 segundos más 1) y menos de 1 segundo.
JB P1.7, consulta de liberación de botón SET6, modulación automática de liberación de botón
MOV R0, #7CH
LCALL ADD1
MOV A, R3
CLR C
CJNE A, #60H, HHN1
HHN1: JC SEETN1
LCALL CLR0
JMP SEETN1
conjunto 6: INC R5; ajuste del despertador
Ver T6: l pantalla de llamada
JB P1.7, ver T6
p >
Ver TNH1: LCALL DDL
JB P1.7, SETF
MOV R0, #7EH
LCALL ADD1
MOV A, R3
CLR C
CJNE A, #24H, HOUU1
HOUU1: JC SEETNH1
LCALL CLR0 p>
JMP SEETNH1
SETF: Identificador de llamadas
JB P1.7, SETF
LCALL DDL
JNB P1. 7. Partir; presione brevemente esta tecla, presione prolongadamente para salir.
CLR ET0
CLR TR0
MOV 70H, # 00H el tiempo de configuración comienza desde 00 segundos.
MOV 71H, #00H
INC R5
Configuración 3: Pantalla LCALL
JB P1.7, Kit 3
SETMM: LCALL DDL
JB P1.7, Suite 4
MOV R0 # 77H
LCALL ADD1
MOV A, R3
CLR C
MMH No. 60H CJNE A
MMH: JC SETMM
LCALL CLR0
AJMP SETMM
Conjunto 4: INC R5
Ver 4: Pantalla LCALL
JB P1.7, ver 4
SETHH : LCALL DDL
JB P1.7, SETOUT1
MOV R0 # 79H
LCALL ADD1
MOV A, R3
CLR C
CJNE A, #24H, HOUU
HOUU: JC SETHH
LCALL CLR0
AJMP SETHH
SETOUT1: SETB ET0
SETB TR0; hora de inicio
Salida: MOV R5, # 00H borra el indicador intermitente del tipo de configuración.
CLR tr 1; apagar T1
CLR et 1; apagar T1 interrupción.
MOV 66H, #1
SETOUT2: visualización LCALL
JNB P1.7, configuración 2
LJMP START1
; -Retraso 1 segundo;
Número de pedido exprés: MOV 18H, No. 36
DDL0: MOV 17H, No. 239
DDL1: Pantalla LCALL
DJNZ 17H, DDL1
DJNZ 18H, DDL0
Remojar en agua para suavizar
- Interrumpir el programa;
INTT0: Empujar paquete ACC
Push PSW
CLR ET0
CLR TR0
MOV A, #0B7H
Añadir uno, TL0
MOV TL0, A
MOV A, #3CH
ADDC A, TH0
MOV TH0 A
SETB TR0
DJNZ R4, OUTT0 interrumpe las primeras 20 veces y la interrupción sale.
Dirección: MOV R4, # 14H; 20 interrupciones (1 segundo) para restablecer el valor inicial.
MOV R0, # 71H; apunta a la segunda unidad de sincronización (70-71H)
ACALL add 1; llama al programa add 1 (agrega 1 segundo de operación)
MOV A, R3; coloque los segundos datos en A (R3 es una combinación de 2 números decimales).
CLR C; borrar bandera de acarreo
CJNE A, #60H, ADDMM
ADDMM: JC sale 01; >ACALL CLR0 se borra durante 60 segundos o más.
MOV R0, #77H minutos de dirección y unidades de temporización (76H-77H)
Dirección de llamada 1
MOV A, R3
CLR C
CJNE A, #60H, ADDHH
ADDHH: JC salida 0
ACALL CLR0
MOV R0, #79H puntos a Unidad horaria (78H-79H)
Dirección de llamada 1
MOV A, R3
CLR C
24H, hora p> p>
Hora: JC OUTT0
ACALL CLR0
salida 0: MOV A, indicador de consulta 66H
CJNE A, #1, salida 01
MOV 72H, 76H Cuando sale la interrupción, los datos de las unidades de cronometraje de minutos y horas se mueven a las unidades de visualización correspondientes.
MOV 73H, 77H
MOV 74H, 78H
MOV 75H, 79H
salida 01: pila POP
ACC popular
SETB ET0; abrir T0
RETI; retorno de interrupción
- agregar 1 programa;
ADD1 : MOV A, @R0 coloca los datos de la unidad de temporización actual.
DEC R0 apunta a la dirección anterior
Intercambia A; intercambia los cuatro bits superiores y los cuatro bits inferiores de los datos
ORL A, @ R0 anterior El Los datos de la dirección se colocan en los cuatro bits inferiores de a.
Agregar uno, # 01H; uno más 1 operación
Ada; ajuste decimal
MOV R3, A; pasar al registro R3
ANL A, # 0FH cuatro bits altos se convierten en 0.
MOV @R0, A; devolver la unidad de dirección anterior
MOV A, R3; recuperar los datos temporales de R3
INC R0 apunta al actual unidad de dirección
Intercambia A; intercambia los cuatro bits altos y los cuatro bits bajos de los datos
ANL A, # 0FH los cuatro bits altos se convierten en 0.
MOV @R0, A; los datos se colocan en la unidad de dirección para truncarlos.
Remojar en agua para suavizarlo
CLR0: CLR C
CLR A; limpiar el acumulador
MOV @R0, A; ; borrar la dirección actual Celda
DEC R0 apunta a la dirección anterior
MOV @R0, A borrada por la celda de dirección anterior.
La subrutina RET devuelve
; -
INTT1: Empujar ACC
Pulsar PSW
MOV TL1, # 0B0H
MOV TH1, #3CH
DJNZ R2, intt 1 out; interrupción de salida hace 0,3 segundos (interrumpida 6 veces en 50 milisegundos)
MOV R2, # 06H recarga el valor inicial de 0,3 segundos de temporización.
CPL 02H Bandera intermitente invertida de 0,3 segundos.
JB 02H, parpadea 1; cuando el bit 02H es 1, la unidad de visualización "se apaga".
MOV A, R5
Países Bajos CJNE A, #01H
JMP NNN1
NL: CJNE A, #02H, NL1
LJMP NNN1
NL1: CJNE A, #03H, NL2
LJMP NLL
NL2: CJNE A, #04H, INTT1OUT
LJMP NLL
NLL: MOV 72H, 76H
MOV 73H, 77H
MOV 74H, 78H
MOV 75H, 79H
AJMP INTT1OUT
nnn 1: MOV 72H 7BH
MOV 73H, 7CH
MOV 74H, 7DH p> p>
MOV 75H, 7EH
intt 1 salida: POP PSW; restaurar escena
ACC popular
RETI; >
FLASH1: MOV A, R5
CJNE A, #01H, ML
LJMP MNN1
ML: CJNE A, #02H, ML1
LJMP MNN2
ML1: CJNE A, #03H, MN
LJMP MLL
MN: CJNE A, #04H, INTT1OUT
LJMP MHL
MLL: MOV 72H, 7AH
MOV 73H, 7AH no muestra la unidad de visualización (72-73H) de los subdatos.
MOV 74H, 78H
MOV 75H, 79H
AJMP INTT1OUT
MHL: MOV 72 horas, 76 horas
MOV 73H, 77H
MOV 74H, unidad de visualización 7AH (74-75H), los datos de hora no se mostrarán.
MOV 75H, 7AH
AJMP INTT1OUT
mnn 1: MOV 72H 7AH
Unidad de visualización MOV 73H, 7AH (72-73H ) no mostrará los datos de los minutos de la alarma.
MOV 74H, 7DH
MOV 75H, 7EH
AJMP INTT1OUT
MOV 72H, 7BH
MOV 73H, 7CH
MOV 74H, 7AH
MOV 75H, 7AH unidad de visualización (74-75H), los datos de la hora del despertador no se mostrarán.
AJMP INTT1OUT
;-display;
Pantalla: MOV DPTR, #mostrar datos
MOV A, 70H
MOVC A, @A DPTR
MOV·P3
CLR P1.0
no se proporciona lo contrario a menos que se especifique lo contrario
no se proporciona de otra manera (para) a menos que se especifique lo contrario
no se proporciona de otra manera (para) a menos que se especifique lo contrario
SETB P1.0
MOV A, 71H
MOVC A, @A DPTR
MOV·P3
CLR P1.1
no se proporciona lo contrario a menos que se especifique lo contrario
no se proporciona de otra manera (para) a menos que se especifique lo contrario
no se proporciona de otra manera (para) a menos que se especifique lo contrario
SETB P1.1
MOV A, 72H
p>MOVC A, @A DPTR
MOV·P3
CLR P1.2
no se proporciona de otro modo (para) a menos que se especifique lo contrario
no se proporciona de otro modo(para)a menos que se especifique lo contrario
La consulta del despertador se divide en diez partes.
CJNE A, 7CH, BEERE
BB: CLR P1.6
LCALL DDL
SETB P1.6
LCALL DDL
JNB P1.7, Factura
Factura: Retirado
Factura: SETB P1.6
MOV 68 Hora, #0
PANTALLA DE LLAMADA
JNB P1.7, BILL
JMP·BILL
DISDATA: DB 0C0H, 0F9H, 64H, 70H, 59H, 52H, 42H, 0F8H, 40H, 50H, 0FFH0123456789 en blanco
Fin