Porta parallela - Software ASM - Giobe®2000 - Assembler - Assembly - centronics 378 278 input output epp ecp spp

|  | Come Funziona Indirizzi Base Area Comunicaz. Bios Registri Livello Hardware Livello BIOS Livello DOS Tecniche d'Interruzione Connettori Cavi Interfaccia Applicazioni Software Applicazioni Hardware Download INDICE
Porta Parallela

| Applicazioni Software | PROGETTO n° 06 - 8/12 [95 di 166]

Analisi del Problema · Analisi del Codice · Procedure importanti · Schema interfaccia · Descrizione dello schema

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!! |  |  |

;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ;³ NOME : Mpx_Dato ³ ;³ DESCRIZIONE : Gestisce l'effettiva lettura degli otto bit del bus Dati del³ ;³ Convertitore ADC0804 sulle sole 4 linee possibili in³ ;³ input dalla porta parallela, con l'auito del Multiplexer 157³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

| 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:

;¿Forza a "1" il bit0 della porta USCITA COMANDI Mpx_Dato:MOV AL,01H ;³della parallela; per effetto dell'inversione MOV DX,037AH ;³interna la linea di "SELECT" del multiplexer OUT DX,AL ;³74LS157 Š a sua volta forzata a "0"; in questo CALL delay ;³modo il MPX collega i 4 bit pi— significativi ;³(bit7öbit4) del bus dati del convertitore sui ;Ùpin 11, 10, 12 e 13 e 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:

;¿Esegue praticamente la lettura dei 4 bit pi— ;³significativi (bit7öbit4) del bus dati del MOV DX,0379H ;³convertitore rispettivamente nei bit7öbit4 del IN AL,DX ;³registro d'ingresso (di STATO) della porta ;Ùparallela ;¿Formatta in BL la prima met… dell'informazione ;³desiderata nella forma xxxx0000H mascherandone ;³la parte bassa; va notato che Š NECESSARIO XOR AL,10000000B ;³"raddrizzare" da SW il valore del bit7 per AND AL,0F0H ;³evitare di interpretare in modo errato il dato MOV BL,AL ;³acquisito, essendo esso internamente invertito ;Ùda HW dall'interfaccia parallela

| 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:

;¿Forza a "0" il bit0 della porta USCITA COMANDI MOV AL,00H ;³della parallela; per effetto dell'inversione MOV DX,037AH ;³interna la linea di "SELECT" del multiplexer OUT DX,AL ;³74LS157 Š a sua volta forzata a "1"; in questo CALL delay ;³modo il MPX collega i 4 bit meno significativi ;³(bit3öbit0) del bus dati del convertitore sui ;Ùpin 11, 10, 12 e 13 e 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:

;¿Esegue praticamente la lettura dei 4 bit meno ;³significativi (bit3öbit0) del bus dati del MOV DX,0379H ;³convertitore rispettivamente nei bit7öbit4 del IN AL,DX ;³registro d'ingresso (di STATO) della porta ;Ùparallela XOR AL,10000000B ;¿Formatta in AL la seconda met… del dato letto SHR AL,1 ;³dal convertitore, compattandola nella forma SHR AL,1 ;³0000xxxxH; poichŠ il valore del bit7 Š inter- SHR AL,1 ;³namente invertito da HW dall'interfaccia SHR AL,1 ;³parallela per evitare di interpretarlo in modo ;Ùerrato, il suo valore va "raddrizzato" da SW

| 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.

OR AL,BL ;** Ricostruisce in AL il byte ora acquisito ** RET

| 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 - 8/12 |  |  |  |
95 di 166

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166

Parallela » | Come Funziona.. | Indirizzi Base | Area di Comunicazione Bios | Registri | Cavi Livello Hardware | Livello BIOS | Livello DOS | Tecniche d'Interruzione | Connettori Applicazioni Software | Progettazione | Interfaccia | Download | INDICE

DataSheet| Display LCD Parallela| Stampanti| Tastiera| Timer Seriale| Video| Cursore| RamVideo |

Home

| Pascal| Manuali| Tabelle| Schede Tutorial Assembly| Palestra Assembler

Aggiungi Giobe®2000 ai preferiti

Motore
Ricerca

| Rendi Giobe®2000 pagina di Default

© 2001-2006 - Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati