Red de conocimiento informático - Computadora portátil - 51 microcontrolador para hacer reloj electrónico digital

51 microcontrolador para hacer reloj electrónico digital

El programa fuente es el siguiente: ORG 0000H; Entrada de inicio del programa

LJMP START

ORG 0003H Interrupción externa 0 entrada del programa de interrupción

<; p> RETI

ORG 000BH; Entrada del programa de interrupción del temporizador T0

LJMP INTT0; Salto a ejecución INTTO

ORG 0013H Entrada del programa de interrupción 1 externa

p>

RETI

ORG 001BH ; Entrada del programa de interrupción del temporizador T1

LJMP INTT1

ORG 0023H Dirección de entrada del programa de interrupción en serie

RETI

---------------Programa principal---------------------- ;

INICIO: MOV R0, #70H; 70 a R0, borre 70-7FH para mostrar la memoria

MOV R7, #0FH

CLEARDISP: MOV @ R0 , #00H; 0 almacena el número en R0 como la dirección en la memoria (70H)

INC R0

DJNZ R7, CLEARDISP

MOV 78H, # 2; la hora predeterminada es las 12:00, el despertador es las 5:00

MOV 79H, #1

MOV 74H, #2; evita que el tubo digital muestre 00 horas; al encender

MOV 75H, #1

MOV 66H, #1; cuando sale la interrupción, 66H es 1, los datos de la unidad de sincronización de minutos y horas se mueven a la memoria de video flag

MOV 68H, # 1; La alarma está activada de forma predeterminada después del encendido

MOV 7DH, #6; > MOV 7 canales, #3

MOV 69H, #0

MOV 7AH, #0AH; ponga los datos del "extintor"

MOV TMOD, #11H; establezca T0 y T1 como 16; temporizador de bits

MOV TL0, #0B0H; valor inicial de temporización de 50 MS (para temporización T0)

MOV TH0, #3CH

SETB EA;

SETB ET0; Permitir interrupción T0

SETB TR0; el temporizador T0 inicia el tiempo

MOV R4, #14H; el tiempo de 1 segundo usa el valor inicial (50MS ×20); )

INICIO1: PANTALLA LCALL; muestra subrutina

BIP DE LLAMADA; consulta de despertador

JNB P1.7, puerto SETTIME P1.7 es 0 Transferencia de hora; programa de ajuste de tiempo

JMP START1; volver a START1 cuando el puerto P1.7 es 1

------------------ ------Sistema de ajuste de hora del despertador--------------------------;

NFLAG: MOV A, 68H ;Establecer el estado del interruptor del despertador

CJNE A, #1, BEE68

MOV 68H, #0

JMP E6

BEE68 : MOV 68H, #1

E6: MOV 66H, #8; la salida de interrupción 66H no es 1 hora y minuto, los datos de la unidad de hora y minutos se mueven 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 START1

SETTIME: LCALL DDL

JB P1.7, NFLAG; el tiempo de pulsación de la tecla es inferior a 1 segundo, configure el estado del interruptor de alarma y verifique la hora de la alarma, no apague el tiempo de viaje para garantizar la precisión, ajuste de tiempo superior a 1 segundo

MOV TL1, #0B0H valor inicial de sincronización intermitente

MOV TH1, #3CH

MOV R2, #06H; ingrese el estado de tiempo de ajuste, asigne el valor inicial de tiempo intermitente

MOV 66H, #8; mantenga el tiempo de funcionamiento al ajustar el reloj de alarma, apague los datos de visualización del reloj

SETB ET1; permitir interrupción T1

SETB TR1; encender el temporizador T1

SET1: LCALL DISPLAY para evitar que no se muestre cuando se presiona la tecla

JNB P1.7, SET1; el puerto P1.7 es 0 y espera liberación de clave

MOV R5, #00H; indicador intermitente de tipo de configuración clara

SETN1: INC R5; ajuste de minutos

SET5: LCALL DISPLAY

JB P1.7, SET5

SEETN1: LCALL DDL cuando se presiona una tecla durante más de 1 segundo, el el tiempo sigue aumentando

(0,5 segundos más 1), estado de transposición de menos de 1 segundo

JB P1.7, SET6; consulta de liberación de tecla, transposición automática de liberación de tecla

MOV R0, #7CH

p>

LCALL ADD1

MOV A, R3

CLR C

