Alarma temporizada con Z-80

Ideada por:

TSE Rafael Basualdo
TSE Gustavo Lucero
TSE Sergio Vigna

Descripción del circuito:

   Este proyecto se trata de una alarma temporizada, utilizando el microprocesador Z-80 de Zilog.
   El funcionamiento del circuito es muy sencillo. El conteo del tiempo se visualiza en los cuatro displays (minutos y segundos) en forma ascendente hasta el límite elegido previamente en el software. Al llegar el conteo a su valor máximo, se envía un pulso bajo al puerto PA0, el cual activará al driver de un relé en modo NA.
   Entonces se cierra el circuito de la bateria en serie con la bocina, la cual sonará por 7 segundos, para luego iniciar de nuevo el ciclo. También se puede reiniciar el ciclo utilizando el pulsador del circuito RESET.

Diagramas circuitales:

Lista de componentes:


Programa en lenguaje ensambaldor:

        ORG    0000H
        LD     A,80H
        OUT    (03H),A
        LD     BC,0000H
        LD     A,01H
        OUT    (00H),A
SALTO:  LD     A,C
        ADD    A,01H
        DAA
        LD     C,A
        LD     A,B
        ADC    A,00H
        DAA
        LD     B,A
        LD     D,0CH
ST1:    LD     E,FFH
ST2:    LD     A,C
        AND    0FH
        OR     E0H
        OUT    (01H),A
        LD     A,C
        RLCA
        RLCA
        RLCA
        RLCA
        AND    0FH
        OR     D0H
        OUT    (01H),A
        LD     A,C
        CP     60H
        JP     NZ,CONT1
        CALL   CERAR1
CONT1:  LD     A,B
        AND    0FH
        OR     B0H
        OUT    (01H),A
        LD     A,B
        RLCA
        RLCA
        RLCA
        RLCA
        AND    0FH
        OR     70H
        OUT    (01H),A
        LD     A,B
        CP     40H
        JP     NZ,CONT2
        CALL   CERAR2
        JP     SALTO
CONT2:  DEC    E
        LD     H,00H
        LD     H,00H
        JP     NZ,ST2
        DEC    D
        LD     H,00H
        JP     NZ,ST1
        JP     SALTO
CERAR1: LD     C,00H
        LD     A,B
        ADD    A,01H
        DAA
        LD     B,A
        RET
CERAR2: LD     B,00H
        LD     C,00H
        CALL   BOCINA
        RET
BOCINA: LD     A,00H
        OUT    (00H),A
        LD     A,06H
ST5:    LD     H,CFH
ST4:    LD     L,FFH
ST3:    DEC    L
        JP     NZ,ST3
        DEC    H
        JP     NZ,ST4
        DEC    A
        JP     NZ,ST5
        LD     A,01H
        OUT   (00H),A
        RET
        END

   Como verán es muy fácil modificar el programa para cambiar los límites del conteo, así como la duración del timbre, pues todos estos tiempos están establecidos mediante software timers.
   
MUY RARO:  Si es que te diste cuenta al ver los diagramas circuitales, ¡NO UTILIZAMOS RAM SIENDO QUE EL PROGRAMA ESTA LLENO DE SALTOS!. Este circuito no debería funcionar (contar) sin una RAM, sin embargo (y por error lo probamos sin RAM) nos funcionó a nosotros. Este es un gran misterio, todavía no pudimos encontrar una respuesta. Parece ser que nuestro microprocesador era raro... :) Será un caso único?
   Si tienes alguna idea de explicar ésto escríbeme aquí

Volver al home de Gustavo