Sunteți pe pagina 1din 10

A/DCONPIC16F877

Sommario

INTRODUZIONE..................................................................................................................................................2

SELEZIONAREIBANCHI......................................................................................................................................2

ADCON0..............................................................................................................................................................4
ADCS1,ADCS0.................................................................................................................................................4
CH2,CH1ECH0...............................................................................................................................................5
GO/DONE........................................................................................................................................................6
ADON..............................................................................................................................................................7

ESEMPIO1..........................................................................................................................................................7

ADCON1..............................................................................................................................................................8
ADFM..............................................................................................................................................................8
PGF3,PGF1EPGF0.........................................................................................................................................9

ESEMPIO2........................................................................................................................................................10

PASSIPERESEGUIREUNACONVERSIONEA/D...............................................................................................10

INTRODUZIONE:

In commercio ci sono moltissimi PIC, che hanno caratteristiche diverse sia fisiche e sia nella sua
composizione interna. Il PIC in generale un microcontrollore e NON un microprocessore. La
sostanzialedifferenzacheilmicrocontrollorepossiedeperiferichecheilmicroprocessorenonha,
come ad esempio la RAM, la EEPROM ed altre. La
particolarit di alcuni PIC pi evoluti, quella di
possedere pi convertitori analogici digitali, con la
caratteristica di far corrispondere a un istante t
una combinazione binaria, formata da 10 Bit. La
quantit dei convertitori A/D varia da PIC a PIC; in
particolareilPIC16F877neha8.
Questo PIC composto principalmente da una
PORTA da 6 Bit, una PORTB, PORTC, PORTD da 8
Bit, e per finire una PORTE da 3 Bit. In sostanza
questomicrocontrolloreha33piedinichepossono
essere programmati come ingressi o uscite. Di
questipiedini,solo8hannolacaratteristicadipoter
convertire un segnale analogico in una
combinazionebinaria.
Con lintroduzione dei convertitori A/D nel
microcontrollore,sipossonoelaboraree/ogestireisegnaliprovenientidaitrasduttoriosensori,
comeadesempiountrasduttoreditemperatura,dipressione,ecosvia.Pertrasduttoresintende
unmezzocapacediconvertireunagrandezzafisicainunsegnaleelettrico.
OgniPICalsuointernostrutturatodiversamenteelacaratteristicadelPIC16F877diavere4
banchi(Bank)dimemoriadovevengonocollocatiidifferentiregistri.
I registri che servono per eseguire una conversione da analogico a digitale sono 4, ovvero
ADCON0,ADCON1,ADRESHeADRESLsuddivisirispettivamenteinduebanchi,Bank0eBank1.

SELEZIONAREIBANCHI:

PerselezionareidiversibanchidimemoriasidevedareunvalorealregistroSTATUS,inparticolar
modosonoiBitdenominatiRP1eRP0.
LatabellasottostantemostracomeconfigurareibitRP1eRP2contenutinelregistroSTATUSper
muoversineibanchi.

BANK
STATUS,RP1
STATUS,RP0
0
0
0
1
0
1
2
1
0
3
1
1

Questoprogrammamostrailprocedimentosucomecambiareivaribanchi.
;BANCO0
bcf
STATUS,RP0
bcf
STATUS,RP1

;BANCO1
bsf

STATUS,RP0
bcf
STATUS,RP1
;BANCO2
bcf
STATUS,RP0
bsf

STATUS,RP1

;BANCO3
bsf

STATUS,RP0
bsf

STATUS,RP1

LACONVERSIONE:

Per portare a termine con successo una conversione analogicadigitale, Il PIC 16F877 si serve di
quattroregistrisituatiinduebanchi(Bank0eBank1).Gliingressidisponibiliprogrammabiliperla
conversionesono8:RA0,RA1,RA2,RA3,RA5,RE0,RE1eRE2.Conunaconfigurazioneopportuna
si pu scegliere la tensione di riferimento chepu essereesternacon VREF (RA2) e +VREF (RA3),
oppure interna gestita dal microcontrollore dove compresa tra VSS (0V) per VREF e VDD (5V) per
+VREF.
I registri necessari per la conversione sono i seguenti ADCON0, ADRESH situati nel Bank 0 e
ADCON1,ADRESLnelBank1.IregistriADCON0eADCON1servonoperimpostareiconvertitori,
mentreADRESHeADRESLsonoriservatiperospitareilrisultatodelloperazione,chepuavvenire
dadestraoppuredasinistra.

1. REGISTROADCON0:

