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