Sunteți pe pagina 1din 20

SISTEME CU MICROPROCESOARE.

MICROCONTROLERUL PIC18F4455
99


6. PORTURI DE INTRARE-IEIRE



Cuprins
Introducere
Obiective
6.1 STRUCTURA GENERAL A PORTURILOR
6.1.1 Preliminarii
6.1.2 Implementarea hardware a porturilor
6.1.3 Iniializarea porturilor
6.2 CONECTAREA CIRCUITELOR EXTERNE
6.3 APLICAII
6.3.1 Implementarea unui program de test al
butoanelor
6.3.2 Implementarea unui protocol Handshake
6.3.3 Comanda unui afiaj cu 7 segmente i 4 digii
Concluzii
ntrebri de autoevaluare
Termeni eseniali











PORTURI DE INTRARE-IEIRE
100

Introducere
Microcontrolerele nu i-ar justifica existena dac nu ar oferi posibilitatea
de a modifica sau monitoriza, prin intermediul programului implementat,
starea pinilor conectai la diferite circuite din lumea exterioar. Aceti pini
de intrare-ieire sunt de obicei dispui n grupuri avnd dimensiunea
maxim egal cu dimensiunea magistralei interne de date. La familia de
microcontrolere PIC18 porturile paralele de intrare-ieire permit ca un
numr de pn la 8 bii de date externi s poat fi citii sau scrii simultan.
Numrul total al acestor linii de date paralele difer de la un
microcontroler la altul, n cazul PIC18F4455 fiind disponibili 34 de pini
de intrare-ieire din totalul de 40 de pini ai capsulei.


Obiective
Dup parcurgerea acestui capitol cursantul va trebui:
- s neleag principiul de funcionare al porturilor paralele de
intrare-ieire ale microcontrolerului;
- s poat configura porturile;
- s neleag structura porturilor de intrare-ieire;
- s poat realiza aplicaii care utilizeaz porturile de intrare-ieire.


6.1 STRUCTURA GENERAL A PORTURILOR

6.1.1 Preliminarii

Porturile de intrare-ieire ale unui microcontroler reprezint legtura cu lumea
exterioar prin care acesta poate s trimit sau s primeasc date.
Microcontrolerul PIC18F4455 (Fig. 6.1) are 5 porturi de intrare-ieire (notate cu A, B,
C, D i E) fiecare pin al acestora fiind multiplexat cu mai multe funcionaliti. De exemplu,
pinul 2 al microcontrolerului (RA0/AN0) poate fi pin de intrare-ieire digital, bitul 0 al
portului A (RA0) sau pin de intrare analogic, reprezentnd canalul 0 al convertorului analog
digital (AN0). n general, dac se folosete un periferic atunci pinii corespunztori acestuia nu
pot fi utilizai ca pini de intrare-ieire digitali.

SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
101

Fig. 6.1. Pinii i porturile microcontrolerului PIC18F4455 conform foii de catalog [15]

Numrul de bii disponibil n porturile microcontrolerului PIC18F4455 i denumirea
pinilor asociai se prezint n Tabelul 6.1
Tabel 6.1.Porturile microcontrolerului PIC18F4455 i pinii asociai
Portul Nr bii disponibili Denumire pini
PORTA 7 RA[6:0]
PORTB 8 RB[7:0]
PORTC 7 RC[7:4], RC[2:0]
PORTD 8 RD[7:0]
PORTE 4 RE[3:0]

n mod normal porturile de intrare-ieire ar trebui s se comporte asemenea unor
regitri al cror coninut poate fi vizibil i accesat din lumea exterioar. Totui, porturile de
intrare-ieire sunt puin diferite fa de regitrii interni. De exemplu, fiecare bit al portului
paralel poate fi configurat individual pentru a reflecta starea fizic a pinului sau pentru a pune
pe 1 sau 0 logic pinul asociat. Altfel spus, fiecare pin poate fi configurat ca pin de intrare, care
poate fi citit sau pin de ieire care poate fi scris.
Astfel, fiecare port n={A,B,C,D,E} are trei regitri folosii pentru configurarea i
manipularea lui:
- registrul TRISn (de configurare a direciei portului)
- registrul PORTn (de citire a strii pinilor microcontrolerului)
- registrul LATn (de scriere a datelor pe port)
Fiecare bit al portului are echivalent un bit n registrul TRIS prin care se poate
configura direcia individual a pinului asociat. Astfel, un bit egal cu 0 n registrul TRIS va
seta pinul corespunztor pe ieire, iar un bit egal cu 1 va seta pinul corespunztor pe intrare.
PORTURI DE INTRARE-IEIRE
102