IlregistroADCON0compostoda8bit,situatonelBank0edschematizzatocoscomesegue
nellatabella.

R/W0
R/W0
R/W0
R/W0
R/W0
R/W0
U0
R/W0
ADCS1
ADCS0
CHS2
CHS1
CHS0

ADON
GO/
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0

ADCS1,ADCS0:

Ibit7e6(ADCS1eADCS0)sonoutilizzatiperimpostareunafrequenzadiclockperlaconversione.
La tabella sottostante mostra come devono essere opportunamente settati i registri ADCS1 e
ADCS0.

ADSC1
ADSC0
Frequenza
0
0
Fosc/2
0
1
Fosc/8
1
0
Fosc/32
1
1
Frc

Frc=ClockderivedfromtheinternalA/DmoduleRCoscillator
OscillatoreinternodellA/Dindipendentedalquarzo

;Fosc/2
movlw b00XXXXXX
movwf ADCON0
;Fosc/8
movlwb01XXXXXX
movwfADCON0
;Fosc/32
movlwb10XXXXXX
movwfADCON0
;Frc
movlwb11XXXXXX
movwfADCON0

LeXpossonoessere1o0,mediantelemimpostazionichespiegherpiavanti.

CHS2,CHS1eCHS0:

Ibit5,4e3(CHS2,CHS1eCHS0)lavoranoingruppo,formandocos3Bitcon8combinazioni,su
cuipossibileselezionareilnumerodeicanaliperpotereffettuarelaconversionedaAnalogicoa
Digitale.
LeportedisponibiliperlaconversioneanalogicadigitalesonoA0,A1,A2,A3,A5,E0,E1&E2.
Latabellanellapaginasuccessivamostracomesiselezionanoivaricanali.Varicordatochequeste
impostazionicambianoasecondodeltipodimicrocontrollorechesiutilizza.

CHS2
CHS1
CHS0
Canale
0
0
0
Ch0=AN0=RA0
0
0
1
Ch1=AN1=RA1
0
1
0
Ch2=AN2=RA2
0
1
1
Ch3=AN3=RA3
1
0
0
Ch4=AN4=RA5
1
0
1
Ch5=AN5=RE0
1
1
0
Ch6=AN6=RE1
1
1
1
Ch7=AN7=RE2

;CH0
movlwbXX000XXX
movwfADCON0
;CH1
movlwbXX001XXX
movwfADCON0
;CH2
movlwbXX010XXX
movwfADCON0
;CH3
movlwbXX011XXX
movwfADCON0
;CH4
movlwbXX100XXX
movwfADCON0
;CH5
movlwbXX101XXX
movwfADCON0
;CH6
movlwbXX110XXX
movwfADCON0
;CH7
movlwbXX111XXX
movwfADCON0

GO/
:

)utilizzatoperiniziareilprocessodellaconversione.Almomentodiiniziarela
IlBit2(GO/
conversione, esso deve essere posto a 1 e quando la conversione giunge al termine
automaticamentesiriponea0.
Periniziarelaconversionesiutilizzanoleseguentiistruzioni:

bsfADCON0,2
btfscADCON,2
goto$1
goto Prosegui
Prosegui

ADON:

Il Bit 0 (ADON) si deve porre a 1 per abilitare i convertitori analogici, mentre lo si pone a 0 per
disabilitarli.

;DisabilitagliA/D
movlwbXXXXXXX0
movwfADCON0

;AbilitagliA/D
movlwbXXXXXXX1
movwfADCON0

ESEMPIO1:
ProgrammaregliA/DinmodotalechelafrequenzadicolocksiaFosc/2,effettuarelaconversione
A/Dsulcanale1,abilitaregliA/Deiniziarelaconversione.

movlwb00001001
movwfADCON0

bsfADCON0,2
btfscADCON0,2
goto$1
gotoProsegui
Prosegui

2. ILREGISTROADCON1:

IlregistroADCON1formatoda8bit,situatonelBank1edschematizzatocoscomesegue
nellatabellasottostante.

U0
U0
R/W0
U0
R/W0
R/W0
R/W0
R/W0
ADFM

PCFG3
PCFG2
PCFG1
PCFG0
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0

ADFM:

IlBit7(ADFM)halafunzionediimpostareilrisultatodellaconversioneanalogicadigitale

Bank0
Bank1
ADFM
ADRESH
ADRESL
1
000000XX
XXXXXXXX
0
XXXXXXXX
XX000000

X=Valoreconvertitochepuessere1o0.

Se si sceglie che ADFM assuma un valore logico 1, il risultato della conversione viene posto da
destraversosinistra,ottenendounallineamentoversodestra.
SesiscegliecheADFMassumaunvalorelogico0,ilrisultatovienepostodasinistraversodestra,
ottenendounallineamentoversosinistra.
ConunallineamentodadestrailPICfornisceunaconversionea10biteN10sicalcolacos:

ConunallineamentodasinistrailPICfornisceunaconversionea8biteN10sicalcolacos:

PGF3,PGF2,PGF1ePGF0:

Ibit3,bit2,bit1,bit0(PGF3,PGF2,PGF1,PGF0)funzionanoingruppo,formando4bit,aventilo
scopo di configurare la PORTA e PORTE. Questa configurazione permette di selezionare la
tensionediriferimentoeilnumerodiconvertitoridautilizzare.Questaimpostazionepuvariare
daprogrammaaprogramma,asecondodellenecessit.
Latabellaseguentemostracomesettareisuddettibit.

PGF3,2, AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 +VREF VREF Ch/Vref
1,0
RE2
RE1
RE2
RA5 RA3 RA2 RA1 RA0
0000
A
A
A
A
A
A
A
A
VDD
VSS
8/0
0001
A
A
A
A
+VREF
A
A
A
RA3
VSS
7/1
0010
D
D
D
A
A
A
A
A
VDD
VSS
5/0
0011
D
D
D
A
+VREF
A
A
A
RA3
VSS
4/1
0100
D
D
D
D
A
D
A
A
VDD
VSS
3/0
0101
D
D
D
D
+VREF
D
A
A
RA3
VSS
2/1
011X
D
D
D
D
D
D
D
D
VDD
VSS
0/0
0111
COMBINAZIONENONUSATA
1000
A
A
A
A
+VREF VREF
A
A
RA3
RA2
6/2
1001
D
D
A
A
A
A
A
A
VDD
VSS
6/0
1010
D
D
A
A
+VREF
A
A
A
RA3
VSS
5/1
1011
D
D
A
A
+VREF VREF
A
A
RA3
RA2
4/2
1100
D
D
D
A
+VREF VREF
A
A
RA3
RA2
3/2
1101
D
D
D
D
+VREF VREF
A
A
RA3
RA2
2/2
1110
D
D
D
D
D
D
D
A
VDD
VSS
1/0
1111
D
D
D
D
+VREF VREF
D
A
RA3
RA2
1/2

A=Analogico;

D=Digitale;

VREF=Tensionediriferimentonegativa;
+VREF=Tensionediriferimentopositiva;

VDD=TensionedialimentazionedelPIC(5V);

VSS=TensionedialimentazionedelPIC
gnd(0);
RA3=Tensionediriferimentopositiva

RA2=Tensionediriferimentonegativa
regolatadallaPORTAsulbit4;

dallaPORTAsulbit3;

ESEMPIO2:

Programmare la PORTA in modo tale da avere 4 ingressi analogici digitali e un ingresso con
tensionediriferimentosidovrsettarecos:

movlwbX00000011
movwfADCON1

ScegliendodinonusaregliingressiA/D,usandolaPORTAcomesempliciingressiouscitesidovr
settarecos:
movlwbX000011X

movwfADCON1

LeXnelprogrammanonsiusano,pertantoilbit7assumeunvaloreinbaseallimpostazionechesi
dovutoadottare.LaXalbit0vasostituitacon0,inquantoRCFG0nonvieneusato.

N.B.QUESTEISTRUZIONIVANNOUSATESEMPRE,ANCORPRIMADIPROGRAMMARELEPORTE
COMEINGRESSIOUSCITE.

3. PASSIPERESEGUIREUNACONVERSIONEA/D:

1) ConfigurareADCON1:
Impostarelallineamento,lamodalitconcuisivuolevisualizzareilrisultato;
ConfigurarelaquantitdicanalidautilizzareeimpostarelaVREF;

2) ConfigurareADCON0:
Impostarelafrequenzadiclock;
DefinirealPICsuqualecanaleeffettuarelaconversione;
Accendereiconvertitori;

3) Avviarelaconversione;

4) AttenderecheilbitnominatoGO/
ritorniazero;

5) LeggereilrisultatodellaconversionedeiregistriADRESHeADRESL;

6) AzzerareADIFsenecessario;(QuestobitsitrovainPIR1edilnumero6)

7) Periniziareunanuovaconversione:
Sullostessocanaleripeteredalpasso3.
Suunaltrocanaleripeteredalpasso2.

10

S-ar putea să vă placă și