Vous êtes sur la page 1sur 13

Microprocessadores

Prof. Arthur Braga

Tpicos
n

O PIC16F877A

Mdulo A/D

Mdulo A/D
(PIC16F877A)
No h no PIC 16F628A

Mdulo
A/D
Mduloconversor
A/D PIC16F877A
PIC16F877

Mdulo
A/D
Mduloconversor
A/D PIC16F877A

Tenso a ser
convertida

Aproximaes
Sucessivas

Internamente h um circuito
Sample and Hold

Mdulo
A/D
Mduloconversor
A/D PIC16F877A
ADC

Mdulo
A/D
Mduloconversor
A/D PIC16F877A

O mdulo A/D possui 4 registradores:


ADRESH

ADRESL

Parte alta do resultado da converso

Parte baixa do resultado da converso

ADCON0 e ADCON1

Registradores de configurao do Mdulo A/D

Mdulo
A/D
Mduloconversor
A/D PIC16F877A

Mdulo
A/D
Mduloconversor
A/D PIC16F877A

Mdulo
A/D
Mduloconversor
A/D PIC16F877A

E O REGISTRADOR ADCON1 ?

Mdulo
A/D
Mduloconversor
A/D PIC16F877A

Mdulo
A/D
Mduloconversor
A/D PIC16F877A

Mdulo
A/D
Mduloconversor
A/D PIC16F877A

Mdulo
A/D
Mduloconversor
A/D PIC16F877A
Operao:

Ao final da converso:

O resultado estar nos registradores


ADRESH:ADRESL
O pino GO/DONE ser limpo (RESETADO)
E a flag da interrupo A/D (ADIF) setada.

Mdulo
A/D
Mduloconversor
A/D PIC16F877A
Primeiros passos:

Configure o mdulo A/D :

1.

Configurar os pinos (Analgicos / Digitais)


Selecionar o canal de entrada
Selecionar o clock para o mdulo
Ligar o mdulo

Configurar a Interrupo A/D done (se


desejado):

2.

Limpar o bit ADIF


Setar os bits ADIE, PEIE e GIE

Mdulo
A/D
Mduloconversor
A/D PIC16F877A
Primeiros passos:

Gerar o tempo requerido para aquisio.


Iniciar a converso:

3.
4.

Esperar o tempo para o mdulo terminar


a converso A/D:

5.

6.

Setar o bit GO/DONE (ADCON0)

Verificando se o bit GO/DONE foi limpo ou


Esperando a interrupo A/D (ADIF PIR1)

Ler o resultado nos reg.


(ADRESH:ADRESL)

Mdulo
A/D
Mduloconversor
A/D PIC16F877A
Primeiros passos:

Para uma nova converso:

7.

Voltar ao passo inicial


O tempo de converso por bit definido por
TAD
necessrio pelo menos 2TAD para iniciar
a prxima aquisio

Mdulo
A/D - TEMPO
Mduloconversor
A/D PIC16F877A

Mdulo
A/D - TEMPO
Mduloconversor
A/D PIC16F877A

Mdulo
A/D - TEMPO
Mduloconversor
A/D PIC16F877A

10

Mdulo
A/D REGs
Mduloconversor
A/D PIC16F877A

Mdulo
A/D
Mduloconversor
A/D PIC16F877A
PIC16F877

11

A/D
Mdulo A/D PIC16F877A

A/D
Exemplo
Mdulo
A/D PIC16F877A
Configurar o mdulo A/D para ler o canal 0.
...
BANKSEL TRISA
; Seleciona banco 1
MOVLW
0xFF
; Todos os pinos como entrada
MOVWF TRISA
;
CLRF
ADCON1
; Configura entradas A/D
BSF
ADCON1, ADFM ; e seleciona justificao a direita
BSF
PIE1, ADIE
; Habilita a interrupo A/D
BANKSEL ADCON0
; Seleciona banco 0
MOVLW
B11000001
; Clock RC, liga A/D, seleciona o
MOVWF ADCON0
; canal 0
BCF
PIR1, ADIF
; Limpa o bit interrupo A/D
BSF
INTCON, PEIE
; Habilita as interrupes perifricas
BSF
INTCON, GIE
; Habilita todas interrupes
; Garantir tempo suficiente para a aquisio do valor da entrada analgica
BSF
ADCON0, GO
; Inicia a converso A/D
; Esperar o tempo da converso
...

12

Bibliografia Bsica
n

Datasheet do PIC16F877A

Material da Disciplina
Plataforma SIGAA/UFC

13