CJNE A, #60H, HHN1

HHN1: JC SEETN1

LCALL CLR0

JMP SEETN1

SET6: INC R5; ajustar durante alarma

SEET6: LCALL DISPLAY

JB P1.7, SEET6

SEETNH1: 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

JMP SEETNH1

SETF: LCALL DISPLAY

JB P1.7, SETF

LCALL DDL

JNB P1.7, SETOUT, presione brevemente para ajustar, presione prolongadamente para salir

CLR ET0

CLR TR0

MOV

70H, #00H; el tiempo establecido comienza a partir de 00 segundos

MOV 71H, #00H

INC R5

SET3: LCALL DISPLAY

JB P1.7, SET3

SETMM: LCALL DDL

JB P1.7, SET4

MOV R0, #77H

LCALL ADD1

MOV A, R3

CLR C

CJNE A, #60H, MMH

MMH: JC SETMM

LCALL CLR0

AJMP SETMM

SET4: INC R5

SEET4: PANTALLA LCALL

JB P1, SEET4.

SETHH: LCALL DDL

JB P1.7, SETOUT1

MOV R0, #79H

LCALL ADD1

p >

MOV A, R3

CLR C

CJNE A, #24H, HOUU

HOUU: JC SETHH

LCALL CLR0

AJMP SETHH

SETOUT1: SETB ET0

SETB TR0 inicios de cronometraje

SETOUT: MOV R5,

#00H ; Borrar indicador de flash de tipo de configuración

CLR TR1 ; Apagar T1

CLR ET1 ; Apagar interrupción T1

MOV 66H, #1

SETOUT2: PANTALLA DE LLAMADA

JNB P1.7, SETOUT2

LJMP START1

------------ --- ------------Retraso 1 segundo-----------------------

DDL : MOV 18H, #36

DDL0: MOV 17H, #239

DDL1: PANTALLA LCALL

DJNZ 17H, DDL1

DJNZ 18H , DDL0

RET

----------------------------T0 interrumpir programa - -----------------------;

INTT0: EMPUJAR ACC; Embalaje

EMPUJAR PSW

CLR ET0

CLR TR0

MOV A, #0B7H

AÑADIR A, TL0

MOV TL0, A

p>

MOV A, #3CH

ADDC A, TH0

MOV TH0, A

SETB TR0

DJNZ R4 , OUTT0; Salir después de 20 interrupciones no han llegado

ADDSS: MOV R4, #14H; Reasignar valor inicial después de 20 interrupciones (1 segundo)

MOV R0, #71H ; apunta a la segunda unidad de cronometraje (70-71H)

ACALL ADD1; llama al programa agregar 1 (operación de agregar 1 segundo)

MOV A, R3; coloca los segundos datos en A (R3 es una combinación de números decimales de 2 dígitos)

CLR C; borrar bandera de transporte

CJNE A, #60H, ADDMM

ADDMM: JC OUTT01; salir en menos de 60 segundos

ACALL CLR0; si es igual o mayor que 60 segundos

MOV R0, #77H; apunta a la unidad de sincronización de minutos (76H-77H)

ACALL ADD1

MOV A, R3

CLR C

CJNE A, #60H, ADDHH

ADDHH: JC OUTT0

ACALL CLR0

MOV R0, #79H ; apunta a la unidad del contador de horas (78H-79H)

ACALL ADD1

MOV A, R3

CLR C

CJNE A, #24H, HORA

HORA: JC OUTT0

ACALL CLR0

OUTT0: MOV A, 66H; indicador de consulta

CJNE A, #1, OUTT01

MOV 72H, 76H; al salir, mueva los datos de la unidad de cronometraje de minutos y horas a la unidad de visualización correspondiente

MOV 73H, 77H

MOV 74H, 78H

MOV 75H, 79H

OUTT01: POP PSW pop

POP ACC

SETB ET0

;Abrir T0

RETI ;Interrumpir retorno

;--------------------------Agregar 1 Programa--------------------------;

ADD1: MOV A, @R0; obtiene los datos de la unidad de temporización actual A

DEC R0 ; Apunta a la dirección anterior

SWAP A ; Intercambia los cuatro bits superiores y los cuatro bits inferiores de los datos en A

ORL A; , @R0 ; Anterior Los datos de una dirección se colocan en los cuatro bits inferiores de A

ADD A, #01H;A más 1 operación

DA A

