Haga click para publicitar en Alipso.com
Buscando Secundarios  |  Universidades  |  Carreras  |  Test Orientación Vocacional  |  Medios  |  Profesores particulares  |  Institutos   | Campus
Material Monografias  |  Exámenes Secundarios  |  Exámenes Universitarios  |  Enlaces  |  Enviar material |
Diversión Postales  |  Humor  |  Descargas  |  Juegos Comunidad  Foros  | Institucional Publicite  |  En su sitio  | Contáctese
Cursos en Buenos Aires
 Cursos de Informática | Cursos de apoyo al CBC | Carreras y Cursos de Diseño, Comunicación, Arte y Fotografía

[Monografias, exámenes y sitios ]
Todas las palabras   Cualquier palabra   Frase Exacta
Página inicial Agregar a Favoritos  |  Nuevos Recursos

Imprimir apunte Recomendar a un amigo Recordarme el recurso Descargar como PDF

Más sobre este recurso:
Catalogado en base de datos como: Reloj digital con 39 alarmas programales.: DEFINICION DEL PROYECTO, CODIGO FUENTE, PARTES DEL PROGRAMA, INICIALIZACION DE DATOS, CONFIGURACION DE LA HORA Y ALARMAS, CONFIGURACION DE LOS TIMERS, ALGORITMO DEL RELOJ Y ACTIVACION DE LA ALARMA, CODIFICADOR DE DECIMAL A 7 SEGMENTOS, SELECCIÓN DE ENCEND
Agregado: 29 de AGOSTO de 2000 | Palabras: 4689 | Votar! | Sin Votos | Sin comentarios | Agregar Comentario
Categoría: Apuntes y Monografías > Electrónica >

Recomendamos

