Il PIC16F84 dispone di un
totale di 13 linee di I/O organizzate in due porte denominate PORTA
A e PORTA B. La PORTA A dispone di 5
linee configurabili sia in ingresso che in uscita identificate dalle sigle RA0, RA1, RA2, RA3 ed RA4. La PORTA B dispone di 8 linee
anch'esse configurabili sia in ingresso che in uscita identificate dalle sigle RB0, RB1, RB2, RB3, RB4, RB5, RB6 ed RB7.

La suddivisione delle linee in due porte distinte è
dettata dai vincoli dell'architettura interna del PIC16F84 che prevede la
gestione di dati di lunghezza massima pari a 8 bit.
Per la gestione delle linee di I/O da pogramma, il PIC
dispone di due registri interni per ogni porta denominati TRISA e PORTA
per la porta A e TRISB e PORTB per la porta B.
I registri TRIS A e B,
determinano il funzionamento in ingresso o in uscita di ogni singola linea, i registri PORT
A e B determinano lo stato delle linee in uscita o
riportano lo lo stato delle linee in ingresso.
Ognuno dei bit contenuti nei registri menzionati
corrisponde univocamente ad una linea di I/O.
Ad esempio il bit 0 del registro PORTA
e del registo TRIS A corrispondono alla linea RA0 , il bit
1 alla linea RA1 e così via.
Se il bit 0 del registro TRISA
viene messo a zero, la linea RA0 verrà configurata come
linea in uscita, quindi il valore a cui verrà messo il bit 0 del
registro PORTA determinerà lo stato logico di tale linea (0 = 0 volt, 1
= 5 volt).
Sel il bit 0 de registro TRISA
viene messo a uno, la linea RA0 verrà configurata come linea
in ingresso, quindi lo stato logico in cui verrà posta dalla circuiteria esterna
la linea RA0 si rifletterà sullo stato del bit 0 del
registro PORTA.
Facciamo un esempio pratico, ipotizziamo di voler collegare
un led sulla linea RB0 ed uno switch sulla linea RB4, il codice da scrivere sarà il seguente:
movlw 00010000B
tris B
in cui viene messo a 0 il bit 0 (linea RB0 in uscita) e a 1
il bit 4 (linea RB4) in ingresso. Si ricorda a tale proposito che nella notazione binaria
dell'assembler il bit più a destra corrisponde con il bit meno significativo quindi il
bit 0.
Per accendere il led dovremo scrivere il seguente codice:
bsf PORTB,0
Per spegnerlo:
bcf PORTB,0
Per leggere lo stato dello switch collegato alla linea RB4,
il codice sarà:
btfss PORTB,4
goto SwitchAMassa
goto SwitchAlPositivo
Nel passo successivo analizzeremo
gli stadi d'uscita che gestiscono le linee di I/O. |