Projeto 484 Medidor de Nível de Áudio com Capacidade de Retenção de Pico

10/10/2014 17:48

 

AUDIO LEVEL METER WITH PEAK-HOLDING CAPABILITY.

Neste projeto, o medidor de nível de áudio introduzido pelo Projeto 483 foi aperfeiçoado para que possa capturar e reter por alguns segundos o máximo nível de entrada. A capacidade de fazer isto é conveniente para verificação do nível máximo do sinal de som, por exemplo. Você pode trocar o período de retenção alterando o valor dos dados no registrador F.

Descrições:

O programa trabalha de um modo complicado. O fluxograma vai ajudar você a seguir os movimentos do fluxo de programa. Aqui você pode novamente observar o processamento de um “loop” interno; ele começa em #06 e termina na linha #16. Vamos seguir o fluxo do programa olhando para a codificação e para o fluxograma.
De #06 a #09, o programa produz a saída de dados da tensão de referência, aguarda 40 milissegundos, e tenta obter o dado de entrada, que é um único bit vindo do comparador. Se a Tensão de entrada para CI2A excede a tensão de referência, o comparador apresenta a saída de um sinal de nível alto, que é levado à porta de entrada IN1 do microprocessador (MPU). Este é um dado de 1 bit do comparador. Se não chega nenhum bit de dado, o fluxo do programa vai para #11 em #0B. Se o dado de 1 bit chega, o fluxo do programa avança para a linha #0C e os correntes dados da tensão de referência no registrador C são salvos para o acumulador A.
Então chega a linha #0D, onde os dados de entrada (registrador D) são comparados com os dados salvos (registrador E). Se os dados de entrada forem menores que os dados salvos, o fluxo do programa vai para #11. Entretanto, se forem maiores ou iguais aos dados salvos, o programa substitui os dados salvos pelos dados de entrada em #0F. Depois disso, o contador de retenção recebe o valor 5 na linha #10. E note que esses dois passos (#0F e #10) são executados somente uma vez dentro de um ciclo do contador de retenção! Vamos provar isso.
Vamos supor que o programa esteja no primeiro passo do primeiro ciclo do contador de retenção; entretanto, os dados de entrada (registrador D) são 08H (0000 1000) enquanto que os dados salvos (registrador E) são 00H (0000 0000). Esta situação é possível somente quando a tensão de entrada excede a tensão de referência. Agora o fluxo do programa chega a #0F, onde os dados salvos (registrados E) são substituídos pelos dados de entrada (registrador D). Devido a essa substituição de dados, esses dois passos nunca podem ser executados dentro do mesmo ciclo do contador de retenção. Se o fluxo do programa retorna para o mesmo código em #0D e #0E, os dados de entrada (registrador D) serão SEMPRE menores que os dados salvos (registrador E) já que os dados de entrada são diminuídos de1 bit deslocado para direita na linha #13, enquanto que os dados salvos não sofrem mudança. Lembre-se que com esses poucos passos, os maiores dados de entrada são capturados dentro do ciclo do contador de retenção.
Vamos continuar a acompanhar os códigos seguintes. Em #11, o programa armazena no acumulador A os dados salvos, como dados de Medição de Nível, então diminui os dados de entrada em #13 e os dados da tensão de referência em #15 deslocando cada registrador 1 bit para a direita.
O processamento do “loop” interno acima continua até que os dados da tensão de referência se tornem zero na linha #16. Uma vez que este ciclo tenha terminado, os dados de Medição de Nível no acumulador A vão para a saída e o contador de retenção é decrementado de 1 unidade. O programa continua a executar o processamento acima até que o contador de retenção se torne zero.

 

 

FLUXOGRAMA:

 

 

Veja também:

Projeto 234 Medidor de Nível de Voz

Projeto 483 Medidor de Nível de Áudio