Forum: Mikrocontroller und Digitale Elektronik Bascom: Ports in einer Schleife ansprechen?!


von Merlin (Gast)


Lesenswert?

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

von uwe2 (Gast)


Lesenswert?

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

von STK500-Besitzer (Gast)


Lesenswert?

>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.

von Merlin (Gast)


Lesenswert?

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

von Diensthabender Troll (Gast)


Lesenswert?

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.

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
Noch kein Account? Hier anmelden.