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
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 |
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
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.
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.
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...
Marc V. schrieb: > Sicher, dein hilfreicher Beitrag und dein fachliches Wissen hat ihm > unheimlich geholfen... Ja, meine ich ...
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.