Hallo, nachdem ich mich schon mit meiner Frage im falschen Forum gemeldet habe, dann hier nochmal meine Frage: ich habe mit einem 8515 eine Relaisschaltung aufgebaut mit der ich 8 Tasten an Portd abfrage und den entsprechenden Pin an Portd setze und mit der selben Taste rücksetze. Soweit so gut und läuft. Nun möchte ich aber die Relais auch mit einer Funkfernsteuerung ein/ausschlten und wollte ein Programm schreiben dass im Prinzip das gleiche macht, Tastefunk - Relais x und das Ganze im gleichen Professor mit einem DIP-Schalter. Also DIP-Schalter an Porta und Binär einstellen damit ich praktisch 15 Unterprogramme anspringen könnte. Nur kann ich den DIP-Schalter nicht einlesen. Wenn ich jeden einezeln einstelle 0001 oder 0010 oder 0100 oder 1000 geht's, nur wenn's dann 0011 sein soll geht's immer in die falsche Richtung. Also wie muss das Programm aussehen damit dass geht. Ich hab BASCOM AVR 1.1.7.7 undalles andere läutf mit meinen Basicprogrammen. Gruss PiCus
Hi, frag nicht einzeln die Eingange ab, sondern les den Port ein und maskier die anderen Bits aus. Danach eine switch case Abfrage und fertig. Mfg Dirk
Dann poste doch mal Deinen Code - zumindest den Teil, in dem Du den Dip-Schalter versuchst einzulesen.
Hier ein Teil des Codes
'-----------------------------------------
'----- Menu Auswahl
'-----------------------------------------
'Upperline
Lcd "Auswahl:"
Locate 2 , 6
Lcd "Menue"
Wait 1 :
Menue:
Do
Debounce Pina.0 , 0 , Menue
Debounce Pina.1 , 0 , Rast_menue
Debounce Pina.2 , 0 , Tast_menue
'Debounce Pina.3 , 0 , Rast_u_Tast
Loop
'Goto Menue
ich sollte noch hinzu fügen, ich möchte einen HT624 Decoder anschiessen
der auch seine Ausgänge Binär ausgibt, um damit dann 16 "Befehle" o.ä.
auszugeben.
Da Menu sollte praktisch beim Einschalten oder Reset abgearbeitet
werden, um das dazu gehörende Programm zu starten.
Also DIP-Schalter Einstellen, Spannung anlegen und das eingestellte
Programm starten.
Debounce ist zum Lesen eines DIP-Schalters nicht wirklich nötig - der wird ja nicht permanent umgeschaltet, sondern liefert feste Pegel.
Danke, für eure Gedanken aber der Tip von Dirk hat gefruchtet,
guckst du
Do
Cls
Switch = Pina
Select Case Switch
Case &B11111110 : Lcd "Relais 1"
Case &B11111101 : Lcd "Relais 2"
Case &B11111100 : Lcd "Relais 3"
Case &B11111011 : Lcd "Relais 4"
Case &B11111010 : Lcd "Relais 5"
Case &B11111001 : Lcd "Relais 6"
Case &B11111000 : Lcd "Relais 7"
Case &B11110111 : Lcd "Relais 8"
End Select
Wait 1
Loop
das LCD is nur zum Kontollieren. Manchmal braucht man einen leichten
Schag auf den Hinterkopf.
Bis zum nächsten mal. Ich versuche nun das Projekt mit dem RC5 Code zu
erweitern, kann sein dass ich dann wieder mal hilfe brauch, denn alles
was ich bbis jetzt an Code gefunden und probiert habe hat bei nicht
funktioniert.
Also schönen Feierabend und bis dann
PiCus
PS.: bin immer per emil zu erreichen.
Hi, die Bascomfunktion GETRC5 funktioniert sehr simpel (leider ohne Togglebit). Im Bascom Ordner befindet sich eine Demo. Hardwarebeschaltung findest du in der Bascomhilfe. Es liegt zu 99% meistens daran das die FB kein RC5 sendet. Nimm eine lernbare Fernbedienung. Die Zuordnungtabelle koenntest du dann auch fuer die RC5 FB nehmen. Mfg Dirk
@PiCUS: Dein Programm funktioniert nur solange, wie Du die anderen Portbits nicht anderweitig benutzt / beschaltest. Besser Du maskierst die DIP-Schalter-Pins aus, wie schon vorgeschlagen. Stefan
@Stefan: Ich brauche momentan den Port nur für den DIP-SChalter. Meinst mit ausmaskieren Portx = &B00001111 ? @Dirk: ich hab schon so manches gelesen über den RC5 Code und habe auch ein paar beispiele getestet mit dem 90S1200, 90S2313, 90S8515 aber keine hat gefunzt, könnte an der Sony FB gelegen haben, die soll ein aunderes Format haben. Mal noch ne Frage, wie oft kann ich eigendlich einen Professor programmieren bis er den Geist aufgibt. Auf meinem Testboard habe ich einen 8515 der nun so ca 500 programmierungen hinter sich hat. Wie macht das sich bemerkbar wenn er nicht mehr will ?? ok dann bis nachdem Wochenende, denn dass gehört meiner Familie.
Ausmaskieren ist nicht die Zuweisung eines Wertes, sondern die logische
verANDung eines Wertes.
In Deinem Beispiel also
Switch = Pina AND &B1111
Select Case Switch
Case &B1110 : Lcd "Relais 1"
Case &B1101 : Lcd "Relais 2"
... etc
@Picus: >Ich brauche momentan den Port nur für den DIP-SChalter. Meinst mit >ausmaskieren Portx = &B00001111 ? Das mag momentan ok sein. Auf lange Sicht kann daraus aber ein versteckter Bug werden, wenn Du irgendwann die restlichen Pins noch verwendest, bei der Erweiterung in einem Jahr oder auch beim nächsten Projekt. Dann wird die Fehlersuche umso komplizierter: wer sucht schon in einem Sourcecode, der jahrelang problemlos funktioniert hat? So wie es Rufus beschrieben hat, kannst Du den Code dagegen problemlos wiederverwenden. Und nebenbei ist er auch besser lesbar, weil in der case-Anweisung nur die Bits stehen, die auch "echte" DIL-Schalter sind. Viele Grüße, Stefan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.