Sunteți pe pagina 1din 6

Laborator 4. Digital I/O .

Porturi digitale
Cel mai simplu mod de comunicaie dintre C i exteriorul acestuia l reprezint porturile
digitale de intrare/ieire.
Aceste porturi au coresponden cu exteriorul prin pinii circuitului integrat. Deoarece
arhitectura PIC este pe 8 bii, porturile corespund unor registre interne care vor avea la rndul lor 8
bii.

Pini unui microcontroler sunt grupai n cinci porturi, marcate cu literele A, B, C, D i E. Toate
acestea au mai multe caracteristici n comun:

Din motive practice, pinii I/O au dou sau trei funcii. n cazul n care nici una din aceste
funcii nu este activat, implicit pinul respectiv va avea funcia de pin digital de intrare - ieire.
Fiecare port prezint cte un "satelit", reprezentat prin registrul TRIS (TRISA, TRISB, TRISC,
etc. ) care determin direcia semnalului prezent pe pinii portului(vezi figura 1).

Fig. 1 Port digital de intrare-ieire.


1

Toi pinii portului pot fi definii ca intrare sau ie


ieire, conform cu nevoile unui montaj ce este n
dezvoltare. Pentru a defini un pin ca pin de intrare sau ca pin de ieire,
ie ire, trebuie scris
scris combinaia
corect de zero-uri i unu-uri
uri n registrul TRIS. Dac
Dac n locul potrivit este scris "1" logic n registrul
TRIS, acel pin este pin de intrare, iar dac
dac este valabil contrariul, este un pin de ieire.
ire. Fiecare port are
registrul lui TRIS. Astfel, portul A are TRISA la adresa 85h, iar portul B are TRISB la adresa 86h.

PORTA
PORTA are 8 pini legaii la el. Registrul corespunztor
corespunz
pentru direcia
ia datelor este TRISA la adresa
85h. Ca ii la portul B, setarea unui bit n registrul TRISA definete
define te de asemenea pinul portului
corespunztor
tor ca un pin de intrare, i resetarea unui bit n registrul
istrul TRISA definete
define pinul portului
corespunztor ca pin de ieire. Pini portului A pot avea mai multe funcii.
func ii. De exemplu, al patrulea pin
al portului A are funcie dual.. La acel pin se afl
afl de asemenea o intrare extern pentru timer-ul
TMRO. Una din aceste dou opiuni
iuni este aleas
aleas prin setarea sau resetarea bitului TOCS (TMR0 Clock
Source Select bit-bit de Selecie
ie a Sursei Ceasului TMRO). Acest pin permite timer
timer-ului TMRO sa-i
creasc starea fie de la oscilatorul intern fie prin impulsuri externe la pinul RAX/T0CKI.
/T0CKI. Pinii 6 i 7
pot fi folosiii pentru utilizarea unui oscilator extern, etc.
TRISA = 0b00011111 ;
PORTA = 0b00000000;
Exemplul arat cum pinii 0, 1, 2, 3, i 4 sunt declarai
declara ca intrare iar 5, 6 ii 7 ca pini de ie
ieire. Pini de
ieire au configurat valoarea logica 0.

Portul A, pe lng funcia de port de intrare ieire poate fi folosit i ca intrare analogic. Datorit
acestei funcii duale nainte nceperi unei aplicai trebuie stabilit destinaia exact a pinilor portului.
Astfel pentru a utiliza portul ca poarta digital cea de-a doua funcionalitate trebuie dezactivat.
Registrul corespunztor funciei de intrare analogic care determin starea este registrul ANSEL. n
cazul microcontrolerului PIC 16f917, portul A dispune de 4 pini cu funcie de intrare analogic dup
cum urmeaz.

RA0 = AN0 (determinat de bii ANS0 a ANSEL registru)


RA1 = AN1 (determinat de bii ANS1 a ANSEL registru)
RA2 = AN2 (determinat de bii ANS2 a ANSEL registru)
RA3 = AN3 (determinat de bii ANS3 a ANSEL registru)

