Hallo, Ich suche nach einer Möglichkeit mit Bascom einen "halben" Port zu beschreiben und auszugeben. Hintergrund: ATMEGA32 alle Ports voll belegt Port A.4-7 = Nixie BCD Min1 Port A.0-3 = Nixie BCD Min10 Port B.0-3 = Nixie BCD Std1 Port B.4-7 = ISP und ein Piezo und zwei Taster Port C.0-3 = Nixie BCD Std10 Port C.4-7 = Led und DCF Port D.0-3 = LCD Daten Port D.4-7 = LCD Command und weitere Taster Mit der Methode die ich jetzt benutze, überschreibe ich mir immer die vorhandenen Daten im jeweils verbleibenden Nibble: Dim Wert4 As String * 1 Dim Bcd_byte As Byte Bcd_byte = Wert4 Portc = Bcd_byte Hiermit überschreibe ich immer den Zustand der LCD, die auch noch am Port C hängt, usw. Vielleicht hilft ja eine eingebettet ASM Lösung? Jonny
Lese das Port-Register erst aus, lösche die zu ändernden Bits mit einer Und-Verknüpfung und setze die neuen Bits mit Oder oder einer Addition. Und dann das Ganze wieder in den Port schreiben. Uwe
Hallo, vielen Dank für dien Tip. Auf diesem Wege war ich auch schon, aber ohne Erfolg. Leider klappt es aber immer noch nicht so, wie es sollte. Die LED die an PORTC.4 hängt, ist in diese Konstallation tot. Der momentane Code sieht nun so aus: 'Temp ist als byte definiert, wert4 ebenfalls ' Nixie hängen an Portc.0-3, led an Portc.4 Temp = Portc Temp = Temp And $f0 Temp = Temp Or Wert4 Portc = Temp Was ist bei mir der Denkfehler? Jonny
Du bist sicher, dass Wert4 kein String mehr ist, so wie oben angegeben? Wo und wie wird denn Wert4 gesetzt? Gruß Rolf
Temp = Portc sollte das nicht Temp = Pinc heißen? Unterschied PORTC und PINC Ansonsten: eine Schattenvariable für das Port verwenden und nur ausgeben, nie einlesen.
Was mir als erstes auffällt ist, dass du einen Mikrocontroller in deiner Uhr hast und trotzdem BCD-Dekoder benutzt - warum? Deine Lösung scheint okay zu sein (ich programmiere kein BASS-COM), aber statt... Temp = Temp Or Wert4 ...könntest du es mal hiermit versuchen: Temp = Temp Or (Wert4 - 48) Ich gehe nämlich stark davon aus, dass Wert4 ein ASCII string/zeichen ist. Viel spass beim Nixie basteln!
eProfi wrote: > Temp = Portc > > sollte das nicht > > Temp = Pinc > > heißen? > > Unterschied PORTC und PINC > > Ansonsten: eine Schattenvariable für das Port verwenden und nur > ausgeben, nie einlesen. Das ist doch ok, PortC ist ja ein Ausgang und er möchte wissen, wie der gesetzt ist. Also liest er den aktuellen Zustand in die Variable Temp, modifiziert Temp und setzt PortC wieder auf Temp. Temp = Temp And $f0 funktioniert, ich finde aber davon keine Definition. Temp = Temp And &HF0 ist die richtige Schreibweise dafür. Gruß Rolf
Hallo, Nun funktioniert die Ausgabe Routine, aber nur mit Trick 17. Warum ich den Wert Min1 mir 3 subtrahieren muß, (denn nur so läuft es) ist mir völlig unklar..... Siehe Anlage Jonny
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.