Exemplu
S considerm o situaie n care pinul RA0 i pinii RB[7:0] sunt ieiri, iar
restul de pini ai portului A sunt intrri. Urmtoarea subrutin realizeaz
configurarea direciei pinilor utilizai.

Initializare
MOVLW b1111110 ;RA0 ieire
MOVWF TRISA ;RA[1:7] intrri
CLRF TRISB ;RB[0:7] ieiri
RETURN

Orice resetare a microcontrolerului va conduce la setarea tuturor biilor din regitrii
TRIS. Altfel spus, n urma resetrii toi pinii microcontrolerului vor fi pini de intrare. Aceast
configuraie se poate explica prin faptul c n situaia n care un pin ar fi de ieire nainte ca
programul s-l iniializeze cu aceast stare, atunci acest pin ar putea iei din starea de reset
avnd o tensiune neprevzut care ar putea aciona diferite circuite conectate la
microcontroler ntr-un mod nedorit.
Odat realizat configurarea direciei porturilor utilizate, se poate efectua citirea sau
scrierea datelor ntr-o manier similar accesului la regitrii interni, realizndu-se n acest fel
interaciunea cu mediul exterior. Astfel,
- pentru a monitoriza / citi starea oricrui pin configurat ca intrare se pot folosi
instruciunile BTFSC sau BTFSS. De exemplu, BTFSS PORTB,1 sare peste
instruciunea urmtoare dac pinul RB1 este n stare logic 1. Pentru a citi simultan
starea mai multor pini se poate copia coninutul registrului PORT n WREG (ex. MOVF
PORTB, W) sau ntr-un registru de uz general pentru procesri suplimentare (MOVFF
PORTB, 0x00)
- pentru a modifica / scrie starea oricrui pin configurat ca ieire se pot utiliza
instruciunile pe bit BCF, BSF sau BTG. De exemplu, BCF LATA, 2 va aduce starea
pinului RA2 pe 0 logic. De asemenea, exist posibilitatea de a modifica simultan
starea mai multor pini prin copierea coninutului unui registru oarecare n registrul
LAT corespunztor. De exemplu, dac toi pinii portului B sunt pini de ieire atunci
instruciunile urmtoare: MOVLW b1111000: MOVWF LATB vor seta pinii
RB[7:4] i vor reseta pinii RB[3:0].





SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
103
6.1.2 Implementarea hardware a porturilor

Pentru a nelege modul de funcionare al porturilor de intrare-ieire vom analiza n
continuare implementarea hardware a acestora. n Fig. 6.2 se prezint structura simplificat a
unui singur bit al unui port de intrare-ieire.[15] n figur se evideniaz trei componente
majore care intervin n structura portului: bistabilul D pentru date, bistabilul TRIS care
comand circuitul tristate (2) i latch-ul de intrare.


Fig. 6.2. Implementarea hardware a unei linii a unui port de intrare-ieire

