reloj programable con atmelh

9
RELOJ PROGRAMABLE Este es un proyecto bastante completo, con el que aprendemos a manejar los DISPLAY y también los TIMER e INTERRUPCIONES EXTERNAS del Microcontrolador. Muy útil para contadores o activar o desactivar algún 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. DIAGRAMA DEL CIRCUITO El circuito a continuación funciona con display ánodo común, como notaras la alimentación del display proviene del puerto 0 y el puerto 2 es el control de la activación de los display. En caso de que la luminosidad del mismo no sea lo suficientemente claro (fuerte) si no opaco, lo puedes arreglar usando un buffer en el puerto 0, un 74LS245 y un ULN2003 en el cátodo de los display, es decir el puerto 2 pero recuerda que este ULN2003 es inversor así que debes de modificar el programa, caso contrario de veras agregar un negador 74LS04 y luego el ULN2003, para habilitar los cátodos y así seleccionar los display

Upload: lcalcinacmc

Post on 17-Dec-2015

1 views

Category:

Documents


0 download

DESCRIPTION

PROYECTO PARA uC

TRANSCRIPT

  • RE L O J P RO G RA MA B L E

    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.

    D I A G RA MA DE L C I RC U I T O

    El circuito a continuacin funciona con display nodo comn, como notaras la alimentacin del display proviene del puerto 0 y el puerto 2 es el control de la activacin de los display. En caso de que la luminosidad del mismo no sea lo suficientemente claro (fuerte) si no opaco, lo puedes arreglar usando un buffer en el puerto 0, un 74LS245 y un ULN2003 en el ctodo de los display, es decir el puerto 2 pero recuerda que este ULN2003 es inversor as que debes de modificar el programa, caso contrario de veras agregar un negador 74LS04 y luego el ULN2003, para habilitar los ctodos y as seleccionar los display

  • ;*******************************************************************

    ; 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 72039662

    ;* 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 interrupcin 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

    MOV display,a

    clr P2.0

    LCALL DELAY

    setb P2.0

    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

    ;------- 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