Hi leute ich weis nicht ob ich hir richtig bin aber ich habe ein problem unzwah wie kann ich ein byte in 2 neue byte's splitten geht das oder nur mit string???? DEnn ich habe einen 2 selligen byt und mochte den splitten in 2 weitere oder hat bascom für 7 segment schon was drin bitte um hilfe Mfg Marcel
(nicht "Gast") schrieb: > Du brauchst einen Duden. Das denke ich nicht, die Infos, die er braucht, stehen nicht im Duden. Marcel schrieb: > Hi leute Hi Marcel > ich weis nicht ob ich hir richtig bin Vermutlich schon. > aber ich habe ein problem > unzwah wie kann ich ein byte in 2 neue byte's splitten geht das oder nur > mit string???? Nöö, das geht auch anders. Mit String ist aber nicht die schlechteste Lösung. > DEnn ich habe einen 2 selligen byt und mochte den splitten in 2 weitere Das solltest Du nochmal überdenken, es ist sehr wahrscheinlich, dass Du Dich hier irrst. Da ich das Stichwort "DS1820" gesehen habe, gehe ich davon aus, dass Du einen Integer (16-Bit-Zahl im Zweierkomplement) hast, den Du in einzelne Ziffern zerlegen willst, um diese im Multiplexverfahren auf der Siebensegmentanzeige auszugeben. > oder hat bascom für 7 segment schon was drin bitte um hilfe Nicht dass ich wüsste. Du kannst aber mit DIM Overlay (in Hilfe zu Dim nachschaun) einen String auf den Speicherbereich des Arrays legen. Du wandelst dann jeden Messwert (Integer) in diesen String um, und schon stehen die ASCII-Werte der Ziffern und Zeichen im Array. Aus diesen lassen sich dann in der Multiplexroutine die Ziffern extrahieren, indem man den ASCII-Offset für Ziffern (48) subtrahiert. Die Multiplexroutine würde ich aber nicht mit Wait timen, sondern in einen Timer-Interrupt einbetten. Und vor dem Wechsel des Segmentbitmusters würde ich erstmal alle Stellen dunkel schalten, ansonsten glimmen unbeteiligte Segmente mit. Ich habe mir Deinen Quelltext nur kurz angesehen. Er sieht so aus, als ob er von Dir aus irgendwelchen unverstandenen Beispielen zusammenkopiert wurde. Wenn Du ernsthaft programmieren willst, solltest Du Dir zum Grundsatz machen, keinen fremden unverstandenen Code zu benutzen. Und bitte kommentiere Deinen Code, und zwar in der Sprache, in der Du denkst bzw. überlegst (also in Deutsch, solange Du nicht in Englisch denkst).
Ich bin mir auch nicht sicher, ob es das ist was du suchst. Aber ich geb einfach mal ein Beispiel. Nehmen wir die Zahl 28 Und zwar als Zahl und nicht als String 28 / 10 -> 2 | +-------------+ | v 28 - 2 * 10 -> 8 In Summ wurde die Zahl 28 in die Ziffern 2 und 8 zerlegt. (und die zweite Konstruktion habe ich nur gewählt, weil ich nicht wei´ß, wie die Modulo Operation in BASCOM heißt) 765 765 / 100 -> 7 765 - 7 * 100 -> 65 65 / 10 -> 6 65 - 6 * 10 -> 5 Auch wenn man in BASCOM arbeitet, muss man sich daran gewöhnen, dass es nicht für alles und jedes eine fix&fertige Komponente gibt
Guten Morgen Karl-Heinz, bei Ziffernzerlegung mit Modulo wird es ganz schön rechenintensiv, außerdem müsste man da zuvor den Messwert auf Negativ prüfen und ggf. das Zweierkomplement davon bilden. Das alles ist in der Stringumwandlung bereits drin. Und da man mit Dim ... As Overlay quasi eine Union schaffen kann, stehen die ASCII-Werte des Strings ohne weitere Rechnerei im Array. Wenn das mit den negativen Messwerten nicht wäre, hätte ich die Subtraktionsmethode (Subtraktion in Schleife) vorgeschlagen, die ist auf dem AVR immer noch die schnellste Methode, Zahlen in Ziffern zu zerlegen. Gruß in die Berge.
Kluchscheißer Kluchscheißer schrieb: > Guten Morgen Karl-Heinz, > > bei Ziffernzerlegung mit Modulo wird es ganz schön rechenintensiv, > außerdem müsste man da zuvor den Messwert auf Negativ prüfen und ggf. > das Zweierkomplement davon bilden. Das alles ist in der Stringumwandlung > bereits drin. Ach? Und du denkst, die Umwandlung in einen String kriegst du gratis? Schon mal angesehen, wie diese Umwandlungen in einen String funktionieren? Psst: Die machen genau dasselbe, nur innerhalb der Funktion und zusätzlich kommt dann die ganze Stringverwaltung auch noch dazu. Zudem entsteht das Ergebnis in ASCII und mann es dann erst wieder von ASCII wegholen, damit man es als Index in die Tabelle der Bitmuster für die 7-Segment benutzen kann. Also 'Rechenzeit' ist kein Argument. Und ob das in Summe programmtechnisch einfacher ist? > hätte ich die Subtraktionsmethode (Subtraktion in Schleife) > vorgeschlagen, die ist auf dem AVR immer noch die schnellste > Methode, Zahlen in Ziffern zu zerlegen. Das ist allerdings ein Argument. Negative Zahlen sind hingegen simpel. Ein if, sich merken dass ein - davor muss, und einfach die Zahl positiv machen.
Hier ist ein Experiment mit Siebensegmentanzeige in Bascom: http://www.hanneslux.de/avr/divers/pm24/VM_tn24_1.bas Und hier ist die zugehörige Hardwarebeschreibung: http://www.hanneslux.de/avr/divers/pm24/index.html Nur mal so unverbindlich, zum schaun, wie man es auch machen könnte. ...
Hier ist noch eine Variante von mir, die mit der Stringfunktion arbeitet. MfG Paul
Hallo wie Kluchscheißer schon vermutet hat möchte ich: Da ich das Stichwort "DS1820" gesehen habe, gehe ich davon aus, dass Du einen Integer (16-Bit-Zahl im Zweierkomplement) hast, den Du in einzelne Ziffern zerlegen willst, um diese im Multiplexverfahren auf der Siebensegmentanzeige auszugeben kann mir dabei einer helfen? Mfg Marcel
ich habe meine 7 segment anzeigen Multiplex und ich habe eine 2 setellige zahl vom ds1820 vorliegen und ich wollte jetzt wissen wie ich die auf 2 sieben segment anzeigen bekomme MFG Marcel
Und was an den vorher geposteten Antworten passt dir jetzt nicht, dass du sie nicht zumindest mal ausprobierst?
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.