Bistabilul D reprezint celula elementar de memorie. Scrierea datelor pe port va
ncrca bistabilul D cu data disponibil pe magistral. Acesta va menine datele ct timp
microcontrolerul este alimentat sau pn la suprascrierea acestora cu date noi.
De exemplu:
MOVLW b11110000
MOVWF LATB
va ncrca cele patru bistabile superioare ale registrului cu 1, iar cele patru bistabile inferioare
cu 0. ncrcarea acestor bistabile cu date se va realiza indiferent de modul n care este
configurat pinul, ca intrare sau ieire. Pentru ca datele din bistabil s se regseasc pe pin,
PORTURI DE INTRARE-IEIRE
104
circuitul tristate (2) aflat la ieirea bistabilului trebuie activat. n aceast situaie (Fig. 6.3-b),
ieirea bistabilului este conectat direct la lumea exterioar prin intermediul pinului, care
acum este pin de ieire. Pentru a activa circuitul tristate (2), bistabilul D TRIS trebuie
ncrcat n prealabil cu valoarea 0.
Citirea strii pinului se poate realiza prin intermediul latch-ului de date inferior a crui
ieire reflect starea fizic a pinului. La execuia unei comenzi de citire a portului, intrarea EN
a acestui latch este 0, bitul citit este meninut la ieirea circuitului tristate (4) pe durata citirii.
Aceast citire nu este influenat de direcia pinului (Fig. 6.3-a,c).
Din Fig. 6.2 se poate observa c bitul TRIS poate fi scris i citit. Chiar dac citirea
registrului TRIS este aparent nejustificat s considerm cazul n care utilizatorul dorete s
configureze direcia unui pin. Pentru acest lucru se poate utiliza instruciunea:
BCF TRISB,2 ;terge bitul 2 al registrului TRISB
Instruciunea BCF (Bit Clear File) este un exemplu de instruciune care realizeaz operaiile
de citire-modificare-sciere, prin care starea registrului TRISB este mai nti citit n UCP,
apoi modificat i n cele din urm scris napoi n TRISB (vezi capitolul 1, fazele
instruciunilor). Pentru a putea realiza acest lucru, UCP trebuie s aib posibilitatea de a
accesa registrul TRIS att pentru scriere ct i pentru citire. Acest lucru este valabil i pentru
alte instruciuni. De fapt, majoritatea instruciunilor (ex. MOVWF) realizeaz un microciclu de
citire n Q2, naintea operaiei efective de scriere din Q4.
Pentru a evita problemele ce pot aprea din citirea strii fizice a pinilor,
microcontrolerele din seria PIC18 au introdus un circuit tristate suplimentar (1), asociat
bistabilului D de date, care permite UCP s realizeze direct citirea biilor de date ca o
alternativ la citirea strii pinilor. Astfel, scrierea datelor n registrul LATn este echivalent cu
scrierea datelor n registrul PORTn, iar citirea LATn va furniza datele stocate n registrul de
date, care de cele mai multe ori vor fi identice cu datele privind starea fizica a pinilor.
Deoarece pinii unui port pot fi configurai ca intrri, ieiri sau combinaii de intrri i
ieiri, este interesant de tiut ce se ntmpl atunci cnd se citesc sau se scriu regitrii
implicai. De exemplu, ce s-ar ntmpla dac se realizeaz din program citirea unui port de
ieire? Cele patru situaii prezentate n Fig. 6.3 sunt descrise n continuare:
a. Citirea unui port de intrare (TRIS = 1)
n aceast situaie circuitul tristate (2) este dezactivat, iar starea bistabilului de date
rmne neschimbat. De exemplu, instruciunea MOVF PORTB, W citete starea
pinilor portului B n registrul de lucru WREG.

SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
105
b. Scrierea la un port de ieire (TRIS = 0)
n acest caz circuitul tristate (2) este activat, iar coninutul bistabilului de date este
modificat ca urmare a operaiei de scriere. Ieirea bistabilului D este reflectat i n
starea pinului de ieire. De exemplu, dac toi pinii portului B sunt configurai ca
ieiri, atunci MOVLW 0x01: MOVWF LATB va aduce pinul RB0 n stare logic 1,
ceilali pini RB[7:1] fiind n stare logic 0
c. Citirea unui port de ieire (TRIS = 0)
n acest caz circuitul tristate (2) este activat, iar pinul de ieire reflect starea ieirii
bistabilului de date. Prin citire se va realiza copierea efectiv a valorii de la ieirea
bistabilului de date n UCP.
d. Scrierea la un port de intrare (TRIS = 1)
n aceast situaie se realizeaz modificarea coninutului bistabilului de date. Totui,
datele din bistabil nu vor fi puse pe pin pn la schimbarea direciei pinului.[6]


Fig. 6.3. Citirea i scrierea unui bit al unui port conectat la un pin de intrare sau de ieire



PORTURI DE INTRARE-IEIRE
106
6.1.3 Iniializarea porturilor

nainte de a utiliza porturile pentru operaii de intrare-ieire acestea trebuie iniializate.
Iniializarea presupune urmtoarele etape:
- tergerea regitrilor de date PORTn i LATn pentru a elimina datele reziduale care
s-ar putea gsi acolo pentru porturile A, B, C, D i E;
- Configurarea pinilor ca pini digitali de intrare-ieire de uz general n registrul
ADCON1 al convertorului Analog/Digital pentru porturile A, B i E. Pinii acestor
porturi sunt multiplexai cu convertorul Analog/Digital
- Oprirea comparatoarelor prin configurarea registrului CMCON pentru portul A;
- Configurarea direciei pinilor, prin intermediul regitrilor TRISn pentru porturile
A, B, C, D i E.
Cele patru etape de iniializare de mai sus sunt puse n eviden n exemplul urmtor


