Forum: PC-Programmierung Wer versteht die Anweisung.


von HC12Dirk (Gast)


Lesenswert?

Ich hab diese in einem Beispiel gefunden und kann damit nichts anfangen. 
Vermute was mit Pointer auf Pointer!?

  *((unsigned char *)0x3FE2) = 0x06;
  *((void (**)(void))0x3FE3) = isrOC2;

Vielen Dank!

von yalu (Gast)


Lesenswert?

Normalerweise hätte ich geschrieben: Mach deine Hausaufgaben selber.

Aber: Ich habe den Code per Google doch tatsächlich in einem ganz
anderen Zusammenhang gefunden, deswegen gibt's hier die Lösung des
Rätsels ;-)

  *((unsigned char *)0x3FE2) = 0x06;

An die Byte-Adresse 0x3fe2 wird der Wert 0x06 geschrieben.

  *((void (**)(void))0x3FE3) = isrOC2;

An die Adresse 0x3fe3 wird die Adresse der Funktion isrOC2, die keine
Argumente entgegen nimmt und keinen Rückgabewert liefert, geschrieben.

von yalu (Gast)


Lesenswert?

Zusatz: Beide Anweisungen zusammen schreiben den Maschinenbefehl

    jmp isrOC2

für 68HC12-kompatible Mikrocontroller an die Speicheradresse 0x3fe2.

Da wird wohl so eine Art Interrupt-Sprungtabelle aufgebaut.

von yalu (Gast)


Lesenswert?

Ach, jetzt verstehe ich, warum du der HC12Dirk bist :-)

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
Noch kein Account? Hier anmelden.