ik wou graag een aantal knoppen op de parrallele poort
willen maken en uitlezen met QBASIC nu heb ik op internet
dit gevonden

kan iemand mij dit beter uitleggen want ik snap het nog niet helemaal

met vriendelijke groeten: Help :P

Dit programma leest de par.poort pinnen nummer 15,13,12,10,11. Moet je even kijken welke dit zijn. En dan die schakeling eraan hangen. Schakelaar open betekend pin hoog. Schakelaar gesloten betekend pin laag.

Nu zet je die schakelaartjes in bepaalde stand, en moet je het in gaan lezen met het programmatje.

Address = 889 is het address van je lpt1. dit zou anders kunnen zijn. (ff checken)

Elke pin heeft een bepaalde waarde.
pin 15 = 8
pin 13 = 16
pin 12 = 32
pin 10 = 64
pin 11 = 128
(afgeleid uit het progje, zal wel kloppen)

stel nou dat pin 15 hoog is, pin 10 en pin 11 hoog zijn. Dat is dus 8 + 64 + 128 = 200

pin 15 hoog en pin 13 hoog (rest laag) geeft dus 8 + 16 = 24

Het programma krijgt dit getal binnen. En kijkt dan welke pinnen hoog en laag moeten zijn om dit getal te hebben. (altijd maar 1 mogelikheid).

Zo weet het programma uiteindelijk welke pinnen hoog en laag zijn, en dus ook welk schakelaartje open of dicht is.

Ik hoop dat het een beetje duidelijk is..

PaWoN

trouwens, het schematje zit zo in elkaar, omdat je een pin nooi mag laten 'zweven' dat is dus nergens mee verbinden.

Als de schakelaar nu open is, is de par.poort pin verbonden via de weerstand met plus. Als de schakelaar gelsoten is, is hij verbonden met de - via de scakelaar.

PaWoN

nog 1 ding hoor..

ik gebruik altijd deze code aan het begin van mijn qbasic par-poort proggies:


CLS

'  BIOS places address of parallel ports starting at absolute address &H408
'  LPT1 low byte at &h408, high byte at &H409
'  LPT2 low byte at &H40A, high byte at &H40B
'  LPT3 low byte at &H40C, high byte at &H40D
'  Possible values are &H0278, &H0378, &H03BC, and 0 if not installed

'  Find printer ports if installed
DEF SEG = 0
lpt1 = PEEK(&H408) + 256 * PEEK(&H409)
lpt2 = PEEK(&H40A) + 256 * PEEK(&H40B)
lpt3 = PEEK(&H40C) + 256 * PEEK(&H40D)
DEF SEG

IF lpt1 = 0 THEN
        PRINT "1.  lpt1 is not installed."
ELSE
        PRINT "1.  lpt1 is installed at address "; lpt1; " decimal."
END IF

IF lpt2 = 0 THEN
        PRINT "2.  lpt2 is not installed."
ELSE
        PRINT "2.  lpt2 is installed at address "; lpt2; " decimal."
END IF

IF lpt3 = 0 THEN
        PRINT "3.  lpt3 is not installed."
ELSE
        PRINT "3.  lpt3 is installed at address "; lpt3; " decimal."
END IF

'  Input desired port
PRINT

DO
    INPUT "Which LPT port will you use; 1, 2, or 3?  ", N%

'  Assign Base0% to selected port address
'  Base is a keyword in Qbasic so Base0% is used instead

    IF N% = 1 THEN base0% = lpt1
    IF N% = 2 THEN base0% = lpt2
    IF N% = 3 THEN base0% = lpt3

    IF base0% = 0 THEN
        PRINT "That port doesn't exits, try again."
        N% = 0
    END IF

LOOP WHILE N% > 3 OR N% < 1


base1% = base0% + 1  'assign addresses
base2% = base0% + 2

' activate Base2% for high open collectors and disable interrupt
OUT base2%, 4

PaWoN

iemand nog andere opties zoals meer knoppen ???????

b.v.d. Help :P

standaard maximaal 4 knoppen, door de hardwarematige configuratie van de par poort.
Dit is op te lossen door