Exemplu
Se consider o seciune de cod care realizeaz iniializarea portului A.

CLRF PORTA ;tergerea reg. PORTA

CLRF LATA ;tergerea reg. LATA

MOVLW 0x0F ;Configurare convertor A/D
MOVWF ADCON1 ;pt. pini I/O digitali

MOVLW 07h ;Oprire comparatoare
MOVWF CMCON
MOVLW B11111100 ;pinii RA[7:2] intrari
MOVWF TRISA ;i RA[1:0] ieiri



6.2 CONECTAREA CIRCUITELOR EXTERNE

Pentru conectarea butoanelor, a LED-uri, dar i a altor componente externe la un
microcontroler, trebuie respectate cu strictee limitele curenilor de intrare i ieire ale
microcontrolerului (Tabelul 6.2) precum i cele asociate componentelor externe.
Nerespectarea limitelor impuse poate conduce la arderea pinilor sau chiar a porturilor precum
i la arderea componentelor externe.



SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
107
Tabel 6.2. Caracteristici electrice ale porturilor [8,15]
Caracteristica Valoare [mA]
Curentul maxim de ieire pe Vss 300
Curentul maxim de intrare pe Vdd 250
Curentul maxim de intrare pe pinul oricrui port 25
Curentul maxim de ieire pe pinul oricrui port 25
Curentul maxim de intrare pe toate porturile 200
Curentul maxim de ieire pe toate porturile 200

n cele ce urmeaz se prezint cteva exemple de conectare a unor circuite externe la
microcontroler.

a. Conectarea butoanelor

b. Conectarea LED-urilor

Fig. 6.4. Conectarea butoanelor (a ntreruptoarelor) i a LED-urilor cu consum mai mic de 20mA

Pentru conectarea unor LED-uri la microcontroler trebuie respectate specificaiile
electrice ale acestora. Cteva dintre caracteristicile LED-urilor sunt prezentate n Tabelul 6.3.

Tabel 6.3. Caracteristicile principale ale LED-urilor [8]
Culoare Lungimea de und
coresp. intensitii
luminoase maxime
[nm]
Materialul de
baz

Tensiunea de
deschidere la
10mA
[V]
Intensitatea
luminous la
10mA
[m cd]
Infrarou 900 Galiu-Arseniu 1.3-1.5
Rou 655 Galiu-Arseniu-Fosfor 1.6-1.8 0.4-1.0
Rou deschis 635 Galiu-Arseniu-Fosfor 2.0-2.2 2.0-4.0
Galben 583 Galiu-Arseniu-Fosfor 2.0-2.2 1.0-3.0
Verde 565 Galiu-Fosfor 2.2-2.4 0.5-3.0
Albastru 490 Galiu-Fosfor 3.0-5.0 0.5-2.0

Dup cum se vede i din Fig. 6.4-b nu se recomand conectarea direct a LED-urilor
la microcontroler, ci prin intermediul unei rezistene. Dac se iau n considerare datele din
PORTURI DE INTRARE-IEIRE
108
Tabelul 6.3, pentru un LED avnd tensiunea de deschidere de 2V la un curent de 10mA,
valoarea rezistenei se calculeaz n felul urmtor: =

300
10 10
2 5
3
.
Pentru conectarea unor LED-uri cu un consum mai mare de 20mA se recomand
utilizarea schemei din Fig. 6.5.


Fig. 6.5. Conectarea LED-urilor cu consum mai mare de 20mA

Numeroase aplicaii pentru microcontrolere necesit activarea sau dezactivarea unor
circuite de putere. Acest lucru se realizeaz de multe ori cu ajutorul releelor. Pentru a realiza
comanda unui releu cu ajutorul unui microcontroler se poate utiliza schema din Fig. 6.6.


Fig. 6.6. Schema de comand a unui releu

n ciuda utilizrii tot mai frecvente a afiajelor cu cristale lichide, afiajele cu apte
segmente nu au disprut din practic acestea avnd nc multiple utilizri mai ales n aplicaii
care necesit afiarea unor valori numerice, aceste module fiind foarte eficiente n condiii de
iluminare sczut sau atunci cnd se doresc afiaje de dimensiuni mari. Afiajele cu apte
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
109
segmente sunt n esen afiaje cu LED-uri, fiecare segment fiind reprezentat de un LED, i
sunt disponibile n dou variante de implementare: cu anod comun, respectiv cu catod comun.
Dispunerea segmentelor i cele dou variante de implementare se prezint n Fig. 6.7.


