Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

LPT1 und OUT 888,2

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Iguan



Anmeldungsdatum: 14.11.2004
Beiträge: 28

BeitragVerfasst am: 18.11.2004, 11:40    Titel: LPT1 und OUT 888,2 Antworten mit Zitat

Hallo QB-junkys zwinkern

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
Benutzer-Profile anzeigen Private Nachricht senden
Markus



Anmeldungsdatum: 16.09.2004
Beiträge: 104
Wohnort: Wien

BeitragVerfasst am: 18.11.2004, 12:18    Titel: Kein Problem. Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 18.11.2004, 12:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Iguan



Anmeldungsdatum: 14.11.2004
Beiträge: 28

BeitragVerfasst am: 18.11.2004, 12:59    Titel: Antworten mit Zitat

Ich brauche lediglich die zwei Pin-Nummern des 25 Poligen D-Substecker, wo ich dann die LED hinlöten muss!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kai Bareis



Anmeldungsdatum: 10.09.2004
Beiträge: 545
Wohnort: Baden Würtemberg

BeitragVerfasst am: 18.11.2004, 17:17    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Iguan



Anmeldungsdatum: 14.11.2004
Beiträge: 28

BeitragVerfasst am: 18.11.2004, 23:07    Titel: Antworten mit Zitat

Danke ihr seid die Besten Zunge rausstrecken !! genau das brauchte ich.. habs endlich hingekriegt lachen

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
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 19.11.2004, 00:04    Titel: Antworten mit Zitat

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, 10:54, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Quark48



Anmeldungsdatum: 16.10.2004
Beiträge: 559
Wohnort: Saltendorf a.d. Naab bzw. Teublitz i.d. Oberpfalz / Bayern

BeitragVerfasst am: 19.11.2004, 18:20    Titel: SO mach´s ich... Antworten mit Zitat

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! lachen

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 lächeln
***
Wenn ein Programm auf nem alten Rechner gut läuft, dann läuft´s auf nem neuen erst recht! happy
Ich habe/hatte keine feste Spange und auch keine Schwester. Der Rest stimmt. Es tut mir leid... :-/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Iguan



Anmeldungsdatum: 14.11.2004
Beiträge: 28

BeitragVerfasst am: 19.11.2004, 19:08    Titel: Antworten mit Zitat

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 weinen missbilligen mit dem Kopf durch die Mauer wollen Kopf schütteln peinlich

jetzt die Frage an die Profis: WESHALB??


mfg


Iguan
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kai Bareis



Anmeldungsdatum: 10.09.2004
Beiträge: 545
Wohnort: Baden Würtemberg

BeitragVerfasst am: 19.11.2004, 21:25    Titel: Antworten mit Zitat

betriebssystem?
_________________
MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 19.11.2004, 23:02    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Iguan



Anmeldungsdatum: 14.11.2004
Beiträge: 28

BeitragVerfasst am: 21.11.2004, 13:27    Titel: Antworten mit Zitat

happy Danke!!! jetzt klappts! happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz