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 
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
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 door1) 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 
Marcel
AVR C tutorial http://expand.xs4all.nl/avr
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.
Progger
GMT+1
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