Fig. 6.7. Afiaj cu apte segmente

n cazul utilizrii unor afiaje multiplexate cu apte segmente cu patru digii se pot
utiliza urmtoarele scheme de conectare la microcontroler (Fig. 6.8 anod comun, Fig.6.9
catod comun). Liniile de date (a,b,c,..g,dp) fiind comune pentru toate cele patru afiaje, prin
multiplexare se asigur comanda succesiv a fiecrui afiaj. Practic, la un moment dat doar un
afiaj este comandat. Prin baleerea de la un afiaj la altul cu o frecven suficient de mare se
creaz impresia c toate cele patru cifre sunt afiate simultan. n paragraful 6.3.3 se va
prezenta un exemplu de aplicaie care realizeaz comanda acestui tip de afiaje.


Fig.6.8. Conectarea unui afiaj multiplexat de 7 segmente cu anod comun de 4 digii


PORTURI DE INTRARE-IEIRE
110

Fig. 6.9. Conectarea unui afiaj multiplexat de 7 segmente cu catod comun de 4 digii


6.3 APLICAII

6.3.1 Implementarea unui program de test al butoanelor

n cele ce urmeaz se va prezenta schema electric de conectare (Fig. 6.10), diagrama
de activitate (Fig. 6.11) i implementarea unui simplu program care testeaz apsarea a dou
butoane, conectate pe pinii RD0 i RD1. Dac butoanele sunt apsate, se vor aprinde LED-
urile corespunztoare (pentru butonul de pe RD0 se va aprinde LED-ul conectat pe RD2, iar
pentru butonul de pe RD1 se va aprinde LED-ul conectat pe pinul RD3).[8]


Fig. 6.10. Schema electric de conectare

SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
111
Conform montajului din Fig. 6.10, la apsarea unui buton se va citi pe port valorea 0
logic, iar atunci cnd butonul este eliberat se citete valoarea 1 logic. LED-urile se vor aprinde
prin setarea bitului corespunztor.


Fig. 6.11. Diagrama de activiate

LIST P=18F4455 ;definire tip procesor
#include <P18F4455.INC> ;definire variabile procesor

ORG 0x800 ;Adresa de reset

;Programul principal

Initializare_port:
CLRF PORTD ;tergere buffere
CLRF LATD

MOVLW b'00000011' ;configurare direcie pini
MOVWF TRISD ;RD0, RD1 intrri
;RD2, RD3 ieiri

Test_buton1:
BTFSS PORTD, 0 ;test buton legat pe pinul RD0
GOTO Buton1_apasat
GOTO Buton1_eliberat




PORTURI DE INTRARE-IEIRE
112
Test_buton2:
BTFSS PORTD, 1 ;test buton legat pe pinul RD1
GOTO Buton2_apasat
GOTO Buton2_eliberat


Buton1_apasat:
BSF LATD, 2 ;aprinde LED conectat la RD2
GOTO Test_buton2


Buton1_eliberat:
BCF LATD, 2 ;stinge LED conectat la RD2
GOTO Test_buton2


Buton2_apasat:
BSF LATD, 3 ;aprinde LED conectat la RD3
GOTO Test_buton1


Buton2_eliberat:
BCF LATD, 3 ;stinge LED conectat la RD3
GOTO Test_buton1

END ;sfritul programului


6.3.2 Implementarea unui protocol Handshake

S considerm cazul unei aplicaii n care un echipament periferic extern solicit
microcontrolerului un octet de date din registrul 0x2C, care va fi transferat prin intermediul
portului B, de fiecare dat cnd aduce linia de intrare RD7 n stare logic 0. Semnalul provenit
de la periferic este denumit ready i indic disponibilitatea sa de a primi datele de la
microcontroler. Cnd microcontrolerul rspunde, acesta pune datele pe portul B apoi d un
impuls pe pinul RD6, denumit strobe , prin care informeaz perifericul despre prezena datelor
pe liniile paralele, urmnd ca acesta s le citeasc. La resetare pinii portului B trebuie adui n
stare logic 0, iar pinul RD6 n stare logic 1.
Un asemenea protocol (Fig. 6.12) poart denumirea de handshake i permite
realizarea unei comunicaii fr pierdere de date ntre dou echipamente ne-sincrone.
n Fig. 6.13 se prezint scheama de conectare a microcontrolerului cu echipamentul
periferic (ex. imprimant).
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
113

