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° 09 - 3/5 [112 di 166]

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

Porta Parallela - INPUT EPP di Dati a 8 bit - Contatto diretto sui pin abilitati

Analisi del Codice Sorgente

| Il compito del programma consiste nel leggere lo stato logico degli 8 pin del connettore EPP, di norma abilitati anche all'ingresso dati.
| Il programma è in grado di rilevare contemporaneamente tutte le possibili variazioni, cosa possibile applicando una massa tutti e 8 i pin abilitati, cioè collegandoli con il pin25.
| Il codice assembly del programma è visibile, nella sua totalità, scorrendo con la barra laterale il testo della seguente casella:

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

PAGE 66,132 TITLE** PROGRAMMA di GESTIONE di programmi ASSEMBLER tipo COM (settembre 2003) SUBTTL ** TUTORIAL ASSEMBLY -- www.giobe2000.it -- by ing. Giorgio OBER ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ;³ NOME : EPP1_IN.ASM ³ ;³ AUTORE : Giorgio OBER ³ ;³ VERSIONE : settembre 2003 ³ ;³ DESCRIZIONE : Test di INPUT DATI da una PORTA PARALLELA EPP. ³ ;³ Il programma consente la verifica della PORTA PARALLELA EPP³ ;³ in operazioni di INPUT di 8 bit di DATO dai pin2öpin9 della³ ;³ porta bidirezionale associata al registro 037CH. ³ ;³ ÚÄÄÄÄÄÄÄÄÄÄ¿ -------------------------------------------------------------³ ;³ ³°°°°°°°°°°³ Se si lavora con i Sistemi Operativi Win2000, Win NT o WinXP ³ ;³ ³°°°NB !!°°³ bisogna prima installare il Driver Configura_LPT1; scaricalo ³ ;³ ³°°°°°°°°°°³ a: http://www.giobe2000.it/consigli/Scarica_VediLPT_XP.htm ³ ;³ ÃÄÄÄÄÄÄÄÄÄÄ´ -------------------------------------------------------------³ ;³ ³°°°°°°°°°°³ Se si lavora con i Sistemi Operativi Win2000, Win NT o WinXP ³ ;³ ³°°°NB !!°°³ la SHELL DOS deve essere a "Pieno Schermo" (l'esecuzione in ³ ;³ ³°°°°°°°°°°³ "finestra DOS" non produce effetto sulla Stampante) ³ ;³ ÃÄÄÄÄÄÄÄÄÄÄ´ -------------------------------------------------------------³ ;³ ³°°°°°°°°°°³ In ogni caso PRIMA DI OGNI SESSIONE DOS Š necessario eseguire³ ;³ ³°°°NB !!°°³ il programma Config_LPT1.EXE in ambiente Windows per attivare³ ;³ ³°°°°°°°°°°³ la visibilit… dei driver installati con Configura_LPT1 !!!!! ³ ;³ ÃÄÄÄÄÄÄÄÄÄÄ´ -------------------------------------------------------------³ ;³ ³°°°°°°°°°°³ Non dimenticare di configurare la porta parallela a livello ³ ;³ ³°°°NB !!°°³ BIOS SETUP, durante i primi istanti dopo l'accensionde del ³ ;³ ³°°°°°°°°°°³ computer, imposta la stampante come EPP anzichŠ come SPP ³ ;³ ÀÄÄÄÄÄÄÄÄÄÄÙ -------------------------------------------------------------³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ; COSTANTI DEFINITE PER IL PROGRAMMA: PRNdato EQU 037CH ;Registro di dato (INPUT/OUTPUT) PRNstat EQU 0379H ;Registro di stato (INPUT) PRNctrl EQU 037AH ;Registro di controllo (OUTPUT) ; MACRO UTILIZZATE DAL PROGRAMMA: if1 ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ include GIOBE.MAC ;(C:\ARCH-LAB\BIN\GIOBE.MAC);³ endif ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÚÄÄÄÄ¿ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ;³PROCEDURE ESTERNE³NEAR³UTILIZZATE dal PROGRAMMA (dalla LIBRERIA GIOBE.LIB~)³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÀÄÄÄÄÙÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ EXTRN CambiaCol:NEAR EXTRN SET_cur:NEAR EXTRN VIA_cur:NEAR EXTRN RIP_cur:NEAR EXTRN KEYwait:NEAR EXTRN BIOScls:NEAR EXTRN BIOchr1:NEAR EXTRN BIObeep:NEAR EXTRN BIOSmsg:NEAR EXTRN Byt2Asc:NEAR EXTRN Wor2Asc:NEAR EXTRN Del_100:NEAR ; DICHIARAZIONI (VARIABILI) PER I PROGRAMMI ESTERNI: PUBLIC ATTRIB ;Attributo di colore ; DICHIARAZIONI (PROCEDURE) PER I PROGRAMMI ESTERNI: PUBLIC EPP1_IN ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ;³DEFINIZIONE DEL SEGMENTO DEL CODICE ³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ _prog SEGMENT BYTE PUBLIC 'CODE' ASSUME CS:_prog,DS:_prog ORG 0100H INIZIO: JMP EPP1_IN ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ;³AREA DESTINATA AI DATI DEL PROGRAMMA ³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ATTRIB DB 0FH preced DB 00H TESTO1 DB "ÚÄÄbitÄÄ¿ Ú7Â6Â5Â4Â3Â2Â1Â0¿ÚÄÄÄÄÄÄÄ¿ 037FHÄÂ¿ ÚÂÄÄÄ037DH",00H TESTO2 DB "³ 037CH ³ ³ ³ ³ ³ ³ ³ ³ ³ ³³ H ³ H",00H TESTO3 DB "ÀÄÄÄÄÄÄÄÙ ÀÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÙÀÄÄÄÄÄÄÄÙ 037EHÄÄÄÁÙ ÀÁÄ037CH",00H TESTO4 DB "(bit4)037CHÄpin 6ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄpin5Ä(bit3)037CH",00H TESTO5 DB "(bit5)037CHÄpin 7ÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ÚÄÄÄÄpin4Ä(bit2)037CH",00H TESTO6 DB "(bit6)037CHÄpin 8ÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ÚÄÄpin3Ä(bit1)037CH",00H TESTO6_ DB "(bit7)037CHÄpin 9ÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ Úpin2Ä(bit0)037CH",00H TESTO7 DB " pin13Ä¿ ³ ³ ³ ³ ³ ³ ³ ³ Úpin1 ",00H TESTO8 DB " ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ",00H TESTO9 DB " \ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ / ",00H TESTOA DB " \ þ þ þ þ þ þ þ þ þ þ þ þ þ þ / ",00H TESTOB DB " ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ",00H TESTOC DB " pin25ÄÄÙ INPUT DATO a 8 bit ÀÄÄÄpin14 ",00H TESTOD DB "Collega tra loro il pin25 e uno dei pin 2,3,4,5,6,7,8 o 9",00H TESTOH DB "Se sei in ambiente Windows2000/NT/XP devi installare il Driver Config_IO",00H TESTOH1 DB "e, prima di lanciare il programma, devi lanciare Config_LPT1 (vedi sito)",00H TESTOI DB "ÚÄÄpin1",00H TESTOL DB "pin25ÄÄÙ",00H TESTOM DB "ÀÄÄÄpin14",00H TESTON DB "pin13Ä¿",00H TESTOO DB "NB: nel BIOS SETUP impostare la stampante come EPP invece di SPP",00H TESTOP DB "037C",00H Titolo DB "Test Porta Parallela EPP - Input da connettore",00H CopyRg DB "TUTORIAL ASSEMBLY --- www.Giobe2000.it --- Copyright 2003",00H Menu DB "Cambia i contatti sul connettore - Un tasto per terminare",00H Tab_Pin DB 50,35 ; FEH bit0 pin 2 a massa DB 48,33 ; FDH bit1 pin 3 a massa DB 46,31 ; FBH bit2 pin 4 a massa DB 44,29 ; F7H bit3 pin 5 a massa DB 42,27 ; EFH bit4 pin 6 a massa DB 40,25 ; DFH bit5 pin 7 a massa DB 38,23 ; BFH bit6 pin 8 a massa DB 36,21 ; 7FH bit7 pin 9 a massa ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ;³ AREA DESTINATA ALLE PROCEDURE DEL PROGRAMMA ³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ;³PROCEDURA :DeskTop ³ ;³DESCRIZIONE :Predispone il piano di lavoro (DeskTop): dopo aver pulito lo³ ;³ schermo e dopo aver fatto sparire il cursore mostra tutti i³ ;³ messaggi di presentazione del programma. ³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ DeskTop:CALL BIOScls CALL VIA_cur ; fa sparire il cursore M_CURSOR 0,0 ;¿Stampa l'intera riga 0 (la prima) con M_COLOR 1FH ;³caratteri vuoti (spazi) CALL BARRA ;Ù M_CURSOR 23,0 ;¿Stampa l'intera riga 24 (l'ultima) con M_COLOR 1FH ;³caratteri vuoti (spazi) CALL BARRA ;Ù M_msgC Titolo, 0,18,1FH; Testo del titolo M_msgC MENU,23,10,1FH; Testo del Menu M_msgC CopyRg,24,10,04H; Testo del CopyRight M_msgC TESTO4 ,2,10,0FH;¿(bit4)037CHÄpin 6ÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄpin5Ä(bit3)037CH M_msgC TESTO5 ,3,10,0FH;³(bit5)037CHÄpin 7ÄÄÄÄÄ¿ ³ ³ ÚÄÄÄÄpin4Ä(bit2)037CH M_msgC TESTO6 ,4,10,0FH;³(bit6)037CHÄpin 8ÄÄÄ¿ ³ ³ ³ ³ ÚÄÄpin3Ä(bit1)037CH M_msgC TESTO6_,5,10,0FH;³(bit7)037CHÄpin 9Ä¿ ³ ³ ³ ³ ³ ³ Úpin2Ä(bit0)037CH M_msgC TESTO7, 6,10,0FH;³pin13Ä¿ ³ ³ ³ ³ ³ ³ ³ ³ Úpin1 M_msgC TESTO8, 7,10,0EH;³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ M_msgC TESTO9, 8,10,0EH;³ \ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ / M_msgC TESTOA, 9,10,0EH;³ \ þ þ þ þ þ þ þ þ þ þ þ þ þ þ / M_msgC TESTOB,10,10,0EH;³GND ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ M_msgC TESTOC,11,10,0FH;³pin25ÄÄÙ ÀÄÄÄpin14 M_msgC TESTOD,13,10,03H;³"Collega pin25 e uno dei 2,3,4,5,6,7,8 o 9" M_msgC TESTOH,14, 3,02H;³" in ambiente Win2000/NT/XP lancia il Driver " M_msgC TESTOH1,15, 3,02H;³" in ambiente Win2000/NT/XP lancia Config_io " M_msgC TESTOO,21, 7,02H;³"nel BIOS SETUP impostare stampante come EPP.." M_msgC TESTOI, 6,52,0EH;³ ÚÄÄpin1 M_msgC TESTOL,11,18,0EH;³ pin25ÄÄÙ M_msgC TESTOM,11,51,0EH;³ ÀÄÄÄpin14 M_msgC TESTON, 6,18,0EH;Ù pin13Ä¿ M_msgC TESTO1,17,10,0FH;¿"ÚÄÄbitÄÄ¿Ú7Â6Â5Â4Â3Â2Â1Â0¿ÚÄÄÄÄÄ¿ M_msgC TESTO2,18,10,0FH;³"³ 037CH ³³ ³ ³ ³ ³ ³ ³ ³ ³³ XXH ³ M_msgC TESTO3,19,10,0FH;³"ÀÄÄÄÄÄÄÄÙÀÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÙÀÄÄÄÄÄÙ M_msgC TESTOP,18,12,0EH;Ù MOV CS:[preced],0 ;¿Se Š la prima volta esegue comunque la colora- CALL Colora ;³immagini del connettore e del registro 037CH, RET ;Ùal variare degli eventuali input ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ;³ PROCEDURA : BARRA ³ ;³ DESCRIZIONE : Stampa una intera riga di caratteri vuoti. ³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ BARRA: PUSH AX PUSH CX MOV CX,80 MOV AL,' ' Barra0: CALL BIOchr1 LOOP Barra0 POP CX POP AX RET ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ;³ PROCEDURA : Colora ³ ;³ DESCRIZIONE : Visualizza l'immagine del connettore e del registro coinvol-³ ;³ to, 037CH, evidenziando lo stato logico corrente di tutti i³ ;³ sia del segnale applicato ai pin che dei bit interni, dopo³ ;³ la LETTURA operata sui pin abilitati del connettore lasciata³ ;³ in ingresso in AL: ³ ;³ FFH <-----------> Nessun pin a massa ³ ;³ FEH bit0 pin 2 a massa ³ ;³ FDH bit1 pin 3 a massa ³ ;³ FBH bit2 pin 4 a massa ³ ;³ F7H bit3 pin 5 a massa ³ ;³ EFH bit4 pin 6 a massa ³ ;³ DFH bit5 pin 7 a massa ³ ;³ BFH bit6 pin 8 a massa ³ ;³ 7FH bit7 pin 9 a massa ³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Colora: PUSH CX PUSH AX ;¿Aggiorna il valore corrente della variabile MOV CS:[preced],AL;³locale per evitare di fare l'analisi se il ;Ùdato acquisito Š quello di prima M_CURSOR 18,40 ;¿Mostra il risultato dell'acquisizione sulle M_COLOR 0EH ;³immagini del connettore e del registro 037CH, CALL Byt2Asc ;Ùal variare degli eventuali input ;¿Predispone in AH la maschera che indica (con MOV AH,00000001B ;³il suo unico "1") il bit del registro 0379H ;Ùche sar… sottoposto a test ;----------------------------------------------- ;Si verificano le 8 possibilit… una dopo l'altra ;----------------------------------------------- LEA DI,Tab_Pin ;*Punta la tabella delle coordinate ;¿Se nessuno degli 8 pin da 2 a 9 corrispondenti MOV CX,8 ;³ai bit0öbit7) sono a massa l'immagine dei 4 ;³bit del registro 037CH viene mostrata con "1"; ;Ùaltrimenti con "0" Col_0: TEST AL,AH ;¿Controlla se il pin messo a massa corrisponde JNZ Col_1 ;³alla posizione corrente, rappresentata dall'1 ;Ùnel valore corrente di AH PUSH AX ;¿ M_Chr '',7,CS:[DI],8FH;³ M_Chr 'þ',8,CS:[DI],8EH;³Provvede a cancellare le posizioni e i bit che M_Chr '0',18,CS:[DI+1],0EH;³non interessano nello schema a video JMP SHORT Col_2 ;Ù Col_1: PUSH AX ;¿ M_Chr '',7,CS:[DI],0FH;³Provvede a evidenziare posizione e bit nello M_Chr 'þ',8,CS:[DI],06H;³schema a video M_Chr '1',18,CS:[DI+1],0EH;³ Col_2: POP AX ;Ù ADD DI,2 ;¿Aggiorna il test per la prossima combinazione ROL AH,1 ;Ù DEC CX ;¿Ripete il ciclo (non Š stato possibile usare CMP CX,0000H ;³direttamente "LOOP Col_0" perchŠ il salto re- JZ Col_3 ;³lativo a Col_0 Š troppo distante JMP Col_0 ;Ù Col_3: POP AX POP CX RET ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿³ EPP1_IN proc NEAR ;³ AREA DEDICATA AL MAIN PROGRAM ³³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ;³Il comportamento delle porte EPP nelle operazione di Input/Output pu•³ ;³variare in misura notevole da costruttore a costruttore, rivelandosi³ ;³talvolta problematico. Anche se non si tratta di una regola assoluta, pu•³ ;³essere conveniente predisporre fisicamente un livello logico 1 le linee di³ ;³controllo coinvolte in questi casi: ³ ;³ ## Write (pin 1): bassa durante la scrittura, alta durante la lettura³ ;³ ## DStrobe (pin 14): bassa durante la scrittura/lettura dato ³ ;³ ## AStrobe (pin 17): bassa durante la scrittura/lettura indirizzo ³ ;³ ## Init (pin 16): alta=funzionamento EPP, bassa=funzionamento SPP ³ ;³ ³ ;³Di sicuro in questa fase i segnali di sincronismo coinvolti nella³ ;³scrittura/lettura di indirizzi (AStrobe) o di dati (DStrobe) e il segnale³ ;³di scrittura (Write) sono alti in stato non attivo ³ ;³In conclusione pu• essere necessario porre a 0 i corrispondenti bit nel³ ;³Registro di Controllo (uscita) 037AH/027AH (rispettivamente i bit3, bit1 e³ ;³bit0) tenendo conto che le linee vengono invertite internamente. ³ ;³Ci• equivale a forzare un Out di xxxx0100B (=x4H) su 037AH ³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ CALL DESKTOP ;¿La posizione 0100 dei 4 bit meno significativi MOV DX,PRNctrl ;³del Registro di controllo si Š rilevata IRRI- IN AL,DX ;³LEVANTE; fondamentale invece, per attivare il OR AL, 00100000B ;³funzionamento della EPP Š stato forzare a 1 il OUT DX,AL ;³bit5, per annullare un eventuale conflitto con ;Ùuna pregressa situazione monodirezionale SPP xxx00: MOV DX,PRNdato ;¿Esegue la lettura dello stato logico degli 8 IN AL,DX ;³contatti sul connettore (pin9öpin2) associati ;Ùai bit7öbit0 del registro bidirezionale 037CH PUSH AX ;¿ PUSH BX ;³ MOV BL,AL ;³ INC DX ;³ IN AL,DX ;³ MOV BH,AL ;³ INC DX ;³ IN AL,DX ;³ MOV AH,AL ;³ INC DX ;³Opzionale: mostra il valore corrente di tutti IN AL,DX ;³ e 4 i registri dato della EPP XCHG AH,AL ;³ M_COLOR 0EH ;³ M_CURSOR 18,55 ;³ CALL Wor2Asc ;³ MOV AX,BX ;³ CALL Wor2Asc ;³ POP BX ;³ POP AX ;Ù CMP CS:[preced],AL;¿Se non si Š verificata nessuna variazione JE xxx01 ;³rispetto a prima si evita l'analisi: la propo- ;Ùsta a video non cambia ;¿Mostra il risultato dell'acquisizione sulle CALL Colora ;³immagini del connettore e del registro 037CH, ;Ùal variare degli eventuali input xxx01: CALL Del_100 ;¿Opzionale: piccolo reitardo per facilitare CALL Del_100 ;Ùla lettura del dato acquisito MOV AH,01H ;¿ INT 16H ;³Continua fino alla pressione di un tasto JZ xxx00 ;Ù _OUT: PUSH AX ;¿Torna al DOS con la memoria liberata e con la CALL RIP_cur ;³chiusura di tutti i file; cede il controllo al MOV DH,23 ;³processo padre (generalmente COMMAND.COM); il MOV DL,0 ;³valore posto eventualmente in AL prima di CALL SET_cur ;³uscire pu• essere testato in uscita con la POP AX ;³funzione 4DH o mediante la lettura della MOV AH,4CH ;³variabile DOS "ERRORLEVEL" INT 21H ;Ù ;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ EPP1_IN ENDP ;³Chiusura standard del codice ³ _prog ENDS ;ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ END INIZIO ;³Chiusura del segmento di codice e conclusione³ ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

| La lettura può essere operata anche in Ambiente Assembler (disponibile sul Sito accedendo a questa pagina); se hai già provveduto alla sua installazione scarica il sorgente del progetto direttamente nella cartella C:\Arch-Lab\Lavoro (scegliendo il pulsante di opzione "Salva" e, come destinazione, seleziona la cartella che ti ho appena suggerito).

Ricorda: se fai click sull'icona a sinistra si apre l'Ambiente Assembly e puoi entrare in Ambiente on-line.
Scegli il pulsante di opzione "Aprire il file" o "Esegui l'applicazione" e conferma con OK.
NB: alcuni gestori di protezione (per esempio SP2 di WinXP) non ti consentono questa operazione:
in questo caso scrivi c:\arch-lab\bin\sys\assembler.pif direttamente nel campo indirizzo del Browser

| Nella shell DOS aperta (o a pieno schermo) puoi iniziare una sessione di lavoro digitando MACRO EPP1_in /e (con gli spazi al posto giusto !!) e conferma con Invio.

| Porta Parallela |  |  | PROGETTO n° 09 - 3/5 |  |  |  |
112 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