BASIC e ASSEMBLY

Tesina

Stepper

Darlington

Visual C++

C Builder

Assembler

Alim. Switching

La Robotica

Basic

Assembly

 
Top
  Per gestire una porta in BASIC si possono usare le Funzioni:

INP (ADR) - dove adr e` indirizzo e vale 889 per LPT1 e testa i bit dai pin 15 - 13 - 12 - 10 - 11 (tot. 5 bit)

INP (ADR) - dove adr e` indirizzo e vale 890 per LPT1 e testa i bit dai pin 1-14-16-17 (tot. 4 bit)

Per testare un BYTE (8bit) si può fare:

A=INP(889)
B=INP(890)
VALINPUT=(B-128)-(A-232)

Per l'uscita si usa :

OUT ADR,NR dove adr e` indirizzo e vale 888 per LPT1 e gestisce i bit d'uscita sui pin 2-3-4-5-6-7-8-9 (NR e` il valore numerico da accendere sulla porta)

NR e` dato dalla somma del valore che ogni bit possiede se e` messo a livello alto:

ESEMPIO

PIN 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2
2 ELEVATO ALLA 7 6 5 4 3 2 1 0
BIT A " 1 " 0 1 0 1 0 0 0 1
NR = 64 +16 +2 =82

facendo OUT 888,82 si settano i pin 8 - 6 - 2 a livello 1 e gli altri a 0

 
 
Top
 

ASSEMBLER

SIA PER INPUT CHE PER OUT DEVO PRIMA CARICARE NEL REGISTRO dx IL VALORE ADR secondo la LPT usata e poi:

con IN al,dx carico nel registro Al il valore di input corrispondente all'indirizzo contenuto in dx

mov dx,889
in al, dx

cosí facendo carico in al 8 bit di cui però soltanto i 5 bit più significativi sono quelli riferiti ai pin 11 - 10 - 12 - 13 - 15

byte al peso bit 7 - 6 - 5 - 4 - 3 - 2 - 1 - 0
pin cor. 11 10 12 13 15 x x x

mov dx, 890
in al,dx

così facendo carico in AL 8 bit di cui però solo i 4 meno significativi sono riferiti ai pin 17 - 16 - 14 - 1.

Ricordarsi che i bit facenti capo ai pin 1-14-17-11 sono negati rispetto agli altri dei pin 11 - 10 - 12 - 13 - 15. Per prendere un byte dall'input facente capo ai pin 11-10-12-13-15-16-14-1 in cui pin11=bit7 e pin 1=bit0 si farà:

 

così facendo prendo gli 8 bit del registro Al e li "butto" sui pin
9-8-7-6-5-4-3-2 pin 9=bit7 pin 2=bit0

 
mov dx,889
in al,dx
and al,0f8h
mov variabile,al
mov dx,890
in al,dx
and al,07
or al,variabile
in al
- - - - - - -
mov dx,888 (888=LPT1 )
out dx,al

carico al con 8 bit di cui solo 5 utili
elimino i bit che non servono
(variabile dove tenere momentaneamente al)
punto ad altro input
prendo 8 bit di cui 4 utili-solo tre servono
elimino i bit che non servono
unisco i 5bit di prima con i tre ultimi
ho 8 bit che fanno capo ai pin
11-10-12-13-15-16-14-1

PER L'OUT

   
Top

Alessandro del Gallo