Fig. 6.12. Protocolul handshake


Fig. 6.13. Schema electric de conectare

Programul care implementeaz protocolul de comunicaie se prezint n continuare.
Dup etapa de iniializare a porturilor se va iniializa i starea liniilor conform specificaiilor.
Astfel, liniile de date corespunztoare pinilor RB[7:0] vor fi aduse n stare logic 0 (toi
biii de date sunt 0), iar linia RD7 va fi adus n stare logic 1.
Dup iniializare se testeaz starea pinului RD7. La apariia unui 0 logic pe acest pin,
datele din registrul de la adresa 0x2C se copiaz pe port prin intermediul registrului de lucru,
apoi pinul RD6 este adus n stare logic 0. Pentru a genera impulsul se utilizeaz o
instruciune NOP nainte de a pune un 1 logic pe acest pin. Se utilizeaz instruciunea NOP,
deoarece n exemplul considerat nu se specific durata impulsului. n alte situaii, NOP poate
fi nlocuit cu apelul unei subrutine care implementeaz o ntrziere.
Starea pinului RD7 este testat din nou, n ateptarea unui 1 logic care s indice citirea
datelor de ctre periferic i implicit ncheierea transferului.


PORTURI DE INTRARE-IEIRE
114
LIST P=18F4455 ;definire tip procesor
#include <P18F4455.INC> ;definire variabile procesor

Date EQU 0x2C

ORG 0x800 ;Adresa de reset

;Programul principal

Initializare_port:
CLRF PORTB ;tergere buffere
CLRF LATB
CLRF PORTD
CLRF LATD

MOVLW 0x0F ;Configurare convertor A/D
MOVWF ADCON1 ;pt. pini I/O digitali

MOVLW 07h ;Oprire comparatoare
MOVWF CMCON

BCF TRISD, 6 ;pin RD6 ieire (strobe)
BSF TRISD, 7 ;pin RD7 intrare (ready)
CLRF TRISB ;pini RB[7:0] ieire

BSF LATD, 6 ;stare iniial pini
CLRF LATB

;testare pin RA7 (ready) n ateptarea unui 0 logic
Test_Ready_0:
BTFSC PORTD, 7
GOTO Test_Ready_0

MOVFF Date, LATB ;se pun datele pe linie

BCF LATD, 6 ;impuls pe RD6
NOP
BSF LATD, 6

;testare pin RA7 (ready) n ateptarea unui 1 logic
Test_Ready_1:
BTFSS PORTD, 7
GOTO Test_Ready_1
GOTO Test_Ready_0






SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
115
6.3.3 Comanda unui afiaj cu 7 segmente i 4 digii

Se consider montajul din Fig. 6.9 n care la microcontroler este conectat un afiaj
multiplexat cu 7 segmente cu catod comun de 4 digii. Liniile de date ale afiajului (a,b,...,g,
dp) sunt conectate la portul B (a-RB[0], b-RB[1],...,g-RB[6],dp-RB[7]), iar cele patru
linii de selecie la pinii RA[3:0]. Avnd n vedere c afiajul este cu catod comun, LED-
urile se vor aprinde atunci cnd pe pinii corespunztori liniilor de date vom avea un 1 logic.
Multiplexarea se va realiza prin intermediul liniilor de selecie, iar programul va trebui s
asigure selectarea succesiv a fiecrui digit prin comanda tranzistorilor i meninerea datelor
adecvate pentru fiecare digit pe port. Dac multiplexarea se realizeaz suficient de repede (ex.
la fiecare 10ms se selecteaz un nou digit i se trimit datele spre el) se va crea impresia c
toate cele 4 cifre sunt aprinse simultan.
Se dorete afiarea numrului 1234 pe afiajul cu apte segmente i patru digii. n
acest scop trebuie identificate valorile care se transmit pe port pentru aprinderea cifrelor
dorite. Analiznd Fig. 6.14 se pot identifica aceste valori care se vor regsi i n program.

Fig. 6.14. Afiarea valorii 1234 pe un afiaj cu 7 segmente i 4 digii

