Microcomputer: interfacciamento parallelo e gestione delle interruzioni

Giuliano Donzellini, Domenico Ponta

Misuratore Digitale

120068

 

v1.80

In questo laboratorio lavoreremo su un misuratore digitale. La figura seguente mostra il suo schema (un click sulla figura aprirà il circuito nell'editor del d-DcS):

Il sistema si basa su un microcomputer DMC8, utilizzato come processore di dati, e un ricevitore di linea seriale.

Il processore dei dati ottiene il segnale digitale SIGNAL (8 bit in parallelo), sul porto IA. Il segnale è poi elaborato per essere rappresentato sul display del misuratore (una schiera di 32 LED), che mostra il livello del segnale. Nell'esempio della figura precedente, il valore del segnale digitale di ingresso SIGNAL è 19 (00010011b), e la schiera di array LED mostra 19 LED contigui attivati (gli altri sono spenti).

Il ricevitore di linea seriale è collegato al porto di ingresso IC (il ricevitore seriale è descritto qui in dettaglio). Quando l'uscita RDY del controllore del ricevitore porta a 'uno' il flip-flop D-pet , questo attiva la linea di interrupt del microcomputer: un pacchetto seriale è stato ricevuto correttamente. Il microcomputer leggerà il byte ricevuto: l'operazione di lettura dal porto IC resetterà la richiesta di interruzione, caricando uno zero nel flip-flop. Il bit ricevuti saranno utilizzati dal processore come parametri per controllare la decodifica del segnale digitale SIGNAL.

Scriveremo ora un programma, in assembly DMC8, che realizza le funzionalità del processore di dati, come descritto nel seguito.

Una volta lanciato, il processore di dati spegne la schiera di LED, inizializza tutte le variabili utilizzate e abilita le interruzioni. Poi, nel ciclo principale, il processore insegue il valore sull'ingresso SIGNAL, aggiornando continuamente la schiera di LED in uscita. Il valore dell'ingresso SIGNAL viene moltiplicato per un fattore, funzione dell'ultimo pacchetto ricevuto sulla linea seriale. Solo i bit IC0, IC1, IC2 e IC5, del byte ricevuto, sono significativi. IC5 agisce come comando di azzeramento del display: quando è alto, tutti i LED di uscita vengono spenti. Invece, IC2, IC1 e IC0 codificano un numero binario da 3 bit: il fattore da utilizzare dipende da questo numero, secondo la tabella seguente:

IC2
IC1
IC0
Fattore
0
0
0
1
0
0
1
1/2
0
1
0
1/4
0
1
1
1/8
1
-
-
1/16

Clicca qui per scaricare la traccia di una possibile soluzione. Una volta terminato di scrivere e testare il programma nel d-McE, occorre caricarlo nella ROM del microcomputer e simulare l'intero circuito nel d-DcS. Notare che, per testare il ricevitore, la sequenza di ingresso "TestSequence" è già disponibile nel diagramma temporale.