MM – Microprocessadores e Microcontroladores – Roteiro da Experiência 14
EXPERIÊNCIA 14 – USO DO CONVERSOR ANALÓGICO-DIGITAL
Parte I – Fundamentos Teóricos
Freqüentemente, um microcontrolador é utilizado para tratar sinais não digitais, isto é, que não necessariamente se mantêm em
apenas 2 níveis de tensão, mas que podem apresentar qualquer valor de tensão, dentro de uma faixa pré-estabelecida. Esses sinais,
analógicos, precisam ser convertidos em sinais digitais para que possam ser manipulados internamente pelo microcomputador.
A conversão de um sinal analógico em um sinal digital é feita pelo dispositivo denominado conversor analógico-digital. Alguns
microcontroladores da família do 8051 já possuem um conversor interno; não é o caso, porém, do microcontrolador 80C31 utilizado
no kit SDM9431. No entanto, o kit possui um conversor analógico-digital externo ao microcontrolador: o componente ADC0808.
Esse conversor possui 8 canais analógicos de entrada, o que significa que ele é capaz de converter até 8 sinais analógicos, cada um
deles entre 0V e 5V. O tempo em que a conversão é efetuada é de 100s, o que exige uma certa estabilidade do sinal sendo
convertido (sinais com variações de tensão muito rápidas podem não ser convertidos com precisão). Para cada canal de entrada do
conversor AD, existe um endereço para acesso, como se fosse de uma posição de memória externa, de acordo com a Tabela 1. A
escrita de um valor qualquer nesse endereço dispara a conversão. A leitura desse endereço fornece o valor digital obtido pela
conversão.
canal de entrada do endereço de acesso ao
canal de entrada do endereço de acesso ao
conversor AD
canal do conversor AD
conversor AD
canal do conversor AD
1
E000h
5
E004h
2
E001h
6
E005h
3
E002h
7
E006h
4
E003h
8
E007h
Tabela 1 – Endereços de acesso aos canais do conversor AD
A conclusão da conversão é indicada por um sinal digital gerado pelo converso (sinal EOC – “end of conversion”), que deve ser
lido no endereço E400h.
A entrada dos sinais analógicos, no kit, é feita através do conector disposto horizontalmente, no alto da placa. O canal 1
corresponde à entrada EA1; o canal 2 à entrada EA2, e assim por diante.
Analogamente ao display e ao teclado, o programa monitor do kit oferece uma sub-rotina para a conversão analógico-digital,
apresentada a seguir.
CONV_AD
endereço
parâmetro(s)
DPTR
145Fh
(endereço do canal de entrada do
conversor AD)
valor(es) de retorno
registrador(es) alterado(s)
ACC
ACC
(valor obtido pela conversão)
funcionamento: Dispara a conversão analógico-digital do sinal analógico existente no canal de entrada endereçado pelo
registrador DPTR, e, ao final da conversão, retorna o valor digital resultante no acumulador.
Parte II – Roteiro Experimental
Antes de ligar o kit, conecte a saída P4 à entrada EA1, ambos do conector horizontal superior (utilize uma chave de fenda para
essa operação). A saída P4 é um sinal entre 0V e 5V, gerado pelo resistor variável (“trimpot”) P4, localizado à direita desse conector.
Já a entrada EA1 dá acesso ao canal 1 do conversor AD.
Carregue, então, na memória RAM externa, o programa da Tabela 2. Você tanto pode digitar o seu código de máquina, com o kit
no modo teclado, ou editar o código-fonte no computador, fazer sua montagem, e transmitir o código de máquina obtido, serialmente.
Note que as diretivas de montagem (“pseudo-instruções”), como explicado anteriormente, não geram código de máquina.
pass
o
endereç
o
código de máquina
rótulo
$INCLUDE
CLR_DSP
AC_DSP
DSP_COM
CONV_AD
EA1
1
2
3
4
5
6
7
8
9
10
5000
5003
5006
5008
500B
500D
5010
5013
5016
5019
75
12
74
12
74
12
90
12
12
02
81
10
0C
10
02
10
E0
14
10
50
mnemônico e operandos
comentários
registradores do 8051
(REG51.INT)
endereço da sub-rotina CLR_DSP
EQU 10AAh
endereço da sub-rotina AC_DSP
EQU 10E7h
endereço da sub-rotina DSP_COM
EQU 109Ah
endereço da sub-rotina CONV_AD
EQU 145Fh
endereço do acesso ao canal 1 do conversor AD
EQU 0E000h
indica segmento de código
CSEG
endereço inicial do código
ORG 5000h
2F
MOV SP, #2Fh
SP  2Fh
AA
LCALL CLR_DSP
limpa o display
MOV A, #0Ch
desativa o cursor
9A
LCALL DSP_COM
REPETE:
MOV A, #02h
???
9A
LCALL DSP_COM
00
MOV DPTR, #EA1
DPTR aponta canal 1 do conversor AD
5F
LCALL CONV_AD
faz a conversão AD
E7
LCALL AC_DSP
apresenta o resultado da conversão AD
0B
LJMP REPETE
volta para fazer nova conversão
END
fim do programa
Tabela 2 – Programa que utiliza o conversor analógico-digital
MM – Microprocessadores e Microcontroladores – Roteiro da Experiência 14
Execute o programa, a partir do endereço 5000h.
Com uma pequena chave de fenda, altere a posição do “trimpot” P4, até que a tensão por ele gerada seja de 0V (verifique isso com
um multímetro). Nessas condições, o valor fornecido pelo display é de ______. Qual seria o valor esperado? ______.
Repita o procedimento anterior, agora para obter 5V na saída do “trimpot” P4, situação em que o display indica o valor ______,
enquanto o valor esperado seria ______.
Como o conversor AD é de 8 bits, ele pode gerar valores entre 0 e ______. Isso significa que, para mudar 1 bit no valor digital
gerado pelo conversor AD, é preciso haver, no sinal analógico, um incremento de:
5V
255
que resulta em ______V.
Portanto, calcule:
a) o valor que deve ser apresentado no display, quando a tensão for de 2,5V: ______
b) o valor que deve ter a tensão, quando o display apresenta o valor 50: ______
Verifique se seus cálculos estão corretos, alterando a posição do “trimpot” P4.
É possível que o conversor esteja descalibrado; se julgar que é o caso do seu kit, observe o procedimento de calibração
apresentado na página 2-6 do Manual de Manutenção do kit SDM9431.
EXPERIÊNCIA 14 – QUESTÕES ADICIONAIS
1) Para que servem os passos 5 e 6 do programa? O que aconteceria se esses passos fossem excluídos do programa?
2) O que precisaria ser alterado no programa, se o sinal P4 fosse conectado à entrada EA4, em vez de à entrada EA1?
3) No passo 1, o “stack pointer” (ponteiro da pilha) é iniciado com o valor 2Fh. Altere o mnemônico dessa instrução, sem causar
alteração no código de máquina, utilizando um “símbolo” que substitua o valor 2Fh. Indique, também, a “pseudo-instrução” que
precisa ser acrescida neste caso, no início do programa. Responda, também: qual a vantagem do uso do símbolo?
4) Suponha um sinal analógico que varie entre 0V e 5V. Escreva e teste no kit um programa que verifica se esse sinal está na faixa
entre 2V e 4V. Se estiver abaixo de 2V, devem ser acesos apenas os leds de 0 a 3. Se estiver acima de 4V, devem ser acesos
apenas os leds de 4 a 7. Se o sinal estiver na faixa prevista, todos os leds devem ser apagados.
Download

experiência 1 – reset + execução de programas no kit