ESERCITAZIONE # 10
Gestione di un display a 7 segmenti
attraverso un SIPO
Ripetiamo l' esercizio 9, ma utilizzando il display attraverso uno shift
register, come già visto nelle esercizio 8.
Avendo a disposizione l' hardware usato in precedenza e il modulo del
driver software dello shift register HC164, si tratta solamente di effettuare
una piccola modifica al sorgente dell' esercizio 9.
In pratica, il trasferimento del dato prelevato dalla tabella al display,
nell' esercizio 9 avveniva attraverso una semplice scrittura nel registro del
PORT
loop1 movf counter, W
; copia counter in W
rcall GetDigitCode
; richiama codice per 7 segmenti
movwf SegmentPort
; scrivi in uscita sul port
|
Mantenendo inalterata la struttura, sostituiamo il modo di uscita con il
driver dello shift register:
loop1 movf counter, W
; copia counter in W
rcall GetDigitCode
; richiama codice per 7 segmenti
rcall HC164Out
; scrivi in uscita sul port
; verso lo shift register
|
Nel flow chart basterà inserire questa piccola modifica.
Analogamente per la routine di lampeggio del punto decimale, che diventa:
; Lampeggio dp il numero di volte passato da WREG
dplamp movwf counter
; W al contatore
dpl movlw 0x80
; bit7=1 -> dp acceso
rcall
HC164Out ; scrivi in uscita sul port
; verso lo shift register
rcall
PausaL ; breve attesa
movlw
0 ; tutti i bit spenti
rcall
HC164Out ; scrivi in uscita sul port
; verso lo shift register
rcall PausaL
; breve attesa
decfsz counter
; fine conteggio ?
bra
dpl ; no - loop
return
; si - ritorno |
E' così facilmente comprensibile come una struttura modulare possa adattarsi
senza alcuna fatica alle più diverse applicazioni: il modulo di comando dello
shift register è utilizzato come una semplice riga di istruzione !
Se si incontrano errori nella compilazione è opportuno verificarli con la
lista di descrizione degli errori e correggere dove si è sbagliato.
Il file compresso di questa esercitazione è scaricabile dall'
area di download.
|