Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Iguan
Anmeldungsdatum: 14.11.2004 Beiträge: 28
|
Verfasst am: 18.11.2004, 12:40 Titel: LPT1 und OUT 888,2 |
|
|
Hallo QB-junkys
kann mir jemand sagen, zwischen welche Pins der LPT1-schnittstelle ich eine LED hängen muss,
damit diese mit dem Befehl OUT 888,2 zu leuchten beginnt?
die anderen 7 LED's habe ich schon rausgefunden.. danke für eure Hilfe
Iguan |
|
Nach oben |
|
|
Markus
Anmeldungsdatum: 16.09.2004 Beiträge: 104 Wohnort: Wien
|
Verfasst am: 18.11.2004, 13:18 Titel: Kein Problem. |
|
|
Schreib ein Mail an boku1@gmx.net,
im Betreff: QBasic
und ich schicke dir ein Programm retour, das alle Steuerbefehle enthält.
Wenn du mehr lernen willst:
http://franksteinberg.de/progss.htm
Gruß
Markus |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 18.11.2004, 13:40 Titel: |
|
|
Hallo
Viel herauszufinden gibt's da eigentlich nicht. Die acht Datenleitungen repräsentieren die 8 Bit des Bytes, das du mit OUT 888 in das Entsprechende Register schreibst.
Verwende aber unbedingt Vorwiderstände um den Strom auf ca. 10mA zu begrenzen (5 V / 0.01 A = 500 Ohm) !
Gruss
Skilltronic |
|
Nach oben |
|
|
Iguan
Anmeldungsdatum: 14.11.2004 Beiträge: 28
|
Verfasst am: 18.11.2004, 13:59 Titel: |
|
|
Ich brauche lediglich die zwei Pin-Nummern des 25 Poligen D-Substecker, wo ich dann die LED hinlöten muss! |
|
Nach oben |
|
|
Kai Bareis
Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 18.11.2004, 18:17 Titel: |
|
|
pin 2 bis Pin 9 sind die datenleitungen pin 18- pin 25 ist Masse _________________ MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht! |
|
Nach oben |
|
|
Iguan
Anmeldungsdatum: 14.11.2004 Beiträge: 28
|
Verfasst am: 19.11.2004, 00:07 Titel: |
|
|
Danke ihr seid die Besten !! genau das brauchte ich.. habs endlich hingekriegt
da ist mir aber noch eine weitere frage aufgetaucht:
Man kann ja auch "Digitale Eingänge" realisieren... (Feststellen, ob eine elekrische verbindung zwischen zwei Pins besteht.
Nun, mit welchem Befehl/Quellcode kann ich das feststellen, und zwischen welchen Pins ist das möglich?
gruss
Iguan |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 19.11.2004, 01:04 Titel: |
|
|
Hallo
Im Prinzip ist das genauso einfach wie die Ausgabe.
Die Aus- und Eingänge der LPT-Schnittstelle werden über drei Register gesteurt bzw. gelesen.
Das erste kennst du schon. Es hat die Adresse 888 und seine acht Bit steuern die 8 Datenleitungen.
Das nächste Register hat die Adresse 889 und über seine oberen fünf Bit kannst du fünf Eingangsleitungen abfragen.
Bit 7 - Busy = Pin 11 (invertiert)
Bit 6 - ACK = Pin 10
Bit 5 - PE = Pin 12
Bit 4 - Select = Pin 13
Bit 3 - Error = Pin 15
Das letzte Register hat als Adresse die 890. Über seine unteren vier Bit kannst du vier Leitungen ansprechen, die du entweder als Ein- oder Ausgang benutzen kannst. Je nachdem, ob du OUT oder INP() verwendest.
Bit 0 - Strobe = Pin 1 (invertiert)
Bit 1 - Auto Feed = Pin 14 (invertiert)
Bit 2 - Init = Pin 16
Bit 3 - SLCT IN = Pin 17 (invertiert)
So, wie du mit
OUT adresse, wert
ein Byte in das Register schreibst und so die acht Bit setzt, kannst du mit
wert = INP(adresse)
die beiden anderen Register auslesen. Wenn du einfache Schalter abfragen willst, musst du evtl. Pull-Up Widerstände verwenden. Mit AND und XOR kannst du die Bytes noch passend maskieren und invertieren.
Gruss
Skilltronic
Zuletzt bearbeitet von Skilltronic am 20.11.2004, 11:54, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Quark48
Anmeldungsdatum: 16.10.2004 Beiträge: 559 Wohnort: Saltendorf a.d. Naab bzw. Teublitz i.d. Oberpfalz / Bayern
|
Verfasst am: 19.11.2004, 19:20 Titel: SO mach´s ich... |
|
|
Hallo!
Man kann aus den Pins 2 bis 9 (8 Kanäle) Strom fließen lassen, um z.B. einen kleinen Verbraucher mit Saft zu versogen. Man kann jeden Kanal einzeln anschalten:
OUT 888, Kanal ^ 2
Wenn´s einem reicht, macht man so alles aus:
OUT 888, 0
Wenn man alle 8 Kanäle einschalten will, macht man das:
OUT 888, &HFF ' oder 255
Achtung! Der erste Kanal ist nicht 1 sondern 0. Demnach ist der letzte Kanal dann nicht 8, sondern 7.
Man kann auch Kombinationen von Leuchtdioden aufleuchten lassen.
Man zählt einfach die Kanalnummern zusammen:
Kanal = 1 ^2 ' Zweites Birnchen leuchtet
Kanal = Kanal + 3^2 ' Viertes Birnchen ist an
OUT 888, Kanal ' "Befehl" an den Druckerport senden
Ich hoffe, dir ist jetzt ein Licht aufgegangen!
Wichtiger Hinweis: Der Druckerport ist nicht wie der Serielle Anschluss Kurzschlussfest. Das heißt auch dass man keine richtigen Glühbirnen oder Heizspulen daran betreiben darf. _________________ Grüßle, Stefan
***
Wenn ein Programm auf nem alten Rechner gut läuft, dann läuft´s auf nem neuen erst recht!
Ich habe/hatte keine feste Spange und auch keine Schwester. Der Rest stimmt. Es tut mir leid... :-/ |
|
Nach oben |
|
|
Iguan
Anmeldungsdatum: 14.11.2004 Beiträge: 28
|
Verfasst am: 19.11.2004, 20:08 Titel: |
|
|
Hallo
(wegen dem Feststellen, ob ein Pin der LPT1 mit Masse verbunden ist...)
also, wenn ich z.B INP 889, x eingebe, markiert mir QBasic beim Ausführen das INP und bringt die Meldung "Erwartet Anweisung"
habs auch schon mit INP 890, x versucht, passierte aber das gleiche..
dann bin ich im Netz auf folgendes Beispiel gestossen:
'-- lpt1_in.bas ------------------------------------------------ >>fst'01<< -
' - liest das Statusregister von LPT1
' - wertet Bit 6 ("Acknowledge") aus
' - piept, solange Pin 10 mit Masse verbunden wird
'-- V 20010904 ------------------------------ http://home.arcor.de/steini63 -
CLS
LOCATE 4, 1
PRINT " Datenempfang ueber LPT 1 >> BENUTZUNG AUF EIGENE GEFAHR <<"
PRINT " Unter DOS oder im DOS-Modus ausfuehren!"
PRINT
PRINT " Es wird ein Kontrollton erzeugt, so lange"
PRINT " Pin 10 mit einem Massekontakt verbunden ist."
PRINT " Masse bei 25-Pol Sub-D = Pin 18 - 25"
PRINT " bei Centronics = Pin 19 - 30"
PRINT ""
LOCATE 14, 1
PRINT "LPT1 Statusregister Bit 6 = "
DEF SEG = 0
Adresse% = PEEK(&H408) + PEEK(&H409) * 256 'LPT1-Basisadresse auslesen
Adresse% = Adresse% + 1 'Statusregister ist bei Offset 1
DO WHILE INKEY$ = ""
InByte% = INP(Adresse%) 'Byte lesen
LOCATE 14, 29
IF (InByte% AND 64) = 0 THEN 'Bit 6 (Wert 64) abfragen ("Acknowledge")
PRINT "0"; 'Bit ist 0, wenn mit Masse verbunden
BEEP
ELSE
PRINT "1"; 'Bit ist 1, wenn kein Masseschluss
END IF
LOOP
Bei diesem funktionierte es auch nicht
jetzt die Frage an die Profis: WESHALB??
mfg
Iguan |
|
Nach oben |
|
|
Kai Bareis
Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 19.11.2004, 22:25 Titel: |
|
|
betriebssystem? _________________ MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht! |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 20.11.2004, 00:02 Titel: |
|
|
Du musst bei INP im Gegensatz zu OUT die Adresse in Klammern setzen !!!
OUT 888, x
aber:
x = INP (889)
Zitat: |
Man kann aus den Pins 2 bis 9 (8 Kanäle) Strom fließen lassen, um z.B. einen kleinen Verbraucher mit Saft zu versogen. Man kann jeden Kanal einzeln anschalten:
OUT 888, Kanal ^ 2
|
Wenn schon, dann 2 ^kanal.
So kannst du aber immer nur eine einzelne Leitung ansteuern. Besser ist also:
byte = byte + 2 ^ kanal
bzw.
byte = byte - 2 ^ kanal
und dann
OUT 888, byte
Sollte eigentlich kein Problem sein, denn jeder Programmierer müsste eigentlich das Binärsystem kennen...
Und der Strom sollte übrigens pro Leitung nicht höher sein als 10 mA. |
|
Nach oben |
|
|
Iguan
Anmeldungsdatum: 14.11.2004 Beiträge: 28
|
Verfasst am: 21.11.2004, 14:27 Titel: |
|
|
Danke!!! jetzt klappts! |
|
Nach oben |
|
|
|