PORTB
PORTB are 8 pini legai la el. Registrul adecvat pentru direcia datelor este TRISB la adresa 86h.
Setarea unui bit n registrul TRISB definete pinul portului corespunztor ca pin de intrare, i resetarea
unui bit n registrul TRISB, definete pinul portului corespunztor ca pin de ieire. Fiecare pin al
portului PORTB are un rezistor slab intern pull-up (scoatere) (rezistor care definete o linie la unu
logic) care poate fi activat prin resetarea celui de-al aptelea bit RBPU n registrul OPTION (vezi
figura 2). Aceti rezistori 'pull-up' se nchid automat cnd pinul portului este configurat ca o ieire.
Cnd pornete microcontrolerul, 'pull-up'-ii sunt dezactivai. Pini portului PORTB pot cauza o
ntrerupere, care se ntmpl cnd starea lor se schimb de la unu logic la zero logic i invers. Numai
pinii configurai ca intrare pot cauza aceast ntrerupere s se ntmple (dac fiecare pin este
configurat ca o ieire, nu va fi generat o ntrerupere la schimbarea strii). Aceast opiune de
ntrerupere cu rezistorii 'pull-up' fac mai uoar rezolvarea problemelor din practic, ca de exemplu o
tastatur matriceal. Dac rndurile tastaturii sunt conectate la aceti pini, fiecare apsare a unei clape
va cauza o ntrerupere. Microcontrolerul va determina care clap este apsat n timp ce se proceseaz
o ntrerupere. Nu se recomand s apelai la portul B n timp ce se proceseaz ntreruperea.

Fig. 2 Descriere resistor pull - up

Asemntor portului A, portul B prezint i el intrri analogice. Aceste intrri analogice pot fi
gestionate prin intermediul registrului ANSELH. Numrul de intrri analogice pot varia n funcie de
microcontrolerul folosit putndu-se ajunge chiar i la 16 intrri analogice. Registrul ANSELH dirijeaz
partea superioare (AN8 AN15) a intrrilor analogice.
Toi pinii portului B au conectat cte o rezisten de pull -up ce i face ideali pentru
conectarea la butoane, switch-uri i optocuploare. Pentru conectarea acestor rezistoare la pinii
microcontrolerului, este necesar ca bii registrului WPUB s fie stabilii pe valoarea logic 1.

Scurt prezentare a registrelor ANSEL i ANSELH.

PORTC
PORTC are 8 pini legai la el. Registrul adecvat pentru direcia datelor este TRISC la adresa
87h. Setarea unui bit n registrul TRISC definete pinul portului corespunztor ca pin de intrare, i
resetarea unui bit n registrul TRISC, definete pinul portului corespunztor ca pin de ieire.

PORTD
PORTD este un port bidirecional de 8 bii utilizat cu precdere n aplicai generale. Setarea
unui bit n registrul TRISD definete pinul portului corespunztor ca pin de intrare, i resetarea unui bit
n registrul TRISD, definete pinul portului corespunztor ca pin de ieire.

PORTE
PORTE este un port bidirecional de 4 bii utilizat cu precdere n aplicai generale. Setarea
unui bit n registrul TRISE definete pinul portului corespunztor ca pin de intrare, i resetarea unui bit
n registrul TRISE, definete pinul portului corespunztor ca pin de ieire. Trei dintre pinii acestui port
pot fi configurai ca pini de intrare analogic. Configurarea lor se va realiza prin intermediul registrului
ANSEL dup cum urmeaz:

RE0 = AN5 (determinat de bii ANS5 a ANSELregister)


RE1 = AN6 (determinat de bii ANS6 a ANSELregister)
RE2 = AN7 (determinat de bii ANS7 a ANSELregister)

Rezumat.
Cu siguran , n calitate de inginer automatist, v vei lovi de necesitatea realizrii unor aplicaii
practice pentru un anumit domeniu. Dat fiind faptul ca microcontrolerul este una dintre cele mai fiabile
soluii v subliniez pe scurt cteva sfaturi pe care s le urmai n momentul cnd proiectai o aplicaie
embedded:

La proiectarea unui dispozitiv, selectai portul prin care dorii ca microcontrolerul s comunice
cu mediul exterior. Dac folosii doar intrrile / ieirile digitale este de ajuns s selectai portul
dorit. Dac folosii unele dintre intrrile analogice, selectai unele dintre porturile care suport
funcia de intrare analogic (AN0-AN13);
Fiecare port al microcontrolerului poate fi configurat fie de intrare fie de ieire. Astfel
Registrele TRISA, TRISB, TRISC, TRISD i TRISE vor stabili direcia semnalelor ,iar
valoarea logic prezent pe portul respectiv va fi stabilit de registrele PORTA, PORTB,
PORTC, PORTD i PORTE;
Dac aplicaia solicit o serie de semnale citite din exterior, se pot folosi n acest sens o serie de
comutatoare ca surs de semnal de intrare. Microcontrolerul ofer rezistoare interne de pul
up activate de ctre starea bitului RBPU a registrului OPTION_REG, i configurabile prin
intermediul registrului WPUB;
Dac se folosesc intrri analogice, este necesar, la nceputul programului, setarea biilor
corespunztori din registrele ANSEL i ANSELH.

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