mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom: von Variable die letzten 2 Stellen auswerten


Autor: McMurkser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Wie kann ich von einer Variable (Integer) die letzten beiden Stellen
auswerten? z.B.:

If Weg = 1 Then Print "q"
If Weg = 2 Then Print "w"
If Weg = 3 Then Print "e"
If Weg = 4 Then Print "r"
If Weg = 5 Then Print "t"
If Weg = 6 Then Print "z"
If Weg = 7 Then Print "u"
If Weg = 8 Then Print "i"
If Weg = 9 Then Print "o"
If Weg = 10 Then Print "p"  <--- auch wenn Weg in Wirklichkeit 210
ist, soll er, wenn hinten "10" ist, ein "p" printen.


Vielen Dank

McMurkser

Autor: LinkinPark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Dafür gibt es den Right Befehl:
var = RIGHT(var1 ,n )

Auf deinen Fall angewendet:
IrgendeineVariable = Right(Weg, 2)

In der Variable stehen dann nur die letzten beiden Stellen der Variable
Web. Allerdings funktioniert das nur mit einem String so weit ich weis.
Also musst du den Integer erst mit dem Str Befehl in einen String
umwandeln.

Autor: andré (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und bevor du wieder nach Vereinfachungen fragst:

"
If Weg = 1 Then Print "q"
If Weg = 2 Then Print "w"
If Weg = 3 Then Print "e"
If Weg = 4 Then Print "r"
If Weg = 5 Then Print "t"
If Weg = 6 Then Print "z"
If Weg = 7 Then Print "u"
If Weg = 8 Then Print "i"
If Weg = 9 Then Print "o"
"

Sieh dir mal "Data" und "lookupstr" an, die if Anweisungen
verbraten Flash ohne Ende.

mfg

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unter C gibt es eine Division mit Rest (%), damit kann man dann
höherwertige Digits abtrennen.

Um also bei 10, 110, 210 usw. den Vergleich zu machen schreibt man:

if( (Weg % 100) == 10 )


Peter

Autor: andré (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls du trotzdem Bascom benutzen willst:
Die Division mit Rest gibts da auch

ret = var1 MOD var2

Remarks

Ret  The variable that receives the remainder.
var1  The variable to divide.
var2  The divisor.

mfg

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann kein Bascom, aber unter C würde man solche wiederholten
Auswahlen über Zeiger machen.
D.h. man nimmt den Wert als Index, der auf ein bestimmtes Zeichen
innerhalb eines Textfeldes zeigt.
Und dieses Zeichen wird nur mit einer einzigen Anweisung ausgegeben.

Unter C würde das ganze optimiert so aussehen:

char zeichen[] = "qwertzuiop" ;
printf( "%c", zeichen[(Weg % 100)-1] );


Peter

Autor: McMurkser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin.

Vielen herzlichen Dank für eure kompententen Antworten! :)
Wirklich sehr hilfreich, dieses Forum!

@Peter:
Programmierst du in C mit WinAVR? Ich möchte auch mal C ausprobieren.
Hab auch schon in Assembler gecodet aber Bascom geht halt einfach
sauschnell. Dafür braucht es aber viel Flash :(.

cya

McMurkser

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich benutze den WINAVR.

Allerdings bevorzuge ich die Kommandozeile.
Ich habe immer noch den guten alten Norton-Commander in der DOS-Box
laufen und compiliere über meine Batch-Datei.

Zum Programmieren benutze ich den ISP-Port des STK500, bzw. ab Mega8
meinen Bootloader.


Peter

Autor: McMurkser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay

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.