Hallo zusammen, ich stehe auf der Leitung und bitte um Hilfe. Hier ein Stück Programmlisting sec rol tmpLow rol tmpChk ;MSB aus tmpLow müßte LSB in tmpChk werden, funktioniert aber nicht ??????? Ich setze das carry und shifte es ins tmpLow-Register (r4). Funktioniert auch wie erwartet. Das MSB aus tmpLow müßte doch nach der ersten rol Aktion ins carry geschrieben werden. Also müßte doch das neu Carry dann ins tmpChk geshiftet werden. Funktioniert aber nicht. Kann mich da mal bitte jemand aufklären, danke bluemole
Kenne ich von einem Programm, wurde in nem anderen Forum durchdiskutiert, war richtig, lief aber nicht: Bei jedem Tastendruck soll die nächste LED leuchten, tat sie aber nicht. Grund: rol macht Mist...
Also wo exakt ist das Problem ? Das MSB von tmpLow wird doch ins Carry geschoben. Wenn du willst, daß eine 1 ins Carry wandert, mußt du auch dafür sorgen, daß vor "rol tmpLow" auch eine 1 im MSB steht. Oder habe ich da was falsch verstanden ? Nach dem "rol" wird das Carry übrigens gelöscht, wenn nicht erneut eine 1 ins Carry geschoben wurde. Thorsten
Wie hast Du überprüft, daß das nicht funktioniert? Ich halte es für äußerst unwahrscheinlich, daß da ein Hardware-Bug existiert. Ich hatte auch schon oftmals die seltsamsten Effekte - irgendwann hat sich immer alles aufgeklärt. Wird evtl. ein Interrupt aufgerufen, in dem das SREG nicht gesichert wurde, oder wird evtl. tmpChk noch irgendwo verwendet und verändert?
Hi ich vermute du möchtest den 16 Bit Wert in tmpChk:tmpLow rotieren. Dann musst du aber auch den Überlauf in rol tmpChk in das LSB von tmpLow einrechnen. Aus sec rol tmpLow rol tmpChk wird dann clc rol tmpLow rol tmpChk adc tmpLow, ZeroReg == 0 oder clc rol tmpLow rol tmpChk brcc @@1 inc tmpLow @@1: Im Falle deiner Methode würde man 16 mal den Wert in tmpChk:tmpLow um 1 Bit rotieren und succesive mit 1 auffüllen. Nach 16 Verschiebungen würde dann immer fortwährend in tmpChk:tmpLow der gleiche Wert stehen, nämlich 0b1111111111111111. Im Falle das deine LEDs von Vcc nach Pin geschaltet sind würden somit die 16 LEDs immer dunkel bleiben. Gruß Hagen
Ne. Ich möchte keinen Round about... Ich bastle gerade an meinem Funkmodul herum. Ich schiebe einfach die empfangenen Daten ins in die Register. Wobei tmpChk die Check Bits sind. In der Simulation funktioniert es ja wunderschön, aber die Realität läßt mich noch ein wenig im Stich.... Vielleicht sollte ich die Spur von Thorsten noch mal aufnehmen und überpüfen ob die Test Bits tatsächlich als 1 interpretiert werden und nicht als 0.... Überprüfen tue ich es mit einer LCD- Ausgabe. bluemole
Arbeitest Du mit den AM-Modulen und Manchester-Kodierung? Da gibt es eine Möglichkeit, die serielle Schnittstelle zu mißbrauchen - verringert den Softwareaufwand enorm.
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.