Du kannst keine neue Antwort schreiben
Seiten (2): [1] 2 »

Autor Thema 
Hansi

Epoxy-Meister

Hansi

Registriert seit: Sep 2004

Wohnort: Braunschweig

Verein:

Beiträge: 301

Status: Offline

Beitrag 90917 , miniprojekte [Alter Beitrag03. Dezember 2005 um 19:24]

[Melden] Profil von Hansi anzeigen    Hansi eine private Nachricht schicken   Besuche Hansi's Homepage    Mehr Beiträge von Hansi finden

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


Administrator

CharlyMai

Registriert seit: Mär 2005

Wohnort: Hannover

Verein: SOLARIS-RMB e.V. (P2;T2) / AGM / TRA#21598

Beiträge: 1970

Status: Offline

Beitrag 90919 [Alter Beitrag03. Dezember 2005 um 19:53]

[Melden] Profil von CharlyMai anzeigen    CharlyMai eine private Nachricht schicken   Besuche CharlyMai's Homepage    Mehr Beiträge von CharlyMai finden

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

Hansi

Registriert seit: Sep 2004

Wohnort: Braunschweig

Verein:

Beiträge: 301

Status: Offline

Beitrag 92095 , Ticker2 [Alter Beitrag19. Dezember 2005 um 14:42]

[Melden] Profil von Hansi anzeigen    Hansi eine private Nachricht schicken   Besuche Hansi's Homepage    Mehr Beiträge von Hansi finden

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

hybrid

Registriert seit: Mai 2005

Wohnort:

Verein:

Beiträge: 675

Status: Offline

Beitrag 92109 [Alter Beitrag19. Dezember 2005 um 16:28]

[Melden] Profil von hybrid anzeigen    hybrid eine private Nachricht schicken   Besuche hybrid's Homepage    Mehr Beiträge von hybrid finden

Äää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

Hansi

Registriert seit: Sep 2004

Wohnort: Braunschweig

Verein:

Beiträge: 301

Status: Offline

Beitrag 92111 [Alter Beitrag19. Dezember 2005 um 16:38]

[Melden] Profil von Hansi anzeigen    Hansi eine private Nachricht schicken   Besuche Hansi's Homepage    Mehr Beiträge von Hansi finden

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

Reinhard

Registriert seit: Sep 2003

Wohnort: Österreich

Verein: TRA #10691, AGM

Beiträge: 1186

Status: Offline

Beitrag 92112 [Alter Beitrag19. Dezember 2005 um 16:50]

[Melden] Profil von Reinhard anzeigen    Reinhard eine private Nachricht schicken   Besuche Reinhard's Homepage    Mehr Beiträge von Reinhard finden

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

Hansi

Registriert seit: Sep 2004

Wohnort: Braunschweig

Verein:

Beiträge: 301

Status: Offline

Beitrag 92114 [Alter Beitrag19. Dezember 2005 um 17:54]

[Melden] Profil von Hansi anzeigen    Hansi eine private Nachricht schicken   Besuche Hansi's Homepage    Mehr Beiträge von Hansi finden

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

hybrid

Registriert seit: Mai 2005

Wohnort:

Verein:

Beiträge: 675

Status: Offline

Beitrag 92126 [Alter Beitrag19. Dezember 2005 um 19:35]

[Melden] Profil von hybrid anzeigen    hybrid eine private Nachricht schicken   Besuche hybrid's Homepage    Mehr Beiträge von hybrid finden

Zitat:
\ ist Ganzzahldivision


Alles klar, wieder was gelernt!
Grüße
Malte

McGuyver

Raketenbauer

McGuyver

Registriert seit: Sep 2005

Wohnort: Köln-Bonn

Verein:

Beiträge: 189

Status: Offline

Beitrag 93316 [Alter Beitrag10. Januar 2006 um 13:52]

[Melden] Profil von McGuyver anzeigen    McGuyver eine private Nachricht schicken   McGuyver besitzt keine Homepage    Mehr Beiträge von McGuyver finden

Zitat:
Original geschrieben von Hansi


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.





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


Moderator

Stefan Wimmer

Registriert seit: Aug 2000

Wohnort: Berlin

Verein: Deutsche Experimental Raketen Arbeitsgruppe (DERA)

Beiträge: 2398

Status: Offline

Beitrag 93356 [Alter Beitrag10. Januar 2006 um 20:57]

[Melden] Profil von Stefan Wimmer anzeigen    Stefan Wimmer eine private Nachricht schicken   Besuche Stefan Wimmer's Homepage    Mehr Beiträge von Stefan Wimmer finden

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

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)
Seiten (2): [1] 2 »
[Zurück zum Anfang]
Du kannst keine neue Antwort schreiben