; p>

MOV R3, A ; Pasar al registro R3

ANL A, #0FH ; Cambiar los cuatro bits superiores a 0

MOV @R0, A ; unidad de dirección anterior

MOV A, R3; recuperar los datos temporales en R3

INC R0; apuntar a la unidad de dirección actual

SWAP A; y los cuatro bits bajos de los datos en A

ANL A, #0FH; Los cuatro bits altos cambian a 0

MOV @R0, A Los datos se colocan en la dirección actual; unidad

RET

CLR0: CLR C

CLR A ; Borrar acumulador

MOV @R0, A Borrar dirección actual unidad <; /p>

DEC R0 ; apunta a la dirección anterior

p>

MOV @R0, A la unidad de dirección anterior se borra a 0

>

RET; retorno de subrutina

; --------------------------Programa de parpadeo de tiempo---- - -----------------;

INTT1: EMPUJAR ACC

EMPUJAR PSW

MOV TL1, # 0B0H

MOV TH1, #3CH

DJNZ R2, INTT1OUT; interrupción de salida antes de 0,3 segundos (interrupción 6 veces en 50 MS)

MOV R2, #06H; el tiempo de 0,3 segundos con el valor inicial

CPL 02H; el tiempo de 0,3 segundos para invertir la bandera parpadeante

JB 02H, FLASH1 Cuando el bit 02H es 1, la unidad de visualización "gira"; apagado"

MOV A, R5

CJNE A, #01H, NL

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

NNN1: MOV 72H, 7BH

MOV 73H, 7CH

MOV 74H, 7DH

p>

MOV 75H, 7EH

INTT1OUT: POP PSW; sitio de restauración

POP ACC

RETI

;Interrumpir salida

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 unidad de visualización (72-73H), no será datos de puntos mostrados

MOV 74H, 78H

MOV 75H, 79H

AJMP INTT1OUT

MHL: MOV 72H, 76H

MOV 73H, 77H

MOV 74H, 7AH; unidad de visualización (74-75H), los datos de hora no se mostrarán

MOV 75H, 7AH

AJMP INTT1OUT

MNN1: MOV 72H, 7AH

MOV 73H, 7AH; unidad de visualización (72-73H), los datos de los minutos de la alarma no se mostrarán

MOV 74H, 7DH

MOV 75H, 7EH

AJMP INTT1OUT

MNN2: 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

; -------------------------mostrar------------------- ----- -------;

PANTALLA: MOV DPTR, #DIS

DATOS

MOV A, 70H

MOVC A, @A DPTR

MOV P3, A

CLR P1.0

NOP

NOP

NOP

SETB P1.0

MOV A, 71H

MOVC A, @A DPTR

MOV P3, A

CLR P1.1

NOP

NOP

NOP

SETB P1.1

MOV A, 72H

MOVC A, @A DPTR

MOV P3,A p>

CLR P1.2

NOP

NOP

NOP

SETB P1.2

MOV A, 73H

MOVC A, @A DPTR

MOV P3, A

CLR P1.3

NOP

p>

NOP

NOP

SETB P1.3

MOV A, 74H

MOVC A, @A DPTR

MOV P3, A

CLR P1.4

NOP

NOP

NOP

SETB P1.4

MOV A, 75H

MOVC A, @A DPTR

MOV P3,A

CLR P1 .5

NOP

NOP

NOP

SETB P1.5

RET

BEEP: MOV A, 68H; consultar bandera

CJNE A, #1, BEERE

MOV A, 78H; consultar el dígito de las unidades del despertador

CJNE A, 7DH, BEERE

MOV A, 79H Consulta las decenas del despertador

CJNE A, 7EH, BEERE

MOV A, 76H ; consultar el despertador dividido en unidades dígitos

CJNE A, 7BH, BEERE

MOV A, 77H consultar el despertador dividido en decenas dígitos

CJNE A; , 7CH, BEERE

BB: CLR P1.6

LCALL DDL

SETB P1.6

LCALL DDL

JNB P1.7, BEERR

BEERE: RET

BEERR: SETB P1.6

MOV 68H, #0

PANTALLA LCALL

JNB P1.7, BEERR

JMP BEERE

DISDATA: DB 0C0H, 0F9H, 64H, 70H, 59H, 52H, 42H, 0F8H , 40H, 50H, 0FFH; 0123456789 En blanco

FIN