Forum: Mikrocontroller und Digitale Elektronik Bascom Ausgänge zusammenfassen


von Marcel P. (Firma: Mapi Modellbau) (mapi)


Lesenswert?

Hallo an alle,

ich beschäftige mich seit langer Zeit wieder mit einfachen Programmen in 
Bascom.
Wie kann ich die Schreibweise des folgenden Programms vereinfachen und 
verbessern. Es handel sich um einen lauflicht Schriftzug mit insgesammt 
11 Kanälen. Die 11 Kanäle sind schon definiert aber noch nicht komplett 
in den Programmablauf eingepasst.

Ich habe auch mit dem befahl "Shift" experimentiert aber habe dabei das 
Problem, das ich vom PortB nicht alles als Ausgang schalten kann. Daher 
bin ich mir nicht sicher wie ich diese zusammenfassen kann.

Ich würde mich über hilfreiche Tips von den Bascom Profis freuen für die 
diese Aufgabe sicherlich ein klacks ist ;-)

Hier mal der Ablauf.

$regfile = "attiny24.dat"
$crystal = 100000
Config Porta = Output
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.3 = Output
$swstack = 20
Dim Zaehler As Word



Led1 Alias Porta.0
Led2 Alias Porta.1
Led3 Alias Porta.2
Led4 Alias Porta.3
Led5 Alias Porta.4
Led6 Alias Porta.5
Led7 Alias Porta.6
Led8 Alias Porta.7
Led9 Alias Portb.0
Led10 Alias Portb.1
Led11 Alias Portb.3





Do




For Zaehler = 1 To 5

Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 0

Led1 = 1
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 0

Wait 3

Led1 = 0
Led2 = 1
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 0

Wait 3

Led1 = 0
Led2 = 0
Led3 = 1
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 0

Wait 3
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 1
Led5 = 0
Led6 = 0
Led7 = 0

Wait 3
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 1
Led6 = 0
Led7 = 0

Wait 3
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 1
Led7 = 0

Wait 3
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 1

Wait 3
Led1 = 1
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 1

Wait 3
Led1 = 0
Led2 = 1
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 1

Wait 3
Led1 = 0
Led2 = 0
Led3 = 1
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 1

Wait 3
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 1
Led5 = 0
Led6 = 0
Led7 = 1

Wait 3
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 1
Led6 = 0
Led7 = 1

Wait 3
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 1
Led7 = 1

Wait 3


Led1 = 1
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 1
Led7 = 1

Wait 3
Led1 = 0
Led2 = 1
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 1
Led7 = 1

Wait 3
Led1 = 0
Led2 = 0
Led3 = 1
Led4 = 0
Led5 = 0
Led6 = 1
Led7 = 1

Wait 3


Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 1
Led5 = 0
Led6 = 1
Led7 = 1

Wait 3
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 1
Led6 = 1
Led7 = 1

Wait 3


Led1 = 1
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 1
Led6 = 1
Led7 = 1


Wait 2
Led1 = 0
Led2 = 1
Led3 = 0
Led4 = 0
Led5 = 1
Led6 = 1
Led7 = 1

Wait 3
Led1 = 0
Led2 = 0
Led3 = 1
Led4 = 0
Led5 = 1
Led6 = 1
Led7 = 1

Wait 3
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1



Wait 3
Led1 = 1
Led2 = 0
Led3 = 0
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1

Wait 3
Led1 = 0
Led2 = 1
Led3 = 0
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1

Wait 3
Led1 = 0
Led2 = 0
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1



Wait 3
Led1 = 1
Led2 = 0
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1

Wait 3
Led1 = 0
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1

Wait 3
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1


Wait 2
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1

Wait 2
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 0

Wait 2
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1

Wait 2
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 0

Wait 2
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1

Wait 2
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 0

Wait 2
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1

Wait 2
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 0

Wait 2
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1

Wait 2
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 0

Next Zaehler

For Zaehler = 1 To 25

Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 0
Wait 1


Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1
Wait 1

Next Zaehler

For Zaehler = 1 To 1

Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1

Wait 100

Next Zaehler


Loop
End

von xxx (Gast)


Lesenswert?

BASCOM-Profis gibt es auf

https://bascomforum.de/

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Marcel P. schrieb:
> verbessern. Es handel sich um einen lauflicht Schriftzug mit insgesammt
> 11 Kanälen. Die 11 Kanäle sind schon definiert aber noch nicht komplett
> in den Programmablauf eingepasst.

 Das ist ja gar kein Programm, das ist eine Katastrophe.

 Hier, aus dem Kopf, nicht getestet, sollte aber alle LEDs nach links
 reinschieben.
1
Dim Tmpa As Byte , Tmpb As Byte
2
Dim Xx As Byte , Yy As Byte
3
4
Tmpb = 0
5
For Yy = 6 To 0 Step -1
6
  Tmpa = 1
