Bascom: Ports in einer Schleife ansprechen?!

Gast #1377788
Hallo Forum!
Ich suche eine Funktion die es mir (in Bascom) ermöglicht Ports von 
PortC und PortD eines Megas32 in einer Schleife anzusprechen (1/0 
schalten).
Ich hab wirklich überall gesucht aber nichts gefunden!
Würde ich nur einen Port benutzten ist das einfach:
z.B.

i=0
Do
i = i+1
PortC.i = 1
loop until i<7

kann ich die Ports irgendwie bennenen oder in ein Art Array einordnen??
Etwa so? (ist Schwachsinn!) :
A.1=PortC.1
A.2=PortD.5

Wäre echt genial wenn es sowas geben würde!!
Sonst hab ich ein Problem und kann nur 8 stat 10 LEDs steuern !
(SOll sowas werden wie die LED-Schriftzug Uhr von Elektor aber ohne 
teure LED-Treiber :) )
Viele Grüße
Merlin
Gast #1377899
So direkt ist mir auch nichts bekannt aber probiers doch mal so:


Dim Leds (10) as bit


i=0
Do
i = i+1
Leds(i) = 1
gosub Set_Port
loop until i<10


Set_Port:

portc.1=leds(1)
portd.5=leds(2)
...usw.

return
Gast #1378016
>SOll sowas werden wie die LED-Schriftzug Uhr von Elektor

Die Uhr kenne ich nicht.

>Ich suche eine Funktion die es mir (in Bascom) ermöglicht Ports von
>PortC und PortD eines Megas32 in einer Schleife anzusprechen (1/0
>schalten).

Sehe ich es richtig, dass du nur ein Bit schieben willst?
Deine Funktion würde die LEDs der Reihe nach anschalten (und nicht 
wieder aus).
Sowas geht ganz einfach, indem man ein Byte (bzw. in deinem Fall 2) 
entweder mehrfach/in einer Schleife je nach Richtung mit 2 multipliziert 
oder durch 2 dividiert.
In dem Byte muss dann entweder 1 oder 128 zu Beginn der Schleife stehen.
Das ganze Byte wird dann am Port ausgeben.
Gast #1378519
Danke erstmal für die Antworten!
Die Idee ist eigentlich ganz gut nur leider sehr langsam...
Ich will eigentlich bestimmte Muster (zb. 01011101 011 ) an die Ports 
legen nur das ich eben leider nich nur einen Port benutze sondern portc 
und ein paar Ausgänge von portD.
Das bit schieben von mir war nur ein Beispiel für mein Problem...
Sowas würde mein Problem lösen: funktioniert nur nicht..
Schwachsinn:
An.1 alias Portc.1
An.2 alias Portc.3
An.3 alias PortD.1
do
i = i+1
An.i=1
loop until i<3

(nur das nochwas dazu kommt was entscheidet ob zb. An.1 1 sein soll um 
Muster zu erhalten)
Anwendung ist eine LED-Reihe die sich dreht und durch die Trägheit des 
Auges Schriftzüge erzeugt.
Viele Grüße
Merlin
Gast #1378553
man kann ports auch im ganzen einlesen/ansprechen, es muss nicht immer 
bitweise sein. und ehe du unverstanden mit overlay & co experimentierst, 
solltest du dir mal die moeglichkeiten anschaun, lesend auf 
programmspeicher zuzugreifen (peek, restore, data z.b.). damit kannst du 
sehr effektiv vordefinierte bitmuster an ports ausgeben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.