www.mikrocontroller.net

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


Autor: Merlin (Gast)
Datum:

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

Autor: uwe2 (Gast)
Datum:

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

Autor: STK500-Besitzer (Gast)
Datum:

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

Autor: Merlin (Gast)
Datum:

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

Autor: Diensthabender Troll (Gast)
Datum:

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

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.