Projeto 461 Temporizador de 15 Minutos com Display LED de 7 Segmentos.
15-MINUTE TIMER WITHI 7-SEGMENT DISPLAY.
Quando você “roda” este programa e pressiona a chave S1, ele exibe “F” no display de 7 segmentos e começa a acender e apagar LED1 alternadamente a cada segundo. Ele faz então uma contagem regressiva dos minutos que faltam até que chegue a zero “0”. Quando o tempo termina, o programa emite os sons “ré, fá, ré, fá...” de alerta por 10 vezes.
Descrições:
Vamos observar o fluxograma e os códigos de programa. Em #02 a #04 o programa tenta capturar o disparo de S1. Você agora já está familiarizado com esta técnica, não? Uma vez que S1 foi acionada, o fluxo do programa chega a #05 e obtém o endereço #3FH da tabela de dados para acendimento. Esses dados são obtidos pelo cálculo do endereço da tabela (3FH) mais o valor do contador de segundos no registrador D. Agora, o fluxo do programa obtém o valor 3C do contador de segundos em #07 e entra no processo de um “loop” curto começando em #08 e terminado em #0E. Dentro deste “loop” o programa simplesmente acende e apaga LED1 60 vezes; consome 1 minuto por ciclo. Se o processamento do “loop” termina, ele decrementa em #0F o valor do contador de minuto no registrador D.
O processamento deste “loop” se repete até que termine a tabela de dados de acendimento. Como esta tabela tem 16 entradas de dados (“F” até “0”) e o contador de “loop” é verificado para saber se o conteúdo é 30H (endereço de início da tabela) DEPOIS o contador é decrementado, o “loop” se completa exibindo “1” no display; portanto no total se passam 15 minutos.
FLUXOGRAMA:
Programa
00 MOV B , #00H ;
01 OUT B ;Apaga LEDs.
02 IN A ;Obtém entradas.
03 AND A , #01H ;
04 JZ L02H ;Aguarda S1 ser pressionada.
05 MOV C , #3FH ;Obtém endereço de início da tabela.
06 MOV A , @C ;Obtém dados para acendimento.
07 MOV D , #3CH ;Obtém contador de segundos por minuto (60).
08 OUT A ;Acende LEDs
09 TM1 #37H ;por 550 milissegundos.
0A OUT B ;Apaga LEDs
0B TM1 #19H ;por 250 milissegundos.
0C DEC D ;Decrementa o contador de segundos.
0E JMP A , #08H ;Se dentro do minuto, repete.
0F DEC C ;Decrementa endereço da tabela.
10 CMP C , #30 ;
11 JZ L13H ;Se é fim da tabela, vai para #13.
12 JMP L06H ;Se não é, repete.
13 MOV A , @C ;A = C = 30H.
14 OUT A ;Saída de (0011 0000).
15 MOV E , #0AH ;Valor do contador de bip.
16 BON #3H ;Bip “ré”
17 TM1 #02H ; por 20 milissegundos.
18 BOF ;
19 TM1 #04H ; Aguarda 40 milissegundos.
1A BON #6H ;Bip “fá”
1B TM1 #02H ;por 20 milissegundos.
1C BOF ;
1D TM1 #04H ;Aguarda 40 milissegundos.
1E DEC E ;Decrementa contador de bip.
1F JZ L00H ;Se é fim do contador de bip, retorna.
20 JMP L16H ;Se ainda está dentro do “loop” de bip, repete.
22 NOP ;
23 NOP ;
24 NOP ;
25 NOP ;
26 NOP ;
27 NOP ;
28 NOP ;
29 NOP ;
2A NOP ;
2B NOP ;
2C NOP ;
2D NOP ;
2D NOP ;
2E NOP ;
2F NOP ;
30 HEX #3FH ;Dado de acendimento “0”.
31 HEX #06H ;Dado de acendimento “1”.
32 HEX #5BH ;Dado de acendimento “2”.
33 HEX #4FH ;Dado de acendimento “3”.
34 HEX #66H ;Dado de acendimento “4”.
35 HEX #6DH ;Dado de acendimento “5”.
36 HEX #7DH ;Dado de acendimento “6”.
37 HEX #07H ;Dado de acendimento “7”.
38 HEX #7FH ;Dado de acendimento “8”.
39 HEX #6FH ;Dado de acendimento “9”.
3A HEX #77H ;Dado de acendimento “A”.
3B HEX #7CH ;Dado de acendimento “B”.
3C HEX #39H ;Dado de acendimento “C”.
3D HEX #5EH ;Dado de acendimento “D”.
3E HEX #79H ;Dado de acendimento “E”.
3F HEX #71H ;Dado de acendimento “F”.
Projetos de Temporizador:
Projeto 20 Temporizador Eletrônico
Projeto 061 Temporizador Decrescente
Projeto 210 Temporizador a Transistor
Projeto 217 Temporizador Digital I
Projeto 218 Temporizador Digital II
Projeto 239 Temporizador de Som
Projeto 358 Temporizador Digital 1 a 7 Minutos
Projeto 359 Temporizador Sonoro
Projeto 360 Temporizador Programavel com Contador Regressivo