Autor | Thema |
---|---|
Hansi
Epoxy-Meister Registriert seit: Sep 2004 Wohnort: Braunschweig Verein: Beiträge: 301 Status: Offline |
Beitrag 90917
, miniprojekte
[03. Dezember 2005 um 19:24]
Hallo
Was uns fehlt ist eine kleine Ecke, in der wir kleine Programme oder Teile von Programmen austauschen. Dadurch lernt man andere Ideen kennen und verbessert die eigenen Programmierkenntnisse. Lange geredet, kurzum getan. Hier mein erster Beitrag: ' Das Ticker Programm ' von Hans-Juergen Sasse ' 3.12.2005 19:16 ' Version 1.00 ' Darf frei verwendet werden. ' Port A Dim Rot As Byte Dim Gelb As Byte Dim Gruen As Byte Rot = 32 Gelb = 64 Gruen = 128 ' Ausgabebits festlegen Ddra = Ddra Or Rot Ddra = Ddra Or Gelb Ddra = Ddra Or Gruen ' PortB Dim Speaker As Byte Speaker = 8 Ddrb = Ddrb Or Speaker Dim Wartezeit As Word Dim Schneller As Bit Dim Delta As Word Wartezeit = 500 Schneller = 1 Do Porta = Porta Or Rot Waitms Wartezeit Porta = Porta Xor Rot Porta = Porta Or Gelb Waitms Wartezeit Porta = Porta Xor Gelb Porta = Porta Or Gruen Waitms Wartezeit Porta = Porta Xor Gruen Portb = Portb Or Speaker Waitms 1 Portb = Portb Xor Speaker If Schneller = 1 And Wartezeit > 200 Then Schneller = 0 If Schneller <> 1 And Wartezeit < 1 Then Schneller = 1 Delta = Wartezeit \ 10 If Delta = 0 Then Delta = 1 Schneller = 1 End If If Schneller = 1 Then Wartezeit = Wartezeit + Delta Else Wartezeit = Wartezeit - Delta Loop End 'end program CharlyMai, falls nicht erwünscht, oder falsche Ecke, löschen oder verschieben. Wo sind die Leerzeichen am Anfang? Kann man sie erzwingen? Geändert von Hansi am 03. Dezember 2005 um 19:25 Von uns allen bleibt nur Asche über. Ein Beitrag von Hans-Jürgen Sasse |
CharlyMai
Foren-Prediger
Registriert seit: Mär 2005 Wohnort: Fuhrberg Verein: SOLARIS-RMB e.V. (P2;T2) / AGM / TRA#21598 Beiträge: 1977 Status: Offline |
Beitrag 90919
[03. Dezember 2005 um 19:53]
Hi Freaks ....
Alsoooo, es bereitet mir schon lange Bauchschmerzen .... Es ist eine sehr gute Idee, sich hier mit der Programmierung anderer auseinanderzusetzen !!! Das Problem ist der unterschiedliche Wissenstand für mich aus Methodischer und Didaktischer Sicht ... Alsooo Codeschnipsel sind gerne gesehen !!! Für Befehle die im Kusteil selber noch nicht behandelt worden sind, gilt : Es kommt alles noch !!! Also, nicht fragen -.... Was zur Hölle macht der Befehl ...- sondern geduldig im Kurs mitarbeiten .... vielen Dank ... Pierre •"Der Glaube an eine bestimmte Idee gibt dem Forscher den Rückhalt für seine Arbeit. Ohne diesen Glauben wäre er verloren in einem Meer von Zweifeln und halbgültigen Beweisen." Konrad Zuse •Konstruiere ein System, das selbst ein Irrer anwenden kann, und so wird es auch nur ein Irrer anwenden wollen. SOLARIS-RMB e.V. AGM |
Hansi
Epoxy-Meister Registriert seit: Sep 2004 Wohnort: Braunschweig Verein: Beiträge: 301 Status: Offline |
Beitrag 92095
, Ticker2
[19. Dezember 2005 um 14:42]
Hier eine Version mit LCD und Tasten
Einfach ein-copieren und sich erfreuen.... ' Das Ticker2 Programm ' von Hans-Juergen Sasse ' 19.12.2005 14:15 ' Version 1.00 ' Darf frei verwendet werden. ' Port A Dim Rot As Byte Dim Gelb As Byte Dim Gruen As Byte Rot = 32 Gelb = 64 Gruen = 128 ' Ausgabebits festlegen Ddra = Ddra Or Rot Ddra = Ddra Or Gelb Ddra = Ddra Or Gruen ' PortB Dim Speaker As Byte Speaker = 8 Ddrb = Ddrb Or Speaker ' PortD Dim T1 As Byte Dim T2 As Byte T1 = 64 T2 = 128 ' Eingabebits festlegen Ddrd = Ddrd Xor T1 Ddrd = Ddrd Xor T2 ' Pullup festlegen Portd = Portd Or T1 Portd = Portd Or T2 ' Alles für LCD Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portb.4 , Rs = Portb.5 ', Rw = Portb.6 Ddrb = Ddrb Or &B01000000 Reset Portb.6 Initlcd Cls ' Andere Variablen Dim Wartezeit As Word Dim Schneller As Bit Dim Delta As Word Dim Links As Bit Wartezeit = 500 Schneller = 1 Links = 0 ' Und es geht los Lcd "Hallo" Do If Pind.7 = 0 Then Links = 1 End If If Pind.6 = 0 Then Links = 0 End If If Links = 0 Then Shiftlcd Right Porta = Porta Or Gruen Waitms Wartezeit Porta = Porta Xor Gruen Porta = Porta Or Gelb Waitms Wartezeit Porta = Porta Xor Gelb Porta = Porta Or Rot Waitms Wartezeit Porta = Porta Xor Rot Else Shiftlcd Left Porta = Porta Or Rot Waitms Wartezeit Porta = Porta Xor Rot Porta = Porta Or Gelb Waitms Wartezeit Porta = Porta Xor Gelb Porta = Porta Or Gruen Waitms Wartezeit Porta = Porta Xor Gruen End If Portb = Portb Or Speaker Waitms 1 Portb = Portb Xor Speaker If Schneller = 1 And Wartezeit > 200 Then Schneller = 0 If Schneller <> 1 And Wartezeit < 1 Then Schneller = 1 Delta = Wartezeit \ 10 If Delta = 0 Then Delta = 1 Schneller = 1 End If If Schneller = 1 Then Wartezeit = Wartezeit + Delta Else Wartezeit = Wartezeit - Delta Loop End 'end program Von uns allen bleibt nur Asche über. Ein Beitrag von Hans-Jürgen Sasse |
hybrid
SP-Schnüffler Registriert seit: Mai 2005 Wohnort: Verein: Beiträge: 675 Status: Offline |
Beitrag 92109
[19. Dezember 2005 um 16:28]
Ääähm,
als Nicht BASICer fallen mir da zwei Sachen auf: If Schneller = 1 And Wartezeit > 200 Then Schneller = 0 If Schneller <> 1 And Wartezeit < 1 Then Schneller = 1 Im ersten if wird 'Schneller' auf 0 gesetzt, daher wird der Teil im zweiten if unabhängig von 'Schneller' ausgeführt. Delta = Wartezeit \ 10 Ist das wirklich legales Basic? Sollte es nicht Delta = Wartezeit / 10 heißen? Grüße Malte Geändert von hybrid am 19. Dezember 2005 um 16:28 |
Hansi
Epoxy-Meister Registriert seit: Sep 2004 Wohnort: Braunschweig Verein: Beiträge: 301 Status: Offline |
Beitrag 92111
[19. Dezember 2005 um 16:38]
Die Sprachen sind halt unterschiedlich. Du hast den BASCOM-AVR? Egal, es gehen auch andere BASIC Interpreter und Compiler. Schau einfach in der Hilfe nach.
= ist Zuweisung und Vergleich. Man kann nicht eingebettet in einem Statement eine Zuweisung angeben. (a la C) \ ist Ganzzahldivision Von uns allen bleibt nur Asche über. Ein Beitrag von Hans-Jürgen Sasse |
Reinhard
Überflieger Registriert seit: Sep 2003 Wohnort: Österreich Verein: TRA #10691, AGM Beiträge: 1187 Status: Offline |
Beitrag 92112
[19. Dezember 2005 um 16:50]
Hi,
Besser lesbar ist es so: If (Schneller = 1 And Wartezeit > 200) Then Schneller = 0 Schneller wird erst dann wieder 1 wenn die Wartezeit kleiner 1 geworden ist, was ja voraussetzt dass Schneller 0 wird und die übergeordnete Schleife 200 mal durchlaufen wird. Ist If (Wartezeit > 200) Then Schneller = 0 If (Wartezeit < 1) Then Schneller = 1 alleine nicht ausreichend? Gruß Reinhard |
Hansi
Epoxy-Meister Registriert seit: Sep 2004 Wohnort: Braunschweig Verein: Beiträge: 301 Status: Offline |
Beitrag 92114
[19. Dezember 2005 um 17:54]
Lesbarkeit muss jeder selber wissen.
Besser wäre: (Schneller = 1) And (Wartezeit > 200) Damit ist die Reihenfolge der Auswertung sichtbar festgelegt. Obs ausreicht? Probiers aus. Sieht erst einmal so aus. Die Schleife wird übrigens nicht 200mal durchlaufen. Der Zuwachs ist nicht linear. Siehe: Delta = Wartezeit \ 10 Von uns allen bleibt nur Asche über. Ein Beitrag von Hans-Jürgen Sasse |
hybrid
SP-Schnüffler Registriert seit: Mai 2005 Wohnort: Verein: Beiträge: 675 Status: Offline |
Beitrag 92126
[19. Dezember 2005 um 19:35]
Zitat: Alles klar, wieder was gelernt! Grüße Malte |
McGuyver
Raketenbauer Registriert seit: Sep 2005 Wohnort: Köln-Bonn Verein: Beiträge: 189 Status: Offline |
Beitrag 93316
[10. Januar 2006 um 13:52]
Zitat: Wie wäre es mit dem Archiv? Greetz, Thomas "Ich denke gerne an die Chance einer Möglichkeit" Manntragend ins LEO - mit Pertinax und Balsa! |
Stefan Wimmer
Grand Master of Rocketry
Registriert seit: Aug 2000 Wohnort: Berlin Verein: Deutsche Experimental Raketen Arbeitsgruppe (DERA) Beiträge: 2398 Status: Offline |
Beitrag 93356
[10. Januar 2006 um 20:57]
...aber nicht gleich!
In's Archiv kommen die Teile erst, wenn sie hier ausdiskutiert und für gut befunden wurden. Und dann nur als Quintessenz, denn man will dort ja Informationen finden und nicht durch alte Diskussionen waten. Geändert von Stefan Wimmer am 10. Januar 2006 um 20:57 It's the Government - it doesn't have to make sense! (B. Kaplow in r.m.r) |