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.
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í