|
|
Programador | Cartel Luminoso | Caja de Banco | |
CPU 6802 v2.0 | |||
Varios |
RELOJ PROGRAMABLE
Este es un proyecto bastante censillo con el que aprendemos a manejar los DISPLAY y también los TIMER e INTERRUPCIONES EXTERNAS del Microcontrolador
El cristal debe de ser si o si de 11.0592MHz ya que ha esa frecuencia a sido programado el microprocesador , existen como ves dos pulsadores uno para modificar la hora (0-23) la otra para modificar los minutos (1-60) no se olvide colocar un circuito de reset para que funcione bien
Puedes usar un At89c51 o un At89c52 es indiferente para este circuito cualquiera de los dos funciona, si necesitas un programador de microcontroladores para grabar este microcontrolador busca en esta pagina con el nombre de Programador Universal
CÓDIGO FUENTE
;******************************************************************* ; 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 ; a utilizar estan descritos en las definciones y el diagrama a continuacion ; descrito : ; el puerto cero deve tener una red de resistencias de 10k ; cristal de 11.0592mhz ; microcontrolador AT89c51/52/55 ; se utilizan las interrupciones externas cero y uno en flanco de bajada
; ******************************************************************* ; * Creado por Raul Alejandro Quispe Larico CELULAR 72097633 * ; * Reservados todos los derechos * ; *******************************************************************
;------- definicion de puertos display EQU P0
;-------interrupcion del reset
ORG 0000H AJMP programa_principal
;-------rutina para la interrupcion 0
ORG 0003H acall antireb acall cero RETI
;-------rutina de interrupcion del timer 0
ORG 000BH ACALL INTERRUPCION reti
;-------Rutina para la interrupción 1
ORG 0013H acall antireb acall uno reti
;------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 ; habilitadas por flabnco de bajada SETB P3.2 SETB P3.3 SETB EX0 SETB EX1 SETB IT1 SETB IT0
;------- bucle principal ; se muestra aqui constantemente los datos en los displays
PRINCIPAL:
MOV A,40H ADD A,#50H MOV R0,A mov a,@r0 cpl a MOV display,a setb p2.0 ; clr P2.0 LCALL DELAY ; setb P2.0 clr p2.0
MOV A,41H ADD A,#50H MOV R0,A mov a,@r0 cpl a MOV display,a ; clr P2.1 setb p2.1 LCALL DELAY ; setb P2.1 clr p2.1
MOV A,42H ADD A,#50H MOV R0,A mov a,@r0 cpl a MOV display,a ; clr P2.2 setb p2.2 LCALL DELAY ; setb P2.2 clr p2.2
MOV A,43H ADD A,#50H MOV R0,A mov a,@r0 cpl a MOV display,a ; clr P2.3 setb p2.3 LCALL DELAY ; setb P2.3 clr p2.3
MOV A,44H ADD A,#50H MOV R0,A mov a,@r0 cpl a MOV display,a ; clr P2.4 setb p2.4 LCALL DELAY ; setb P2.4 clr p2.4
MOV A,45H ADD A,#50H MOV R0,A mov a,@r0 cpl a MOV display,a ; clr P2.5 setb p2.5 LCALL DELAY ; setb P2.5 clr p2.5
AJMP PRINCIPAL
;------- interrupcion del timer 0
INTERRUPCION: INC 3FH MOV R1,3FH CJNE R1,#64H,SALIR CPL P2.7 ; led de velocidad de segundos 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 r1,44h cjne r1,#4,salir mov r1,45h cjne r1,#2,salir mov 44h,#0 mov 45h,#0 SALIR: 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 r1,44h cjne r1,#4,salirex1 mov r1,45h cjne r1,#2,salirex1 mov 44h,#0 mov 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
;------- DELAY del antirebotes antireb: MOV R3,#0AH Sal0: MOV R4,#0AH Sal1: MOV R5,#0aH Sal2: DJNZ R5,Sal2 DJNZ R4,SAL1 DJNZ R3,SAL0 RET ;------ DELAY para mostrar en los displays DELAY:
MOV R7,#0FAH MOV R6,#01H BUC: DJNZ R7,BUC MOV R7,#0FAH DJNZ R6,BUC NOP RET END
|
Aquí tienes el programa que va en el micro el RELOJ.HEX y el código fuente RELOJDIGITAL.ASM puedes descargarlo todo junto en un archivo comprimido
Bueno cualquier comentario a mi pagina estaré gustoso de responder tus preguntas o dudas, puedes enviarme un correo electrónico a [email protected] y si eres de La Paz Bolivia puedes llamarme por teléfono al 72097633 , será un gusto atenderte, te recomiendo también accedas a la pagina principal donde encontraras un listado de programas que apuesto serán de tu agrado, recuerda que puedes publicar anuncios o proyectos con todos tus datos totalmente GRATIS!!! , será para mi un gusto serte de utilidad...
Juega a el ahorcado