|
Microcontroler - Porturi
Portul se refera la un grup de pini ai unui microcontroler ce pot fi accesati simultan, sau la care putem seta combinatia dorita de zero-uri si unu-uri, sau de la care putem citi o stare existenta. Fizic, portul este un registru in interiorul unui microcontroler ce este conectat cu fire la pinii microcontrolerului. Porturile reprezinta conexiunea fizica a Unitatii de Procesare Centrala cu lumea exterioara. Microcontrolerul le foloseste pentru a monitoriza sau controla alte componente sau aparate. Datorita functionalitatii, unii pini au rol dublu ca RA4/TOCKI de exemplu, care este simultan al patrulea bit la portul A si o intrare externa pentru contorul liber (free-run). Selectia uneia din aceste doua functii ale pinului se face in unul din registrii configurationali. O ilustratie a acesteia este al cincilea bit T0CS in registrul OPTION. Selectand una din functii cealalta este dezactivata.
Toti pinii
portului pot fi definiti ca intrare sau iesire, conform cu nevoile unui
montaj ce este in dezvoltare. Pentru a defini un pin ca pin de intrare sau ca
pin de iesire, trebuie scrisa combinatia corecta de
zero-uri si unu-uri in registrul TRIS. Daca in locul potrivit este
scris '1' logic in registrul TRIS, acel pin este pin de intrare, iar
daca este valabil contrariul, este un pin de iesire. Fiecare
port are registrul lui TRIS. Astfel, portul A are TRISA la adresa 85h, iar
portul B are TRISB la adresa 86h.
PORTB
PORTB are 8 pini legati la el. Registrul adecvat pentru directia
datelor este TRISB la adresa 86h. Setarea unui bit in registrul TRISB
defineste pinul portului corespunzator ca pin de intrare, si
resetarea unui bit in registrul TRISB, defineste pinul portului
corespunzator ca pin de iesire. Fiecare pin
Patru pini ai portului PORTB, RB7:RB4 pot cauza o intrerupere, care se
intampla cand starea lor se schimba de la unu logic la zero logic
si invers. Numai pinii configurati ca intrare pot cauza aceasta
intrerupere sa se intample (daca fiecare pin RB7:RB4 este configurat
ca o iesire, nu va fi generata o intrerupere la schimbarea
starii). Aceasta optiune de intrerupere cu rezistorii 'pull-up'
fac mai usoara rezolvarea problemelor din practica, ca de
exemplu o tastatura matriceala. Daca randurile tastaturii sunt
conectate la acesti pini, fiecare apasare a unei clape va cauza o
intrerupere. Microcontrolerul va determina care clapa este apasata
in timp ce se proceseaza o intrerupere. Nu se recomanda sa
apelati la portul B in timp ce se proceseaza intreruperea.
Exemplul de mai
sus arata cum pinii 0, 1, 2, si 3 sunt declarati ca intrare,
si pinii 4, 5, 6 si 7 ca iesire.
PORTA
PORTA are 5 pini legati la el. Registrul corespunzator pentru
directia datelor este TRISA la adresa 85h. Ca si la portul B,
setarea unui bit in registrul TRISA defineste de asemenea pinul portului
corespunzator ca un pin de intrare, si resetarea unui bit in
registrul TRISA defineste pinul portului corespunzator ca pin de
iesire.
Al cincilea pin al portului A are functie duala. La acel pin se
afla de asemenea o intrare externa pentru timer-ul TMRO. Una din
aceste doua optiuni este aleasa prin setarea sau resetarea
bitului TOCS (TMR0 Clock Source Select bit-bit de Selectie a Sursei
Ceasului TMRO). Acest pin permite timer-ului TMRO sa-si creasca
starea fie de la oscilatorul intern fie prin impulsuri externe la pinul
RA4/T0CKI.
Exemplul arata cum pinii 0, 1, 2, 3, si 4 sunt declarati ca intrare iar 5, 6 si 7 ca pini de iesire.