1) je standaard output poorten ook te gebruiken als inputs, hiervoor moet je met de mode van je par poort klooien (weet het echt niet meer uit m'n hoofd)
2) de signalen te muliplexen, dus er een 4 bits binaire code van te maken. op die manier zou je volgens mij 15 knoppen moeten kunnen gebruiken.

Op 17 maart 2004 21:09:56 schreef kingjotte:
standaard maximaal 4 knoppen, door de hardwarematige configuratie van de par poort.
Dit is op te lossen door

1) je standaard output poorten ook te gebruiken als inputs, hiervoor moet je met de mode van je par poort klooien (weet het echt niet meer uit m'n hoofd)
2) de signalen te muliplexen, dus er een 4 bits binaire code van te maken. op die manier zou je volgens mij 15 knoppen moeten kunnen gebruiken.

iemand die dit nog duidelijker uitleggen kan
[ik weet het ik zeur]

en nog eventuele andere progjes om mee uit te lezen
en dan aan te sturen

met vriendelijke groet Help :p

help stel jezelf eens wat constructiever op. Als je nou aangeeft wat je niet snapt.

als je je programmaatje nou altijd standaard alle 4 de inputs laat lezen, en daar de binaire waarde van bepaald, dus bv 0 knoppen ingedrukt is 0000

als je dan knop 1 op ingang 1 aansluit krijg je 0001
knop 2 op ingang 2 0010
knop 3 op ingang 1 & 2 0011
enz. op deze manier kan je 15 knoppen gebruiken.

Wel zorgen dat achter het spanningsvoerende deel van de knop een diode zit, anders krijg je rare dingen.

wat wil je dan aansturen?
dit komt uit de 'kris LPT faq'


dit zijn de bits van poort 888 (3F8h), als je LPT1 gebruikt

	7 6 5 4 3 2 1 0

	* . . . . . . .  D7 (pin 9), 1=High, 0=Low

	. * . . . . . .  D6 (pin 8), 1=High, 0=Low

	. . * . . . . .  D5 (pin 7), 1=High, 0=Low

	. . . * . . . .  D4 (pin 6), 1=High, 0=Low

	. . . . * . . .  D3 (pin 5), 1=High, 0=Low

	. . . . . * . .  D2 (pin 4), 1=High, 0=Low

	. . . . . . * .  D1 (pin 3), 1=High, 0=Low

	. . . . . . . *  D0 (pin 2), 1=High, 0=Low



poort 889:

	7 6 5 4 3 2 1 0

	* . . . . . . .  Busy . . (pin 11), high=0, low=1 (inverted)

	. * . . . . . .  Ack  . . (pin 10), high=1, low=0 (true)

	. . * . . . . .  No paper (pin 12), high=1, low=0 (true)

	. . . * . . . .  Selected (pin 13), high=1, low=0 (true)

	. . . . * . . .  Error. . (pin 15), high=1, low=0 (true)

	. . . . . * * *  Undefined


poort 890:

	7 6 5 4 3 2 1 0

	* * . . . . . .  Unused (undefined on read, ignored on write)

	. . * . . . . .  Bidirectional control

	. . . * . . . .  Interrupt control, 1=enable, 0=disable

	. . . . * . . .  Select . . (pin 17), 1=low, 0=high (inverted)

	. . . . . * . .  Initialize (pin 16), 1=high, 0=low (true)

	. . . . . . * .  Auto Feed  (pin 14), 1=low, 0=high (inverted)

	. . . . . . . *  Strobe . . (pin 1),  1=low, 0=high (inverted)

---
met een transistor kun je zo een relaisje aansturen met motortjes.
je kan poort 888 ook gebruiken voor input door bit 5 van poort 890 1 te maken. i.c.m. met het idee kingjotte heb je al 27 knoppen
als het moet kun je nog veel meer knoppen aansluiten.
dan moet je met transistors werken geloof ik. je kan natmelijk een array maken van schakelaars.


1 --+--+--+--+
    |  |  |  |
2 --+--+--+--+
    |  |  |  |
3 --+--+--+--+
    |  |  |  |
4 --+--+--+--+
    |  |  |  |
    5  6  7  8  


zo heb je met de acht data bits al 16 knoppen. mischien kan je zo met wat diodes nog steeds wel aansturen.
dat weet ik niet maar dat weet de rest vast wel