Projeto 455 Contagem de um Clock Externo 3
COUNTS AN EXTERNAL CLOCK 3.
Este programa encontra a borda final dos pulsos de um clock externo e envia para a saída um sinal que avança a contagem no display LEDF de 7 segmentos no formato BCD.
Neste projeto 3 chaves são usadas com segue:
S1: Começa a avançar a contagem a partir do número em que estiver, contando até 9 e retornando a zero. Incrementa a contagem até 9 repetidamente.
S2: Começa a diminuir a contagem a partir do número em que estiver, contando “para traz” até 0 e retornando a 9. Decrementa a contagem até zero repetidamente.
S3: Reseta (limpa) o processamento.
Quando você “roda” o programa, nada é feito até que você pressione S1 ou S2. Se você pressiona S1 o programa atua como um contador que avança e exibe no display os números de 0 a 9 repetidamente. Pressione S3 e o programa retorna para uma posição de repouso. Se você pressiona S2, o programa atua como um contador decrescente e exibe no display os números 9 a 0 repetidamente. Quando você trocar o modo de ação, pressione S3 para resetar (limpar) o programa.
Descrições:
Vamos observar a figura com as ligações. As chaves S1 a S3 e as portas de entrada se correspondem da seguinte maneira:
O fato acima indica que se você pressionar S1, você pode reconhecer isto verificando se o dado de entrada contem os bits (0000 0010). Igualmente, o programa pode determinar de você pressionou S3 verificando os bits de entrada (0000 1000). Em #04, o programa tenta determinar se você pressionou S2 e, se pressionou, o fluxo do programa salta para #0C em #05.
Igualmente em #06, o programa determina se você pressionou S1, no caso de ter pressionado, o programa avança para #09. Se você nada pressionou, o programa retorna para o inicio e repete o processo.
Entendeu? Sim! Se algum sinal de clock externo chega durante o processamento deste pequeno “loop”, este será ignorado. Em outras palavras, S1 e S2 estão atuando como disparadores do processo.
Vamos seguir o programa até a linha #0C, através do fluxograma e dos códigos de programa.
Após a saída do acumulador estar em #10, a borda inicial é capturada nas linhas #15 a #17 e a borda final nas linhas #18 a #1A.
Em #1B, o registrador C (um flag) é verificado; o registrador C contém 01 se S2 foi pressionada, ou contém 00 se S1 foi pressionada.
Lembre-se agora que o programa chega da linha #0C e isto significa que você pressionou S2, a chave para fazer a contagem decrescente. Entretanto, o flag no registrador C contém 01 em #0D. Assim o fluxo do programa salta para #23 em #1B e começa a decrementar a contagem no registrador B em #24. Quando a contagem fica com um valor negativo, o fluxo do programa volta para #0C e reinicia o processo de contagem “para trás”.
Você pode agora tentar seguir você mesmo o processo da contagem crescente, iniciando em #09.
Link para YouTube: youtu.be/fyhTg7Fc9dE