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

 

Principal   Descargar   Enviar Correo

 


    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

Marcador :
Fallos (6):

 

 

1