Projeto 461 Temporizador de 15 Minutos com Display LED de 7 Segmentos.

04/06/2014 10:43

 

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

a m