Applicazioni Software |
PROGETTO n° 06 - 9/12 [95 di 189] |
|
|
||
Porta Parallela - INPUT di Dati a 8 bit - Uso di un convertitore ADC0804 | ||
Analisi delle procedure importanti [2 di 3] |
|
La disponibilità di soli 5 bit d'ingresso dalla porta parallela (nella classica configurazione Centronics SPP) obbliga ad una lettura in 2 tempi di 4 bit alla volta, assumendo prima la parte alta e poi la parte bassa del byte frutto della conversione. |
Effettiva Lettura del bus dati del Convertitore |
La Procedura Mpx_Dato è, in realtà, una parte della Procedura Leggi, descritta nella pagina successiva: il suo compito è quello di gestire l'acquisizione degli 8 bit generati dal convertitore ADC0804. | |
Ad essa è demandato il compito di trasformare il byte reso disponibile dal convertitore poco dopo l'attivazione di RD, in 2 gruppi da 4 bit, letti poi in sequenza tramite il Registro d'ingresso 0379H/0279H. | |
La selezione delle 2 quaterne è resa possibile dal multiplexer 74LS157, il cui ingresso di selezione A/B (pin 1) è controllato mediante il Registro d'uscita 037AH/027AH. | |
Le istruzioni che la compongono sono già state più volte descritte nei progetti precedenti: |
|
Progetto |
NB: se il testo nell'Area
ti
sembra strano installa il font Giobe.TTF: clicca qui!! |
|
La lettura dei 4 bit più significativi del bus dati dell'ADC (DB7÷DB4, rispettivamente attaccati ai pin 2, 5, 11 e 14, ingressi di tipo "A" del '157, rispettivamente sui pin 11, 10, 12 e 13 del connettore della parallela) è ottenuta forzando uno 0 sull'ingresso di selezione A/B (pin 1 del selettore '157) cioè un 1 (essendo invertito internamente dall'hardware) sul bit0 del Registro d'uscita 037AH/027AH, disponibile sul pin 1 della porta parallela: |
|
|
Dopo il breve ritardo (per consentire l'assestamento del segnale) i dati da leggere sono stabili sui pin 11, 10, 12 e 13 del connettore della parallela e possono essere letti in sequenza sui bit7, bit6, bit5 e bit4 del Registro d'ingresso 0379H/0279H. | |
Poichè nel progetto viene coinvolto solo il bit0 la scelta di forzare a zero tutti gli altri non si ritiene sconveniente e non crea disagio. | |
Lo schema mette in evidenza che, dopo la lettura, lo stato dei 4 bit DB7÷DB4 del bus dati dell'ADC è disponibile nei 4 bit più significativi del registro, sebbene il valore logico proposto sul pin 11 della porta parallela venga invertito internamente dall'hardware, prima di essere letto sul bit7. | |
Per questo, dopo la fase di lettura, il programma deve provvedere ai relativi aggiustamenti: |
|
|
L'operazione di XOR di AL con 80H rovescia il valore logico del solo bit7, lasciando inalterati gli altri; in questo modo si pone rimedio alla inversione prodotta internamente da hardware. | |
Per facilitare la prossima ricomposizione del dato, è conveniente azzerare i 4 bit bassi, con la classica maschera prodotta dall'istruzione AND (AND AL,0F0H). | |
La prima fase d'acquisizione è dunque terminata: l'informazione così ottenuta, nella forma xxxx0000B, viene salvata nel registro BL. |
E' ora necessario spostare il cursore del multiplexer 74LS157, in modo da collegare ora i 4 bit meno significativi del bus dati dell'ADC (DB3÷DB0, rispettivamente attaccati ai pin 3, 6, 10 e 13, ingressi di tipo "B" del '157, ancora disponibili sui pin 11, 10, 12 e 13 del connettore della parallela). | |
Per questo scopo si forza un 1 sull'ingresso di selezione A/B (pin 1 del selettore '157) cioè un 0 (per l'inversione hardware interna) sul bit0 del Registro d'uscita 037AH/027AH, disponibile sul pin 1 della porta parallela: |
|
|
La procedura è identica a quella della fase precedente: il breve ritardo imposto rende stabili i dati da leggere sui pin 11, 10, 12 e 13 del connettore della parallela, per cui possono essere di nuovo letti in sequenza sui bit7, bit6, bit5 e bit4 del Registro d'ingresso 0379H/0279H. | |
Ora nei 4 bit più significativi di AL è disponibile lo stato dei 4 bit DB3÷DB0 del bus dati dell'ADC, non dimenticando che il valore logico del bit7 è sempre invertito internamente dall'hardware rispetto al valore assunto dal pin 11 della porta parallela: |
|
|
Per questo, dopo la fase di lettura, il programma deve provvedere ai relativi aggiustamenti; in primis l'istruzione XOR di AL con 80H rovescia il valore logico del solo bit7 lasciando inalterati gli altri. | |
Successivamente la sequenza delle 4 SHR sposta in basso i 4 bit alti, immettendo al loro posto degli 0: il dato in AL è dunque, alla fine, del tipo 0000yyyyB, con yyyy pari al valore logico effettivo dei 4 switch meno significativi, pronto per essere integrato con quello assunto in precedenza (già disponibile nella forma xxxx0000B). |
La fase finale del servizio software di questo progetto consiste nel ricompattare le 2 metà, bassa e alta, in un unico byte, da consumare come meglio si ritiene; in questo punto del programma i 4 bit più significativi sono in BL, in forma xxxx0000B, mentre quelli meno significativi sono in AL, nella forma 0000yyyyB. |
|
|
La presenza degli 0 nei 2 bytes componenti facilita la ricomposizione del dato: basta infatti l'operazione OR logica tra AL e BL e il dato è ricomposto. |
Con questo la procedura di lettura è terminata: dopo l'istruzione precedente il dato letto dall'ADC sarà lasciato in AL, nella forma finale xxxxyyyyB = XYH. |
|
Porta Parallela | PROGETTO n° 06 - 9/12 | |||||||
95 di 189 |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|