Bascom Port Nibble Nixie

#1035479
Lesenswert?

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
#1035683
Lesenswert?

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
Persönliche Seite #1036374
Lesenswert?

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!
#1036440
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren