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.