Dup etapa de iniializare a porturilor fiecare digit va fi selectat pe rnd prin activarea
tranzistorilor de pe portul A i se vor transmite datele dorite spre afiaj care vor fi meninute
un timp de 10ms nainte de a se trece la afiarea pe urmtorul digit. n programul urmtor se
consider implementat rutina de ntrziere de 10ms

LIST P=18F4455 ;definire tip procesor
#include <P18F4455.INC> ;definire variabile procesor

Unit EQU b01100110 ;4
Zeci EQU b01001111 ;3
Sute EQU b01011011 ;2
Mii EQU b00000110 ;1

ORG 0x800 ;Adresa de reset

[...]


PORTURI DE INTRARE-IEIRE
116
;Programul principal

Initializare_port:
CLRF PORTB ;tergere buffere
CLRF LATB
CLRF PORTA
CLRF LATA

MOVLW 0x0F ;Configurare convertor A/D
MOVWF ADCON1 ;pt. pini I/O digitali

MOVLW 07h ;Oprire comparatoare
MOVWF CMCON

MOVLW 0xF0
MOVWF TRISA ;pini RA[3:0] ieire
CLRF TRISB ;pini RB[7:0] ieire

Aprindere_LED:
MOVLW Unit
MOVWF LATB
BSF LATA,0 ;selectare digit uniti
BCF LATA,1
BCF LATA,2
BCF LATA,3
CALL Delay_10ms

MOVLW Zeci
MOVWF LATB
BCF LATA,0
BSF LATA,1 ;selectare digit zeci
BCF LATA,2
BCF LATA,3
CALL Delay_10ms

MOVLW Sute
MOVWF LATB
BCF LATA,0
BCF LATA,1
BSF LATA,2 ;selectare digit sute
BCF LATA,3
CALL Delay_10ms

MOVLW Mii
MOVWF LATB
BCF LATA,0
BCF LATA,1
BCF LATA,2
BSF LATA,3 ;selectare digit mii
CALL Delay_10ms

GOTO Aprindere_LED
END
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
117

Concluzii
Capacitatea de a fi n legtur cu lumea exterioar prin intermediul
porturilor de intrare-ieire reprezint funcionalitatea cea mai important
pe care o poate furniza un microcontroler. Cele cinci porturi ale
microcontrolerului sunt controlate prin intermediul a trei regitrii speciali
care permit configurarea direciei pinilor, scrierea i citirea datelor de pe
port.


1. Care sunt regitrii care controleaz funcionarea porturilor i ce rol
ndeplinesc acetia?
2. Care sunt etapele iniializrii porturilor?
3. n Fig. 6.2 ce rol ndeplinete circuitul tristate (3)?
4. Cum se realizeaz protocolul handshake?

ntrebri de
autoevaluare
5. Cum se realizeaz configurarea direciei pinilor?



Termeni
eseniali
Afiaj cu apte segmente
Afiaj cu LED-uri ce permite afiarea cifrelor
Bistabil D
Celul elementar de memorie. Circuit cu dou stri (0 i 1 logic) utilizat
pentru stocarea informaiei de un bit.
Handshake
Protocol de comunicaie care permite realizarea unei comunicaii fr
pierdere de date ntre dou echipamente ne-sincrone. Nu exist un tact
comun de sincronizare. Sincronizarea se realizeaz prin mesaje.
LATn
Registru de citire/scriere a datelor de pe port
LED
Diod electroluminescent
PORTn
Registru de citire/scriere a datelor de pe port. La citire va conine starea
fizic a pinilor.
Porturi de intrare-ieire
Circuite de interfa prin intermediul crora se poate realiza schimbul de
informaii cu dispozitive periferice externe.
PORTURI DE INTRARE-IEIRE
118
Protocol de comunicaie
Un ansamblu de mesaje / semnale i reguli de schimbare a acestor mesaje
/ semnale ntre sisteme
TRISn
Registru n care se configureaz direcia unui port
Tristate
Circuit cu trei stri la ieire: 0 logic, 1 logic i impedan ridicat. Aceste
circuite dispun de o intrare de activare (ENABLE). Cnd circuitul este
activ acesta se comporta ca un circuit logic normal. Cnd circuitul este
inactiv ieirea este n stare de impedan ridicat (ieirea este deconectat
de la circuit)
UCP
Unitate central de prelucrare.

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