Dopo aver realizzato, nell'esempio
precedente, le luci in sequenza sfruttando le linee da RB0 a RB3 come linee di
output, vediamo ora come si può realizzare un input da tastiera configurando le
linee da RB4 a RB7 come linee di input.
Per questo sfruttiamo i quattro pulsanti SW1,
SW2, SW3 ed SW4 disponibili sulla
scheda PicTech.
Ognuno di questi pulsanti collega ai +5v una linea di
ingresso normalmente mantenuta a zero da una resistenza (da R1 a R4). Se colleghiamo ad
esempio il pin 10 del PIC16F84 al pulsante SW1, questa linee verrà mantenuta a 0 finchè
non verrà premuto il tasto corrispondente SW1 che provvederà a portare la linea ad 1.
Proviamo ad esempio a realizzare un programma che
accenderà ciascuno dei led D1, D2, D3
e D4 in corrispondenza della pressione di ciscun tasto da SW1 a SW4.
Per chi dispone della scheda PicTech sarà sufficiente
collegare i seguenti pin:
RB4 con PU1
RB5 con PU2
RB6 con PU3
RB7 con PU4
realizzando così i collegamenti riportati nel seguente
schema elettrico:
-------> Inserire
qui lo schema elettrico <--------
Il source dell'esempio è riportato nel file INPUT.ASM.
Analizziamone ora il funzionamento.
La parte iniziale del programma esegue le stesse funzioni
effettuate negli esempi precedenti ed in particolare le istruzioni:
movlw 11110000B
movwf TRISB
configurano le linee da RB0 a RB3 in uscita per il
collegamento con i led e le linee da RB4 a RB7 in ingresso per il collegamento con i
quattro pulsanti. Il resto del programma:
MainLoop
swapf PORTB,1
goto MainLoop
effettua semplicemente un loop continuo in cui viene
eseguita l'istruzione swapf la quale scambia il contenuto dei bit RB0-RB3
con i bit RB4-RB7. In questo modo lo stato delle linee di ingresso
collegate ai quattro pulsanti viene replicato continuamente sulle linee collegate ai led
ottenendo l'accensione di un led per ogni pulsante. |