El reloj electrónico con microcontrolador 51 ajusta la hora pulsando botones.
LJMP MAIN salta a la marca de ejecución MAIN.
ORG 000BH entrada de interrupción del temporizador T0
AJMP PTF0 salta a la etiqueta PTF0 para su ejecución.
Hora EQU 4AH; directiva de asignación
Ming EQU 4BH
SEC EQU 4CH
Amarillo claro EQU 4DH
************************************************ * ***********************************
;Programa principal
p >Principal: horas MOV, horas #00H, minutos, segundos y marcadores se borran.
MOV mínimo, #00H
MOV segundos, #00H
Ventilador MOV, #00H
MOV SP, #60H Establecer pila Puntero
MOV TH0, # valor inicial del temporizador 3CH
MOV TL0, #0B0H
MOV 40H, # 14H; establece el número de ciclos en 20 veces.
MOV TMOD, # 1; escribir TMOD
MOV IP, # 2; escribir IP
MOV IE, # 82H interrupción
SETB TR0; iniciar temporizador
BUCLE: visualización ACALL; programa de visualización de llamadas
JNB P3.0, ¿minutos; presione la tecla de tiempo escolar? No, pase a FEN.
ZX: Identificador de llamadas
JB P3.0, ZX
MOV uno, hora más 1
Agregar uno, # 1
Ada
CJNE A, #24H, ¿aumentará el horario a las 24:00? Sí, seguro
CLR A
BI: tiempo MOV
MOV SEC, # 00H segundos claro
FIN: JNB P3. , YY; ¿Se ha presionado la tecla de calibración? No, salte a YY.
ZC: Identificador de llamadas
ZC JB p 3.1
Familia MOV, más pequeña; agregue 1 por separado
Agregue uno, #1
ADA
CJNE A, #60H, CI; ¿aumentará a 60? Sí, seguro
CLR A
MOV·Min
MOV SEC, # 00H segundos claro
YY: bucle AJMP
p>
****************************************** ******* *******************************************
;Rutina de servicio de interrupción (abreviatura de rutina de servicio de interrupción)
PTF0: MOV TH0, #3CH recarga de valor inicial
MOV TL0, #0B0H
CLR TR0 Apagar el temporizador
CLR A; A Qing
DJNZ 40H, XX; ¿Ha transcurrido 1 segundo? No, salte a XX.
MOV 40H, # 14H; reescribir número de ciclo
MOV A, segunda unidad SEC más 1
Agregar uno, #1
Ada
Bolsa de Valores MOV
CJNE A, #60H, PTF0R son 60 segundos? No, pase a PTF0R.
JMIN: MOV SEC, #00H segundos para borrar
Familia MOV, mínimo agregar 1 en unidades.
Agregue uno, #1
ADA
MOV·Ming
CJNE A, #60H, ¿PTF0R es 60 minutos? No, pase a PTF0R.
MOV es el más pequeño, # 00H se liquida por separado
JHOUR: MOV SEC, # 00H se borra en segundos
MOV es una unidad de tiempo; se incrementa en 1
Agregue uno, #1
Ada
MOV durante una hora
CJNE A, #24H, será PTF0R ¿Llega a las 24 en punto? No, pase a PTF0R.
Tiempo MOV, # 00H borrado de tiempo
AJMP PTF0R salta a PTF0R
XX: MOV R7, 40h marca punto decimal, 1 y 0.
CJNE R7, #0AH, NEQ
EQ: NOP
AJMP PTF0R
NEQ: JC YEQ
Ventiladores MOV, #00H
AJMP PTF0R
YEQ: Ventiladores MOV, #0FFH
AJMP PTF0R
PTF0R: SETB TR0
Reti
;************************************ * ************************************************* ** ***
;Mostrar subrutina
Pantalla: MOV R5, BUFF genera números con y sin puntos según la marca.
CJNE R5, #00H, CJNE busca diferentes tablas basadas en etiquetas.
MOV DPTR, #TAB1
LJMP TYU
CVB: MOV·DPTR, #TAB
TYU: MOV A, visualización MIN La unidad de minutos.
ANL A, #0FH
MOVC A, @A+DPTR
MOV P0, A
MOV·P2
CLR P2.4
Retraso de llamada
Familia MOV, la más pequeña; muestra minutos de diez dígitos.
Intercambiar A
ANL A, #0FH
MOVC A, @A+DPTR
MOV P0, A
MOV·P2
CLR P2.5
Retraso de llamada
MOV uno, hora muestra la unidad del reloj.
ANL A, #0FH
MOVC A, @A+DPTR
MOV P0, A
MOV·P2
CLR P2.6
Retraso de llamada
MOV una hora; muestra las decenas del dígito del reloj
Intercambio A
ANL A, #0FH
MOVC A, @A+DPTR
MOV P0, A
MOV·P2
CLR P2 .7
Retraso de llamada
Remojado en agua para suavizar
TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH Código de fuente sin punto decimal
TAB1: DB 0BFH, 86H, 0DBH, 0CFH, 0E6H, 0EDH, 0FDH, 87H, 0FFH, 0EFH Código de fuente con punto decimal
; ** ************************************************* *** *************************************
; Subrutina de retardo
Latencia: MOV·R4, No. 20
Yan: R5, #10
SHI: DJNZ R5, SHI
Yan
Remojar en agua lo suaviza
Fin
El diseño de mi curso anterior sobre microcontroladores te proporcionó una referencia, pero fue solo un punto y un tiempo de ajuste. . .