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° 12 - 6/7 [131 di 166]

Analisi del Problema · Analisi del Codice · Procedure importanti · Schema interfaccia

Porta Parallela - OUTPUT di Dati a 32 bit - Interfaccia con 4 memorie D-Type '374

Analisi delle procedure importanti [2 di 2]

| Certamente la parte più importante della procedura Out32bit è quella finale, riportata nella casella di testo insieme alla sottoprocedura Clock:

|  | Progetto | NB: se il testo nell'Area ti sembra strano installa il font Giobe.TTF: clicca qui!! |  |  |

;¿Ricarica il puntatore alla zona contenente il LEA DI,Dato_32 ;³il dato binario a 32 da spedire in sequenza ;Ùsul Registro DATI 0378H della porta parallela MOV DX,PRNdato ; Punta il Registro DATI 0378H della parallela MOV CX,4 ; Carica il contatore per il servizio di 4 bytes Out_1: MOV AL,ES:[DI] ;¿Eroga in stretta sequenza i 4 bytes, generando OUT DX,AL ;³il clock (un breve impulso alto) solo per la CALL Clock ;³memoria interessata dal dato a 8 bit corrente; INC DI ;³le rimanenti 3 memorie 74LS374 hanno tutte le LOOP Out_1 ;Ùlinee di clock a livello "0", inattive RET ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ;³PROCEDURA : Clock ³ ;³DESCRIZIONE: Genera un impulso alto sulla linea di clock di una sola delle ³ ;³ memorie 74LS374 coinvolte nel progetto; le rimanenti hanno ³ ;³ tutte le linee di clock a livello basso, disattive. ³ ;³ La memoria interessata dal clock Š quella di ordine CL-n, con ³ ;³ n uguale al numero di memorie coinvolte; naturalmente il ³ ;³ valore di CL deve essere predisposto prima della chiamata. ³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ;¿La memoria abilitata Š puntata dall'uscita del ;³decoder 74LS139 puntata dal codice binario Clock: ADD DX,2 ;³applicato sui suoi ingressi di selezione, a MOV AL,4 ;³loro volta fissati dal valore dei bit1, bit0 SUB AL,CL ;³(invertiti internamente) predisposto nel Re- ;³gistro di CONTROLLO 037AH cioŠ 00 per la prima ;³memeoria (in alto nello schema) e 11 per ;Ùl'ultima (in basso nello schema) AND AL,11111011B ;¿L'impulso di clock Š creato effettivamente OUT DX,AL ;³forzando prima a "0" e poi a "1" il bit2 del OR AL,00000100B ;³medesimo registro; in questo modo si abilita OUT DX,AL ;³il decoder creando un impulso basso sull'usci- SUB DX,2 ;³ta selezionata e il desiderato impulso alto di RET ;Ùclock sulla memoria, per effetto dell'inverter

| Come preannunciato la gestione delle 4 memorie esterne è affidata ad un loop, per questo caricato a 4 (MOV CX,4); i 4 bytes coinvolti nella gestione sono assunti dalla variabile Dato_32, predisposta in precedenza e puntata dall'istruzione LEA DI,Dato_32.

| A partire da quello meno significativo, i 4 bytes sono spediti, uno dopo l'altro tramite AL, sul Registro d'uscita 0378H/0278H (PRNdato) e resi disponibili sulle linee corrispondenti, i pin 2÷pin 9 del connettore della porta parallela

| Non appena un byte è presente sulla porta d'uscita viene creato il necessario sincronismo di memorizzazione (clock) per la memoria 74LS374 a cui è destinato.

| A questo pensa la sottoprocedura Clock, appositamente separata dalla precedente per evidenziarne la valenza; per comprendere meglio i concetti che descriverò tra poco può essere utile (se non l'hai già fatto ) aprire una seconda pagina con lo schema elettrico del progetto.

In breve è necessario controllare 3 linee del decoder binario 74LS139 con l'aiuto di altrettanti bit del Registro di controllo 037AH/027AH:

| i bit1, bit0 controllano le 2 linee di selezione del decoder, A1 sul pin2 e B1 sul pin3
| il bit2 controlla la linea di enable del decoder, G1, attiva bassa, sul pin1

| Poichè ciascuna delle 4 uscite del decoder (attive basse) è collegata (tramite in inverter) alla linea di clock (pin11) di una memorie esterna, è facile capire che il valore di controllo da predisporre sul Registro 037AH/027AH dovrà attivarle una alla volta, in sequenza.

| La scelta del valore da scrivere sul Registro è influenzata anche dal fatto che le linee d'uscita di quest'ultimo (associate ai bit1,bit0) sono invertite internamente; tenendo conto di tutto la procedura Clock è stata studiata per forzare i bit2,bit1,bit0 del Registro al giusto valore, nei 4 casi in cui è chiamata.

| La prima volta il valore è 000: il bit2 a 0 abilita il decoder e i bit1,bit0 a 00 (trasformato in 11, dagli inverter interni) selezionano l'uscita 3 del decoder, producendo un fronte attivo (di salita) sulla linea di clock della prima memoria (n°1), che copierà così sulla sua uscita il byte presente sulle linee dato della parallela.
| Le volte successive il valore sarà 001, 010 e 011: in ogni caso il bit2 a 0 mantiene abilitato il decoder e i bit1,bit0 selezionano le altre uscite del decoder, dalla 2 alla 0, garantendo un fronte attivo di clock anche per le rimanenti memorie, dalla n°2 alla n°4

| Da notare che la procedura Clock prima di generare un nuovo valore riporta momentaneamente il bit2 a 1 (OR AL,00000100B) per disabilitare tutte e 4 le linee di clock tra una fase e l'altra, lasciandole in questo stato (di attesa) anche al termine dell'ultima memorizzazione.

| Porta Parallela |  |  | PROGETTO n° 12 - 6/7 |  |  |  |
131 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