Material educativo de Alipso relacionado con Reloj digital con alarmas programales
  • LAS EXPERIENCIAS FORMATIVAS DE LA GENERACION DE 1837: LAS EXPERIENCIAS FORMATIVAS DE LA GENERACION DE 1837 Los orígenes contextuales y culturales de un grupo de intelectuales que iniciaron con su compromiso militante la construcción de la excepcionalidad favorable de la Argentina en Iberoamérica
  • Trabajo práctico de escritura.: Origen y significado de los siguiente proverbios: Quemar las naves, Quien se fue a Sevilla perdió su silla, más vale pájaro en mano que cien volando, lágrimas de cocodrilo. Hernán Cortés, cuando inició la conquista de México.
  • Apuntes y ejercicios de recursión: Un número tiene la propiedad AED1 si la cantidad de números primos menores que él es par. Defina una función que decida si un número natural cumple con esta propiedad. Números primos. Funciones. Suma de facotres primos.
  • Efecto Fotoeléctrico.: Efecto Fotoeléctrico, El átomo de Bohr , Hertz, Heinrich, Teoría cuántica, Planck, Max Karl Ernst Ludwig, Constante de Planck.


  • Enlaces externos relacionados con Reloj digital con alarmas programales
  • Francisco Pizarro Conquistador español del Perú(1476-1541)
  • Enfoque farmacologico del tratamiento del Insomnio, Ansiedad y Depresion para la Atencion Primaria de Salud
  • Revision Bibliografica: Aspectos esenciales de genetica


  •      Reloj Digital con 39 Alarmas Programables0001000100100100111110100100010001000100101001010100100101010010011000101001001010100010101010101001010101001010010101001010101001010100101010010101010101001010101010101000010001001001001111101001000100010001001000101001001010101010010101001001010100100100101010101010010101010010100101010010101010010101001010100101010101010010101010101010000100010010010011111010010001000100010010001010010010101010100101010010010101001001001010101010100101010100101001010100101010100101010010101001010101010100101010101010100001000100100100111110100100010001000100100010100100101010101001010100100101010010010010101010101001010101001010010101001010101001010100101010010101010101001010101010101000010001001001001111101001000100010001001000101001001010101010010101001001010100100100101010101010010101010010100101010010101010010101001010100101010101010010101010101010000100010010010011111010010001000100010010001010010010101010100101010010010101001001001010101010100101010100101001010100101010100101010010101001010101010100101010101010100001000100100100111110100100010001000100100010100100101010101001010100100101010010010010101010101001010101001010010101001010101001010100101010010101010101001010101010101000010001001001001111101001000100010

    RELOJ DIGITAL CON 39 ALARMAS PROGRAMABLES.

     

     

    DEFINICION DEL PROYECTO

     

    El proyecto consiste en diseñar un reloj digital capaz de almacenar 39 alarmas programables y mandar por el puerto 1 (bit 0) la señal de alarma. Gracias a unos displays de 7 segmentos conectados al puerto 2 podremos visualizar la hora actual y las alarmas programadas y a traves de unos leds podremos visualizar los distintos estados en el que se encuentra el microcontrolador. Para controlar las distintas funciones del reloj lo haremos a traves de unos pulsadores miniatura los cuales estaran conectados a 3 pines del puerto 1.

     

    CODIGO FUENTE

     

    USES    80537         

                    ORG      00H          

                    DB       63D,06D,91D,79D,102D,109D,125D,07D,255D,111D 

    HORA              EQU      30H

    MIN                 EQU      31H

    SEG                 EQU      28H 

    CONTADOR     EQU      29H

    ALARMA          EQU      32H

    MAXIMO          EQU      20H   

     

                      MOV R5,#11H

                      MOV  P1,R4

                      SETB P1.6 

                      MOV R0,#30H

    PETICION   ACALL DISPLAYS-MANDAR                 

                      JB 90H.1,BOTON1  

                      JB 90H.3,BOTON3                    

                      JB 90H.2,BOTON2  

                      AJMP PETICION

    BOTON1:   MOV MAXIMO,#24H              

                      INC  R3

                      ACALL DECIMAL             

                      JB P1.6,MAX_HORA

                      MOV MAXIMO,#60H

    MAX_HORA:         MOV A,R3                 

                      CJNE A,MAXIMO,SALTO24H

                      MOV R3,#00H                           

                      MOV A,#00H  

    SALTO24H MOV @R0,A           

                      AJMP PETICION  

    BOTON2:    CPL P1.6  

                      MOV R3,#00H

                      INC R0

                      CJNE @R0,#0FFH,PETICION

                      AJMP SETUP_OK                           

    BOTON3:   MOV A,R0

                      CLR C

                      RRC A

                      JC PETICION

    SETUP_OK MOV @R0,#0FFH

                      MOV  89H,#02H

                      MOV  88H,#10H

                      MOV  8CH,#0FEH

    INICIALIZAR:      MOV  R0,#30H

                      MOV  R2,#32H

                      MOV  CONTADOR, 89H

    PUESTA0   MOV  R6,#01H    

                      MOV  R7,#01H    

                      INC  SEG

                      MOV  A,SEG

                      CJNE A,#3CH,CUENTA  

                      MOV SEG,R4

                      AJMP MINUTOS

    CUENTA:    ACALL DISPLAYS-MANDAR

                      ACALL CHEQUEO

                      MOV     A,88H       

                      CJNE    A,#30H,CUENTA

                      MOV     88H,#10H    

                      DJNZ R7,CUENTA     

                      MOV  R7,#01H       

                      DJNZ R6,CUENTA       

                      AJMP PUESTA0                                                                   

    MINUTOS:  INC  MIN               

                      CLR  90H.0 

                      MOV  A, MIN

                      CJNE A,#60H, CONVERTIR_MIN            

                      AJMP HORAS

    CONVERTIR_MIN     MOV R3,MIN                 

                         ACALL DECIMAL

                         MOV MIN,R3                                   

                         MOV A,MIN

                         CJNE A,#60H, CUENTA

    HORAS:         MOV MIN,R4

                         INC  HORA

                         MOV  A, HORA

                         CJNE A,#24H, CONVERTIR_HORA               

                        MOV HORA,R4

                        AJMP INICIALIZAR               

    CONVERTIR_HORA    MOV R3,HORA                 

                        ACALL DECIMAL

                        MOV HORA,R3

                        MOV A,HORA

                        CJNE A,#24H, CUENTA             

                        AJMP INICIALIZAR

    ACTIVAR:      SETB 90H.0

                         INC  R2

                         INC  R2

                         MOV  A,R2

                         MOV  R0,A

                         CJNE @R0,#0FFH,FIN_ALARMAS

                        MOV  R2,#32H               

    FIN_ALARMAS:      MOV R0,#30H   

                        RET    

    CHEQUEO:  MOV  R0,#30H

                         MOV  A, R2

                        MOV  R1,A

    BUCLE:         MOV  A, @R0

                         XRL  A, @R1

                         JNZ  SALIR

                        DJNZ  CONTADOR, BUCLE1

                         ACALL ACTIVAR

    BUCLE1:       INC  R0

                         INC  R1

                        AJMP BUCLE

                         ACALL ACTIVAR

    SALIR:           MOV  R0,#30H

                         MOV  CONTADOR, #02H

                         RET            

    DECIMAL:     MOV A,#0AH

                        ANL A,R3       

                         CJNE A,#0AH, NO_TOCAR

                         MOV A,R3

                         ADD A,#06H

                         XCH A,R3

    NO_TOCAR    RET

    DISPLAYS      ACALL NPN 

                        MOV A,#0F0H       

                        ANL A,@R0

                         SWAP A

                         ACALL MANDAR

                         ACALL NPN

                         MOV A,#0FH

                         ANL A,@R0

                         ACALL MANDAR                  

                         RET

    MANDAR       MOVC A, @A+DPTR                                   

                         MOV  P2,A                

                         RET

    DISPLAYS-MANDAR:  ACALL DISPLAYS

                                     INC R0

                                     ACALL DISPLAYS 

                  DEC R0

                                     RET          

    NPN:                          MOV A,R5

                                     MOV P3,A             

                                      MOV P3,R4

                                      RR A

    SEGUIR                     MOV R5,A

                                      RET

                                     END

    .

     

    PARTES DEL PROGRAMA

     

    Todo el funcionamiento del reloj esta escrito en ensamblador, es decir, en lenguaje de bajo nivel con un limite de 256 bytes de memoria interna por chip (8052). En el programa se puede diferenciar 6 partes diferentes:

     

    -Inicializacion de datos.

    -Configuracion de las horas y minutos.

    -Configuracion de registros para emular un segundo(TIMERS).

    -Algoritmo del reloj y activacion dela alarma.

    -Codificador de hexadecimal a decimal.

    -Codificador de decimal a 7 segmentos.

     

    INICIALIZACION DE DATOS

        

            La funcion de esta parte es la de almacenar unos datos en la memoria para poner en marcha al reloj. Hay dos clases de datos en nuestro programa:

     

    -         Datos temporales.

    -         Constantes.

     

    Los datos temporales se utilizan para poner en marcha el reloj. Estos datos cambiaran continuamente según el algoritmo empleado. Un ejemplo de dato temporal puede ser el registro que contiene la direccion de la ultima alarma programada.

     

    Las constantes son datos que no van a cambiar en el transcurso del programa y que nos sirven de referencia. Un ejemplo de constantes es la tabla de datos correspondiente a la excitación de los displays de 7 segmentos.

     

    TABLA DE DATOS DE EXCITACIÓN DISPLAY 7 SEGMENTOS.

     

                    USES    80537         

                    ORG      00H          

                    DB       63D,06D,91D,79D,102D,109D,125D,07D,255D,111D

     

     

    ASIGNACIONES DE MEMORIA.

     

    HORA                EQU      30H à     HORA ACTUAL

    MIN                   EQU      31H à     MINUTO ACTUAL

    SEG                   EQU      28H à     SEGUNDOS TRANSCURRIDOS

    CONTADOR       EQU      29H à     ENCARGADO DE ACTIVAR LA ALARMA SI LOS 4

    BYTES COINCIDEN(30H CON 32H Y 31H CON                                                      3H, ETC)

    ALARMA             EQU      32H  à   HORA 1º ALARMA

    MAXIMO             EQU      20H  à   ENCARGADO DE QUE NO PONGAMOS + DE 24

                                                                      HORAS NI + DE 60 MINUTOS

     

     

    CONFIGURACION DE LA HORA Y ALARMAS

     

    Para configurar la hora y las alarmas lo hacemos mediante pulsadores en miniatura conectados al puerto 1, estos, al pulsarlos, enviaran tension a una determinada partilla del microcontrolador y ejecutara la parte del programa que le corresponde a ese boton. En nuestro proyecto disponemos de 3 botones:

     

    -BOTON1 à INCREMENTA EL VALOR DE LAS HORAS Y MINUTOS.

    -BOTON2 à GRABAR LOS DATOS EN MEMORIA.

    -BOTON3 à PUESTA EN MARCHA DEL RELOJ.

     

    PARTE DEL PROGRAMA CONTROLADA POR EL BOTON1.

     

    BOTON1:       MOV MAXIMO,#24H              

                         INC  R3

                         ACALL DECIMAL             

                         JB P1.6,MAX_HORA

                         MOV MAXIMO,#60H

    MAX_HORA:  MOV A,R3                 

                         CJNE A,MAXIMO,SALTO24H

                         MOV R3,#00H                           

                         MOV A,#00H  

    SALTO24H:   MOV @R0,A           

                         AJMP PETICION

     

    Lo primero que hacemos es llevar a MAXIMO el valor 24 que corresponde al maximo de horas que tiene un dia. Incrementamos R3 que contiene la veces que hemos pulsado el boton y llamamos a una subrutina llamada DECIMAL que lo que hace es que cuando el byte bajo de R3 sea 0AH ponga 00H ya que nuestro reloj va a visualizar los valores en numeracion decimal. Una vez convertido el dato, preguntamos si el bit 6 del puerto 1 esta puesto a 1 para poner el limite de 24 o 60, si esta puesto a uno entonces cuando hayamos pulsado 24 veces el pulsador, R3 pasara a valer 00H que corresponde a las doce de la noche. Si por el contrario, el bit 6 del puerto 1 esta a 0, estonces cargaremos en MAXIMO el valor 60 y esta vez R3 no parsara a 00H cuando llegue a 24 sino cuando llegue a 60. De esta manera nos aseguramos que nunca vamos a poner mas de 24 horas en el byte de las horas ni mas de 60 minutos en el byte de los minutos.

     

    Una vez que tengamos el dato en R3 lo graba en la posicion 30H (MOV @R0,A) para que una subrutina pueda llevar el contenido de 30H y poderlo visualizarlo en los displays.

     

    PARTE DEL PROGRAMA CONTROLADA POR EL BOTON2.

     

     BOTON2:  CPL P1.6 à    

                      MOV R3,#00H

                      INC R0

                      CJNE @R0,#0FFH,PETICION

                      AJMP SETUP_OK

     

    Una vez que pulsemos el boton 2, el bit  P1.6 se pondra a 0 lo que indicara que los proximos datos a introducir van a ser minutos. Borramos los datos anteriores contenidos en R3 e incrementamos R0 para después grabar en la direccion 31h los minutos de la hora actual cuando pulsemos el boton1. Tambien compara si la proxima direccion de memoria equivale a FFH, si es así, el programa entendera que se ha completado de introducir las 39 alarmas y saltara a la etiqueta AJMPM SETUP_OK.

     

    PARTE DEL PROGRAMA CONTROLADA POR EL BOTON3.

     

    BOTON3:    MOV A,R0

                      CLR C

                      RRC A

                      JC PETICION

     

    Al pulsar el boton 3 indicamos que hemos completado de introducir todos los datos. Una vez que pulsemos el boton 3, el programa comprobara si hemos grabado la horas y los minutos. Si hemos introducido solo horas y no los minutos y pulsamos el boton3, el programa seguira dentro de la parte de configuracion de los minutos y todavia no se habra puesto en marcha el reloj.

     

    Si por el contrario lo hemos configurado bien, las siguientes instrucciones a ejecutar son las siguientes:

     

     

     

     

    SETUP_OK          MOV @R0,#0FFH

                                           MOV  89H,#02H

                                           MOV  88H,#10H

                                          MOV  8CH,#0FEH