Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Este es un proyecto bastante completo, con el que aprendemos a manejar los DISPLAY y tambin los TIMER
e
INTERRUPCIONES
EXTERNAS
del
Microcontrolador.
Muy til para contadores o activar o desactivar algn equipo con este reloj, o tal vez incluso programar y
activar una bomba (bueno es broma no te lo tomes en serio), puede servir como cronometro o
temporizador.
;*******************************************************************
;
RELOJ DIGITAL AJUSTABLE DE 6 DISPLAY
; se creo un programa capas de mostrar en 6 displays las horas minutos
; y segundos y de programas a traves de pulsadores los minutos y la hora
; mientras el segundero sigue corriendo la configuracion como los puertos
;------Programa principal
ORG 30h
programa_principal:
;guarda los numeros a mostrar en el display
MOV 50H,#3FH
MOV 51H,#06H
MOV 52H,#5BH
MOV 53H,#4FH
MOV 54H,#66H
MOV 55H,#6DH
MOV 56H,#7DH
MOV 57H,#07H
MOV 58H,#7FH
MOV 59H,#6FH
; el 3f es para controlar q sea un segundo se
; inicializa en cero
MOV 3FH,#00H
; puerto 2 para controlar que display esta prendido
; se prenden con cero
MOV P2,#0ffH
; memorias 40,41 son para los segundos
MOV 40H,#00H
MOV 41H,#00H
; memorias 42,43 son para los minutos
mov 42h,#00h
mov 43h,#00h
; memorias 44,45 son para las horas
mov 44h,#00h
mov 45h,#00h
; todos inician en cero
;------- configuracion del timer 0 para la interrupcion de 10ms
SETB EA
SETB ET0
MOV TMOD,#01H
MOV TH0,#0DBH
MOV TL0,#0FFH
SETB TR0
;------- configuracion de interrupciones externas
MOV A,41H
ADD A,#50H
MOV R0,A
mov a,@r0
MOV display,a
clr P2.1
LCALL DELAY
setb P2.1
MOV A,42H
ADD A,#50H
MOV R0,A
mov a,@r0
MOV display,a
clr P2.2
LCALL DELAY
setb P2.2
MOV A,43H
ADD A,#50H
MOV R0,A
mov a,@r0
MOV display,a
clr P2.3
LCALL DELAY
setb P2.3
MOV A,44H
ADD A,#50H
MOV R0,A
mov a,@r0
MOV display,a
clr P2.4
LCALL DELAY
setb P2.4
MOV A,45H
ADD A,#50H
MOV R0,A
mov a,@r0
MOV display,a
clr P2.5
LCALL DELAY
setb P2.5
AJMP PRINCIPAL
CPL P2.7
MOV 3FH,#00H
; segundos
INC 40H
MOV R1,40H
CJNE R1,#0AH,SALIR
MOV 40H,#00H
INC 41H
MOV R1,41H
CJNE R1,#06h,SALIR
MOV 41H,#00H
; minuto
INC 42H
MOV R1,42H
CJNE R1,#0AH,SALIR
MOV 42H,#00H
INC 43H
MOV R1,43H
CJNE R1,#06H,SALIR
MOV 43H,#00H
; hora
INC 44H
MOV R1,44H
CJNE R1,#0aH,verificar
MOV 44H,#00H
INC 45H
MOV R1,45H
CJNE R1,#03H,verificar
MOV 45H,#00H
ajmp salir
verificar:
mov
cjne
mov
cjne
mov
mov
SALIR:
r1,44h
r1,#4,salir
r1,45h
r1,#2,salir
44h,#0
45h,#0
MOV TH0,#0DBH
MOV TL0,#0FFH
ret
;------- interrupcion externa CERO
CERO:
INC 44H
MOV R1,44H
CJNE R1,#0aH,verificar
MOV 44H,#00H
INC 45H
MOV R1,45H
CJNE R1,#03H,verificarEX1
MOV 45H,#00H
ajmp salirex1
verificarEX1:
mov
cjne
mov
cjne
mov
mov
r1,44h
r1,#4,salirex1
r1,45h
r1,#2,salirex1
44h,#0
45h,#0
salirex1:
ret
;------- interrupcion externa UNO
UNO:
INC 42H
MOV R1,42H
CJNE R1,#0AH,SALIRex0
MOV 42H,#00H
INC 43H
MOV R1,43H
CJNE R1,#06H,SALIRex0
MOV 43H,#00H
salirex0:
ret
BUC:
MOV R7,#0FAH
MOV R6,#01H
DJNZ R7,BUC
MOV R7,#0FAH
DJNZ R6,BUC
NOP
RET
END