Hallo also ich möchte folgendes vergleichen und weis nicht wie. deshalb bin ich für jeden Tip dankbar. Vergleich das Bit aaa mit den Wert d aus bb bbbbbbbb 1110daaa wenn gleich dann goto. aaa=Bit0-Bit7 d=1oder0 bb=Zahl von 0-255 dank an alle
Definition: Bit_0 = das ganz rechte bit ... bit_7=das höchstwertigste Bit 1. Du hast ein Bitmuster bbbbbbbb (8 Bit), in dem du feststellen möchtest ob bestimmte Bits einen bestimmten Zustand haben. 2. du hast ein Zähler aaa, welcher Werte zwischen 0 .. 7 (gleich: Bitposition 0..7) annehmen kann. Das Bit aus "bbbbbbbb" soll an der Zählerposition "aaa" verglichen werden ob es identisch ist zum Wert von "d". Fals ja: Tue dies, falls nein: tue jenes Frage 1: wielviele verschiedene Situationen werden mit "tue_dies bzw. tue_jenes" abgebildet? Gibt es nur 2 Alternativen, oder wird es mehrere geben? Frage 2: In welcher Hochsprache, Pseudo-Hochsprache, Assemblersprache hättest du es denn gerne ?
Hallo. es gibt nur zwei antworten (ja oder nein) Fals ja: Tue dies falls nein: tue jenes ich schreibe in Assemblersprache danke schon mal!!!
Ich noch mal hier noch mal eine andere beschreibung meines Anliegens. Vergleich das Bit aaa mit den Wert d aus bb bbbbbbbb 1110daaa wenn gleich dann goto lese welches bit in aaa gemeint ist dann schaue in d ob das der wert 0 oder 1 und nun gehe an das Bit in bbbbbbbb und vergleiche auch den Wert d also ob 0 oder 1 ist.
Deine Langbeschreibung deines 2. Postings beschreibt ja genau, was du machen sollst (und ist auch nix anderes wie das im ersten Posting benannte, also insofern sind die Beschreibungen konsistent. Die Aufgabe ist schon soweit klar, blos wenn du_ nicht weist was _du für einen Prozessor benutzt dann wird dir keiner helfen können ...... "ich schreibe in Assemblersprache" Dir ist aber schon bekannt, daß es mehr wie einen Prozessor gibt? Möchtest du nun Assembler für eine Cray XMP, oder für HAL 2000 aus "Odyssee im Weltraum"? Ich hätt dann auch noch Assembler vom R2D2, aber der ist in Klingonisch geschrieben und nur mit Klingonen-Zeichensatz auf dem PC lesbar
ich spreche kein PIC, daher sind meine Vorschläge nur theoretisch und in "Pidgin-Programmiersprache" formuliert: "lese welches bit in aaa gemeint ist " >>> "irgendwo" (in einem register? von einem Port abgegriffen?) wird ja deine Bitfolge 1110daaa herkommen. Das nimmst du erst mal und machst eine AND-Verknüpfung mit 00000111, um alles überflüssige "wegzuknipsen". Das Ergebniss ist 00000aaa, mithin die Bitposition von bbbbbbbb die du prüfen möchtest "dann schaue in d ob das der wert 0 oder 1 " >>> "irgendwo" (in einem register? von einem Port abgegriffen?) wird ja deine Bitfolge 1110daaa herkommen. Das nimmst du erst mal und machst eine AND-Verknüpfung mit 00001000, um alles überflüssige "wegzuknipsen". Das Ergebniss ist 0000d000, mithin dein Prüfbit. Der Wert ist entweder NULL wenn d=0, oder NICHT NULL wenn d=1 gesetzt war. "und nun gehe an das Bit in bbbbbbbb" >>> du weißt, daß du das aaa-te bit in dieser bitfolge benötigst. Was du nun machst ist Prozessor-abhängig. a) du "schiebst" dieses Datenwort durch ein geegnetes Register hindurch, wobei gleichzeitig das herausfallende bit im Carry-bit aufgefangen wird. Dann kannst du abhängig vom Zustand des Carry-bit sprungmarke_0 oder sprungmarke_1 anhopsen, und dort weiter machen oder b) du nimmst ein leeres Initialbitmuster 00000001 und schiebst es um aaa Stellen nach links, dann hüpft die 1 um 1 Stelle weiter bis zur benötigten Bitposition. Anschließend machst du eine AND-Verknüpfung mit bbbbbbbb, so daß als Ergebniss raus kommt (angenommen, aaa=3-> ) bbbbbbbb 00001000 ========= 0000b000 Damit hättest du halt auch dein betreffendes b-Bit isoliert "und vergleiche auch den Wert d also ob 0 oder 1 ist." mit den vorherigen Operationen hast du beide Informationen isoliert: "d" und das relevante "b". Die vergleichst du nun noch ein bischen miteinander, und abhängig vom ergebniss hüpfts du nach "tue_dies" oder tue_jenes" So, jetzt zeig mir, daß man das auch in PIC programmieren kann.
hattu schön gemacht - da ich ja kein PIC spreche muß jemand anderes beurteilen ob das ein funktionsfähiger code ist. Aber es freut mich daß mein Hinweis dir scheinbar helfen konnte
Tja, ich spreche auch kein PIC, kann den Quellcode deshalb nicht überprüfen. ABER: Im Kommentar steht: ;Vergleich das Bit aaa mit den Wert d aus der CV bb ;D2 D3 D4 ;011110bb bbbbbbbb 1110daaa Nun: 'aaa' sind ja nur drei Bits, kann also nur einen Wert von 0 bis 7 annehmen, also 8 verschiedene Positionen. Aber laut Kommentar hast Du keine 8 'b'-Bits, sondern insgesammt 10 'b' Bits. Denn in D2 sollen ja die ersten zwei 'b' stehen und dann in D3 die nächsten 8 Stück. Dass sieht mir so aus, als ob da irgendwas faul wäre...
hallo Ja das ist schon so richtig alles denn beim vergleichen reicht es d3 zu vergleichen. die anderen zwei b können vernachlässigt werden.
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.