www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom Port Nibble Nixie


Autor: Jonny Roggenbuck (jonnyr)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Uwe Nagel (ulegan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jonny Roggenbuck (jonnyr)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Im forum (for_ro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du bist sicher, dass Wert4 kein String mehr ist, so wie oben angegeben?
Wo und wie wird denn Wert4 gesetzt?

Gruß

Rolf

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Marius S. (lupin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Rolf Im forum (for_ro)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jonny Roggenbuck (jonnyr)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es in Bascom auch einen Debugger?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.