Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Zitat von
siro
Baue zunächst eine "lange" Warteschleife die "mit Sicherheit" mindestens 100ms dauert.Es scheint ja noch nicht einwandfrei geklärt zu sein, wie lange deine Funktionen wirklich warten
Dann fällt mir grade noch auf:
Du initialsierst dein Display dauernd neu:
Beides erledigt, siehe unten
Zitat:
Zitat von
siro
Das SPH Register in deinem Tiny24 existiert tatsächlich nicht, da hat wkrug recht ...
Hab ich einfach vom M16 PGM rüber kopiert und nicht darauf geachtet - ist jetzt berichtigt
Zitat:
Zitat von
siro
Mich wunderte zudem noch der "OUT" Befehl für den Stackpointer:
Was meinst du damit? Kenne ich nicht anders und finde ich in anderen Programmen auch so.
Zitat:
Zitat von
wkrug
Also irgendwie komm ich mit dem Timing nicht so ganz mit.
Stimmt (schon). Ich hab den Wert erhäht, damit das delay sicher lang genug ist, hab aber den Text dazu nicht geändert.
Zitat:
Zitat von
avr_racer
So hab mal durchgeschaut... und das ein oder andere wurde schon angesprochen wie z.B. der Stack oder die Init.test3.txt
ldi lcdd, 0x01 ;*
$01 löscht das Display, von cursor setzen auf Zeile1 Pos1 hab ich nichts gelesen!
$03 setzt zusätzlich den cursor auf Z1P1.
Und der Befehl ist der letzte der Init-Prozedur.
Zitat:
Zitat von
avr_racer
Wenn du das LCD richtig angeschlossen hast solltest du mal den Kontrast so einstellen das man die Dots 5x7 ein wenig sieht. Kommt hier mit Erhöhung des Kontrasts nur die erste Zeile zum Vorschein ist die Init des LCD nicht komplett oder unterbrochen worden.
Wie schon geschrieben:
Es kommt in der ersten Zeile gar nichts zum Vorschein, dafür in der 2. Zeile sofort nach Anlegen der Spannung 16 Blöcke. Ob nun ein T24 in der Schaltung ist oder nicht. also auch ohne Init oder sonstiger Ansteuerung!
Zitat:
Zitat von
avr_racer
Sag mal wie fit bist du eigentlich im ASM beim AVR ?
Wie meinst du das, bzw. worum gehts dir?
Wie auch schon geschrieben: ich hab einige verschiedene, kleinere Programme für den T13, den M8 und eine Heizungssteuerung für den M16 geschrieben (mit dem Texteditor), mit AVR umgewandelt und wenns nötig war mit debug getestet.
Zitat:
Zitat von
avr_racer
1.
In die Initialisierung gehören alle Inits interner sowie externe Peripherie.
Im Testprogramm sind keine Ints definiert, weil nicht benötigt.
Wenn, dann mach ich es mit .org.
Das kommt dann beim M16.
Zitat:
Zitat von
avr_racer
Denn wenn der SEI aktiv ist und man vllt sich mal vertan hat und der zugehörige Int wird ausgelöst und diese Tabelle fehlt kann es sein das dein Controller mitten in der Startinit wieder loslegt....
Im Testprogramm nicht zutreffend - weder Int definiert noch in Verwendung
Zitat:
Zitat von
avr_racer
1.1
Code:
ldi lcdd,0x28 ;cd_function_set_std: 4Bit,2Zeilen,5*7 Font
rcall lcd_cmd4 ; Enthält bereits eine Zeitschleife
es steht zwar dahinter aber wenn man doch mal fix was ändern möchte ist
folgendes übersichtlicher
Code:
;SET Function
.equ F = 2 ;1 = 5x10 0 = 5x7
.equ N = 3 ;1 = 2line(4line) 0 = 1line
.equ DL = 4 ;1 = 8bit int 0 = 4bit interface
.equ HSF = 5 ;immer 1 setzen Symbolisiert das Ende
ldi temp1,(1<<HSF|0<<DL|1<<N|0<<F) ;funktionset
rcall lcd_command ;DatenLine1=8bit, N=1 2zeilig á 40 Zeichen d.h. 4zeilig á 20Zeichen
ret
???? Tut mir leid, kann damit nichts anfangen
Mich verwirrt sowas nur.
Zitat:
Zitat von
avr_racer
1.2
Zu den Registern sei gesagt die sollten nur einen allgm. Namen bekommen und haben nicht wirklich was mit den einzelnen Programmteilen, in textlicher Form, was zu tun.
Das mag für dich zutreffen, nicht für mich. Denn durch eine zugeordnete Benennung wird für mich ein Programm, speziell wenn es länger ist, besser lesbar. So weiß ich in den einzelnen Routinen (auch später, wenn eine Routine in eine Bibliothek gewandert ist) wozu das Register dient. Das ist in mir drin - kommt aus dem Großrechnerbereich (sieh unten) und von der Clipper-Programmierung.
Manchmal werden direkt veränderbare Register zu wenig, dann muss ich klarerweise in den SRAM "ausweichen". Wird aber, soweit möglich, vermieden.
Wenn wenig direkt veränderbare Register zur Verfügung stehen, dienen X,Y,Z bei mir als "Arbeitsregister", die ständiger Veränderung unterliegen. Sind einfacher zu schreiben als Rxx oder benannte. Zudem tu ich mir leichter, wenn ich 16 Bit benötige. Da XYZ vordefiniert und für mich eindeutig. Sie sind auch durch die Großschreibung leicht erkenntlich. Wenn genug Register zur Verfügung stehen, werden andere unterhalb XYZ bis R16 als Arbeitsregister verwendet. Und dann neben den namentlich (nahezu) fix zugeordneten immer mit "WRKx" (WoRKregister) definiert (bei euch meist als "tempx" o.ä.). Die Mnemonic, die ich meist bei den Namen verwende, kommt aus dem Großrechnerbereich (alles englisch). Ist eine ganz andere Welt, prägt aber. Daher auch mein meist gemischter Text D/E.
Aus oben genannten, jahrzehntelang prägenden Tätigkeiten erklärt sich auch mein Programmierstil. Somit auch mein Problem mit "fremden" Bibliotheken.
Man möge mir verzeihen!
Zitat:
Zitat von
avr_racer
Der Befehl 0x01 ist LCD löschen und setzen auf Cursorpostition 0 in Zeile 1, würde ich erst immer nach der fertigen Initialisierung des LCD aufrufen.
Siehe oben. Der Befehl befindet sich am Ende der Initialisierung (=also fertig).
Zitat:
Zitat von
avr_racer
Kleine Hausaufgaben
1. Warum kannst du ohne weitere Deklarationen XL/ Z direkt nutzen ?
2. Welche Register können nicht direkt mit Konstanten geladen werden ?
zu 1.: Siehe 1.2
zu 2.: von R0-R15
Gewisse Grundlagen sind mir bekannt.
Sonst hätte ich meine vorherigen Projekt nicht lösen können.
Zitat:
Zitat von
avr_racer
Werd ich mir genau ansehen.
Wird aber erst schlagend, wenn das Test-Programm die Testphase bestanden hat und dann mit Mega16 voll programmiert wird ...
Zitat:
Zitat von
avr_racer
3.
An Manchen Stellen hast du in der Unterroutine zum Schluss eine Zeitschleife und nachdem du diese Unterroutine verlassen hast folgt auf den Fuße wieder eine.
Hast recht.
Wurden eliminiert.
Antworten zu Text3 siehe Anhang
Um das Problem mit den Wartezeiten (delays) zu eliminieren, hab ich auf "Mechanik" umgestellt. Statt Wartezeiten in Routinen zu definieren verwende ich nun die "wait_key"-Routine. Die Wartezeit wird somit per "Taste" abgefragt. Händisch ist man sicher nicht zu schnell ;-)
Man sollte, da die Befehle nun per Tastendruck weitergeschaltet werden, auch jeden Schritt auf dem LCD verfolgen können.
Und trotzdem funktioniert ... NICHTS!
Nach Power on (ob LCD alleine oder an T24 angeschlossen):
1. Zeile: dunkel/leer
2. Zeile: voll mit Blöcken (aber nur, wenn Kontrast fast auf 0V), also keine "Anzeige".
Das bleibt unverändert, auch wenn mit der Taste weiter geschaltet wird.
:(
Liste der Anhänge anzeigen (Anzahl: 1)
Gut dein LCD zeigt nen Balken an, ohne Init, also ist erstmal die Versorgung i.O..
Kontrast mal ganz auf Anschlag gedreht ?
Ebenso ein Bild vom Aufbau oder Stromlaufplan, ich sag mal so ich sehe nichts... Und das LCD heißt auch wirklich 1602 ?
Hast du deine Programmierhwardware mal abgezogen von dem ISP Sockel?
RESET ist wie bescaltet ?
Nur mal so:
die Datenleitung sind zufälliger Weise nicht irgendwie vertauscht mit DB0-DB3 ?
Oder
DB04 = PA07
Db05 = PA06
DB06 = PA05
DB07 = PA04
Der RW-Pin liegt auf Masse und auch mit RS oder Enable nicht vertauscht ?
Oder Masse/Plusschluss eines Pins ?
Ebenso mal die Frage was ist von den Bits am Controller eingestellt ?
Mit dem Wait_Key, wenn dein Taster nicht entprellt per Hardware oder nach der Tasterabfrage keine >150ms Wartezeit drin sind, LASS ES!
Den weiteren Text hab ich vernommen aber das führt uns erstmal nicht weiter und sind viel Schönheitsdinge....
Wie sieht denn dein aktueller Code aus ?
Zitat:
Zitat von
Siro
Könnte es auch sein, dass der Watchdog zuschlägt ?
Das WDE Bit im Register WDTCSR mus auf 0 gesetzt sein.
Laut Datenblatt ist es undefiniert ??, hab ich aber auch noch nicht verstanden wie das geht.....
Wenn der nicht aktiviert ist passiert auch erstmal nichts !
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn ein Pin nicht beschaltet ist, dann zieht ein interner Pullup im Prozessor den Pin nach High, sofern er als Eingang configuriert wurde.
Der R/W Pin vom Display muss auf Low sonst steht das Display immer auf Read Mode. Ich weis nicht ob die einen Pullup haben,
ein Pulldown vermutlich aber nicht. Ich mess das mal bei meinem....
Mein R/W Pin am Display liegt ohne Beschaltung auf High. Das würde demnach dann nicht funktionieren.
Ich hoffe, Du hast nicht mein Display erwischt, das verleitet regelrecht dazu es falsch anzuschliessen,
das ist mir nämlich auch passiert....Man beachte die Zählweise der Pins....
Anhang 33909
Liste der Anhänge anzeigen (Anzahl: 4)
Erst muss ich mich für eine Fehlmeldung entschuldigen,
denn beim Umbau von µC auf absolut händisch ist mir bewusst
geworden, dass ich das LCD verkehrt rum "gesehen" hab.
Weil ich das LCD so im Board hab, dass die Anschlüsse unten
sind und nicht oben. Zeile 1 ist bei den Anschlüssen.
Somit hat die Zeile 1 die Blöcke und nicht Zeile 2!
Zeile 2 ist leer.
DIE LCD-ANSCHLÜSSE WAREN/SIND IMMER RICHTIG BESCHALTEN!!
Hab nur die Zeilen vertauscht gesehen!
Aufbau mit T24:
Hab RS + R/W gegroundet.
Resultat: keine Änderung.
Pullup hin, pullup her ....
Aufbau manuell:
Nun hab ich statt dem µC ein Mäuseklavier installiert und
die entsprechenden commands darüber eingegeben.
RS + RW immer auf GND - also nur Befehle.
EN mit 4,7k gegen GND.
Per Taste + auf EN, bei Loslassen - über R.
CMD-Abfolge (x = per Taste EN > +/-):
$30 3x
$20 1x noch im 8-Bit Mode (4-Bit-Mode)
$28 2x erst 2 dann 8 (4-Bit, 2 Zeilen, 5x7)
$0F 2x erst 0 dann F (DSP on, Cursor on blink)
$06 2x erst 0 dann 6 (DSP fest, C autoincr)
$01 2x erst 0 dann 1 (clr DSP, C > home)
Pegel/V-levels an den Anschlüssen mit V-Meter kontrolliert - ok.
Somit sollte der Zeitfaktor (Warteschleifen zu kurz) eliminiert sein.
Oder "vergisst" das LCD nach gewisser Zeit, welche Befehle es schon erhalten hat!?
Resultat: keine Änderung ggü. µC oder keiner Beschaltung.
Es tut sich ggü. dem Status nach dem Spannung anlegen einfach ...
NICHTS, GAR NICHTS am LCD!!!
Die Blöcke bleiben unverändert und keine weitere Reaktion.
Bin ratlos ... Was nun?
Doch LCD defekt??
Und damit ihr euch den Testaufbau vorstellen könnt, die Fotos dazu.
Werde morgen noch DB4-DB7 mit R gegen GND hängen.
Liste der Anhänge anzeigen (Anzahl: 3)
Ich habe es mal eben probiert:
Verkabelung:
DB0 frei
DB1 frei
DB2 frei
DB3 frei
DB4 über Widerstand nach Plus
DB5 über Widerstand nach Plus
DB6 an Masse
DB7 an Masse
RS an Masse
RW an Masse
E über Widerstand nach Plus
V0 (Kontrastpin) nach Masse
Wir simulieren das Datenbyte 0x30 indem wir DB4 und DB5 an High legen
und DB6 und DB7 an Masse legen.
Nun müssen wir mehrfach das Enable Signal nach Masse und wieder nach Plus schalten.
Ich habe den Draht rein und wieder raus gezogen.
Dann sollte das Display ALLE Zeichen im Kontrast zeigen.
Bilder:
Aufbau:
Anhang 33914
Versorgund einschalten
Anhang 33915
Enable Pin Mehrfach rausgezogen und wieder reingesteckt.
Anhang 33916
Dann sollte es Grundinitialisert sein.
Ich habe die Pullup Widerstände an DB4 und DB5 mal eben weggelassen, auch dann ging es.
Der Widerstand am Enable Pin nach Plus ist aber zwingend erforderlich bei dem Test, der Pin "schwebt" sonst...
Muss doch in den Griff zu bekommen sein....;)
Siro
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Zitat von
HeSt
Erst muss ich mich für eine Fehlmeldung entschuldigen,
denn beim Umbau von µC auf absolut händisch ist mir bewusst
geworden, dass ich das LCD verkehrt rum "gesehen" hab.
Weil ich das LCD so im Board hab, dass die Anschlüsse unten
sind und nicht oben. Zeile 1 ist bei den Anschlüssen.
Somit hat die Zeile 1 die Blöcke und nicht Zeile 2!
Zeile 2 ist leer.
DIE LCD-ANSCHLÜSSE WAREN/SIND IMMER RICHTIG BESCHALTEN!!
Hab nur die Zeilen vertauscht gesehen!
Alles gut ein nicht initialisiertes LCD muss immer in der ersten Zeile eine Balken haben, deshalb hab ich drüber hinweg geschaut siehe weiter oben.
Zitat:
Zitat von
HeSt
Aufbau mit T24:
Hab RS + R/W gegroundet.
Resultat: keine Änderung.
Pullup hin, pullup her ....
Wenn denn nur R/W grounden. RS ist für das Schreiben auf dem LCD notwendig.
Zitat:
Zitat von
HeSt
Aufbau manuell:
Nun hab ich statt dem µC ein Mäuseklavier installiert und
die entsprechenden commands darüber eingegeben.
RS + RW immer auf GND - also nur Befehle.
EN mit 4,7k gegen GND.
Per Taste + auf EN, bei Loslassen - über R.
CMD-Abfolge (x = per Taste EN > +/-):
$30 3x
$20 1x noch im 8-Bit Mode (4-Bit-Mode)
$28 2x erst 2 dann 8 (4-Bit, 2 Zeilen, 5x7)
$0F 2x erst 0 dann F (DSP on, Cursor on blink)
$06 2x erst 0 dann 6 (DSP fest, C autoincr)
$01 2x erst 0 dann 1 (clr DSP, C > home)
Pegel/V-levels an den Anschlüssen mit V-Meter kontrolliert - ok.
Somit sollte der Zeitfaktor (Warteschleifen zu kurz) eliminiert sein.
Oder "vergisst" das LCD nach gewisser Zeit, welche Befehle es schon erhalten hat!?
Resultat: keine Änderung ggü. µC oder keiner Beschaltung.
Es tut sich ggü. dem Status nach dem Spannung anlegen einfach ...
NICHTS, GAR NICHTS am LCD!!!
Die Blöcke bleiben unverändert und keine weitere Reaktion.
Bin ratlos ... Was nun?
Doch LCD defekt??
Und damit ihr euch den Testaufbau vorstellen könnt, die Fotos dazu.
Werde morgen noch DB4-DB7 mit R gegen GND hängen.
Rein für die Init könnte man das so machen bleibt die Frage der Entrprellung der Taster/Schalter was es wahrscheinlich scheintern lässt.
Danke für die Bilder. Und prüfe Leitungen oder Stecklöcher auf dem Board...
So hoffe ich das dir folgendes weiterhilft
Das "Ur-LCD" auf dem auch dei KS0077/67 usw angelehnt sind hat Seite 39 des HD44780 foglenden Hinweis:
"4-bit operation, 8-digit ´ 1-line display with internal reset
The program must set all functions prior to the 4-bit operation (Table 12). When the power is turned on,
8-bit operation is automatically selected and the first write is performed as an 8-bit operation. Since
DB0 to DB3 are not connected, a rewrite is then required. However, since one operation is completed in
two accesses for 4-bit operation, a rewrite is needed to set the functions (see Table 12). Thus, DB4 to
DB7 of the function set instruction is written twice."
Ich muss zugeben das habe ich das letzte mal vor 5/6 Jahren gelesen nachdem ich mir dann meine 8-Bit-Erweiterung mit nem Schieberegister gebaut habe um Pins zu sparen. Seit dem hatte ich 4bit nie wieder angefasst weil dort einfach zuviele Fehlinterpretation möglich sind. Gerade in Eng wenn man da nicht sattelfest ist.
Musste mir mein Board nochmal schnappen und es für den 4bit-Mode aufbauen was schief geht... Die Routine sollte eigentlich sofort bei dir funktionieren wenn folgende Bedigungen eingehalten sind
Takt 1Mhz eingestellt wenn
CLKDIV8 = Haken raus
!!!!!!!!!!!!
Jetzt VORSICHTIG wirklich drauf achten das folgende Einstellung gewählt ist
SUT_CKSEL = Int. RC. Osc. 8Mhz.... egal was oder Ext. Crystal 0,9-3Mhz.... egal was
Finger WEG von Ext. CLOCK der Chip lässt sich nur dann durch anlegen eines externen Taktes in den Fues umstellen!!!
!!!!!!!!!!!!
KONTRAST BISSCHEN STÄRKER EINSTELLEN
RW = GND
RS/E = vom Crontroller wie gehabt
DB0-DB3 = offen da sie eh in Tristate geschaltet werden
DB4-DB7 = vom Controller wie gehabt
Wenn LCD i.O. sollte jetzt Texte in beiden Zeilen zeilen erschienen.
Sollte dein LCD nach ca 5s, ohne das du Einstellungen verändert hast, nur wieder einen Balken in der Zeile 1 haben ist es defekt.
Liste der Anhänge anzeigen (Anzahl: 1)
(Guten) Morgen,
die Erklärung zur Klammer:
Mein LCD ist defekt :(
Ich hab den Aufbau genau so wie Siro gemacht.
Die LCD-Anzeige nach der Spannungsversorgung siehe Foto.
Sie bleibt unverändert, egal wie oft E gegen + getippt wird.
Danke für eure Mühe, Zeit und die vielen Tipps!
Ich melde mich wieder ...
Gruß Heinz
- - - Aktualisiert - - -
Zitat:
Zitat von
Moppi
Ich habs jetzt leider nicht gefunden oder gelesen, ob das Display neu war oder schon im Betrieb.
War/ist neu. War deshalb, weil vor einigen Jahren gekauft, aber nie verbaut ...
Die Lötstellen hab ich mit der Lupe kontrolliert und auch - soweit möglich - nachgelötet - alles ok.
Werd mir heute noch beim großen "C" ein neues holen. Ist grad mal 5km entfernt ...
Liste der Anhänge anzeigen (Anzahl: 1)
Servus Searcher,
danke für die Antwort!
Werde es dann gleich probieren ....
Eine andere Frage noch an alle:
Im Datenblatt des Mega16 steht auf Seite 32 in Tabelle 14, dass der µC von den Timern nur durch Timer 2 geweckt werden kann.
Oder lese ich das falsch!?
Im AVR-Studio funktionieren aber sehr wohl auch T0 und T1 OVF.
Kann ich davon ausgehen, dass das auch in der Realität so ist?
Anhang 33926
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat von
HeSt
Nein, das ist es nicht.
Wenn man, so wie du, mit der Materie auf du + du ist, ist das leicht(er) zu verstehen.
Das fehlt bei mir leider noch fast völlig. Ich hab solche Rechnereien bislang nicht benötigt und mich somit auch nicht damit befasst.
Deshalb brauche ich jetzt Zeit zum behirnen. Bitte um Geduld.
Na lass mal genau wie du hab ich auch damit angefangen ohne solche Umherrechnen nur irgendwann gehts halt nicht mehr weiter. Also keine Angst dieser Lernzustand ist ganz normal ;)
Zitat:
Zitat von
HeSt
Das, was davor noch an Erklärung steht, muss ich erst ganz genau durcharbeiten ...
HEX_DEZ_Wandlung hilft mir nichts! Oder reden wir da aneinander vorbei?
Wenn ich zB einen Wert von 174 in einem 8-Bit Register habe, ist für mich dieser Wert DEZIMAL. Das kann ich aber nicht am Display anzeigen.
Ich muss die einzelnen Ziffern erst einzeln in ASCII/Text (1=$31,7=$37,4=$34) in einzelne Register umwandeln damit sie anzeigbar sind. Oder was meinst du mit dezimal anzeigen?
Das sind nur die Namen der Register und fügst diese in deiner Hauptdatei zum Anfang ein oder "schaltest" es in der Mathe-Datei einfach frei.
Also HEX_Dez_Wandlung brauchst du trotzdem. denn wie willst du das A als DEZ darstellen bzw es sind ja 2 ASCII-Zeichen §31 und $30 nur das wären doch schon 2byte für zwei einezelne Ziffern die als Zehn interpretiert werden.
Einfacher ist es doch 1byte mit HEX 10 zu beschreiben und in der Ausgabe zum LCD
1. Kopie von $10 anlegen
2. swapst du das Highbyte auf lowbyte und addierst $30 dazu
3. $31 als Datensatz zum LCD schicken, 1 wird angezeigt
4. Kopie Highbyte ausmaskieren und wieder mit $30 addieren
5. $30 als Datensatz zum LCD schicken, 0 wird angezeigt
Hinweis: Die Mathe.asm bringst das Ergebnis steht in den Registern richtig drin, je nach Ansicht in Dezimal oder HEX. Ich entnnehme deiner Aussage das du es auf Dezimal eingestellt hast im Simulator.
Es gibt jetzt verschiedene Ansätze wie du diese Ergebnis jetzt wann wandelst.
1. Du nimmst die Register wie sie sind und wandlest erst bei der Ausgabe in ASCII-Zahlen was aber die Ausgabe komplizierter macht.
oder
2. Ergebniss berechnen lassen dann von HEX in Dezimal wandeln und im RAM ablegen ACHTUNG je nach ANSICHT im Simulator: HEX-Ansicht dann sind es PSEUDO-HEXEN da du es schon in DEZIMAL betrachtest oder in Dezimal dann sind die Werte als DEZ interpretiert falsch, Ausgabe der DEZ-Zahlen da in der mit der Addition des Wertes von $30
Noch mal einfach.
Du brauchst eine reine:
TEXTAUSGABE
ZAHLENAUSGABE
Hab mal zwei Bilder angehängt. $1312 * $0100 = $131200 da die ALU nur in Binär/(HEX) rechnen kann funktioniert die Registerübergreifende Darstellung in DEZIMAL nicht da die Zahlen von UNS falsch interpretiert werden
Damit du es richtig interpretierst müsstest du
19*256 + 18 = 4882 und 1*256 +0 = 4882 * 256 = 1249792
Das Ergbeniss richtig zu interpretiern
19*65536 + 18*256 + 0*256 = 1249792
Anhang 33932
Zitat:
Zitat von
HeSt
Das kommt auf den Code/die Änderung an. Wenn ich den Code "verstehe" und somit weiß wie er funktioniert, was er tut, meist nicht.
Bei diesen Rechnereien JEDE!
Deshalb ist mir, auch wenn es aufwändiger ist, Assembler lieber, weil ich weiß (oder hoffe zu wissen) was der Prozessor wie macht.
Ich hab wahrscheinlich noch einen Knopf im Hirn, den es erst gilt zu lösen.;)
Dann wirds mir leichter fallen diese Rechnereien zu verstehen und dann auch zu codieren. Ich lerne bei jedem Projekt wieder was dazu.
Bei diesem ist es halt im Moment heftig, weil mir ein gewisses Grundverständnis (und damit meine ich nicht der Codierung) fehlt.
Ich werd's schon noch hinkriegen ...
Wie gesagt das ist ein Frage deiner Darstellungsform im Simulator am besten auf HEX lassen wenn es Rgeisterübergreifend arbeitet.