7
8
  For Xx = 0 To Yy
9
    Porta = Tmpa Or Tmpb
10
    Shift Tmpa , Left , 1
11
    Wait 1
12
  Next
13
  Tmpb = Tmpb Or Tmpa
14
  Porta = Tmpb
15
  Wait 1
16
Next
17
Porta = 255
18
Wait 5
19
Porta = 0

von Allu (Gast)


Lesenswert?

Marcel P. schrieb:
> lauflicht Schriftzug mit insgesammt
> 11 Kanälen

Kleinigkeit am Rande, zum Attiny24:

PB3 ist auch der Reseteingang und wird zum Chip-Programmierung benötigt, 
fällt also weg.

Um auf 11 Ausgänge zu kommen, ist kein Quarz möglich.

Marcel P. schrieb:
> Config Portb.3 = Output

wird zu :
Config Portb.2 = Output

von Route_66 H. (route_66)


Lesenswert?

Forenregeln lesen UND BEACHTEN!
> Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Zum Thema: so schreibt man keine Software, nicht einmal in BASIC.
Da stimme ich
Marc V. schrieb:
> Das ist ja gar kein Programm, das ist eine Katastrophe.
voll zu.

Du musst die Aktionen aufteilen und zusammenfassen.
Eine einzige Routine steuert nach einem übergebenen Muster die LEDs an.

SUB setLEDs(muster)
...
END SUB

Eine andere holt sich aus einer Tabelle nacheinander die Muster oder 
errechnet diese(schieben, rotieren...).
Eine weitere sorgt für den zeitlichen Ablauf... usw. usw.

von allu (Gast)


Lesenswert?

Naja, er sagt:

Marcel P. schrieb:
> ich beschäftige mich seit langer Zeit wieder mit einfachen Programmen in
> Bascom.
> Wie kann ich die Schreibweise des folgenden Programms vereinfachen und
> verbessern.

Marc V. schrieb:
> Das ist ja gar kein Programm, das ist eine Katastrophe.

Marc V. schrieb:
> Wait 1

Marc V. schrieb:
> Porta = 255
> Wait 5
> Porta = 0

Waits mit 1 und 5 Sekunden in einem Profi-Programm und keine 
aussagekräftigen Labels, naja.

Sein Programm kann im Gegensatz zu deinem Programm beliebige Muster 
ausgeben.

Ich bin für helfen und nicht für niedermachen.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

allu schrieb:
> Waits mit 1 und 5 Sekunden in einem Profi-Programm und keine
> aussagekräftigen Labels, naja.

 Das hat der TO in seinem "Programm".
 Und was suchen Labels in einem Profi-Programm ?
 Vielleicht hast du in deinem Unwissen Variablennamen gemeint ?


> Sein Programm kann im Gegensatz zu deinem Programm beliebige Muster
> ausgeben.

 Dass du nicht imstande bist, weder sein Versuch noch meinen Code
 zu verstehen, zeugt von deinen "Kenntnissen".
 Sein Programm ist gar kein Programm, es sind bloss aneindergereihte
 Pin An und Aus Befehle.

 Das, was ich ihm geschickt habe ist kein vollständiges Programm, nur
 ein Vorschlag für eine Ausgaberoutine.
 Der TO soll nur sehen wie so etwas viel einfacher geht.
 Mit einer Abfrage am Anfang auf Rechtsshift oder Leftshift können die
 LEDs sowohl rein als auch genauso gut wieder rausgeschoben werden.


> Ich bin für helfen und nicht für niedermachen.

 Sicher, dein hilfreicher Beitrag und dein fachliches Wissen hat ihm
 unheimlich geholfen...

von allu (Gast)


Lesenswert?

Marc V. schrieb:
> Sicher, dein hilfreicher Beitrag und dein fachliches Wissen hat ihm
>  unheimlich geholfen...

Ja, meine ich ...

von allu (Gast)


Lesenswert?

allu schrieb:

> und keine
> aussagekräftigen Labels

Marc V. schrieb:
> Und was suchen Labels in einem Profi-Programm ?
>  Vielleicht hast du in deinem Unwissen Variablennamen gemeint ?

Bitte erkläre mir Unwissenden den Unterschied, danke.

von ohnesorg (Gast)


Lesenswert?

allu schrieb:
> allu schrieb:
>
>> und keine
>> aussagekräftigen Labels
>
> Marc V. schrieb:
>> Und was suchen Labels in einem Profi-Programm ?
>>  Vielleicht hast du in deinem Unwissen Variablennamen gemeint ?
>
> Bitte erkläre mir Unwissenden den Unterschied, danke.

Kampf der Giganten.

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.