PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kommunikationsproblem



NemesisoD
01.06.2007, 18:37
Hallo zusammen,

ich habe ein kleines Problem. Ich bin noch blutiger Anfänger in Assembler und habe vor eine Kommunikation zwischen Contollern auf zu bauen, und zwar in etwa so.

PC beginnt dem Controller das erste Byte zusenden, dort ist enthalten was er machen soll, und ob evtl noch weitere Bytes kommen, auf die gewartet werden muss. Also schickt der PC dem Contoller einen Befehl.

Da ich mit einem Byte 255 verschiedene Befehle erstellen könnte habe ich mir nun gedacht im Programm die verschiedenen Befehle zuprogrammieren, und die Sprungadressen im EEPROM oder besser im SRAM abzulegen, so das ich wenn ich den Befehl bekomme zu der Adresse im SRAM springe mit die beiden Bytes auslese welche die Adresse im Flash darstellen und diese dann ins X Register laden und dann mit

jmp X zum entsprechenden Programmablauf zu gelangen.

Jetzt meine Fragen:
1. Würde das so funktionieren, oder gibt es eine bessere Lösung?
2. Wie komme ich nach meinem Sprung wieder zurück?

Danke für eure Mühe
Nemesis

uwegw
01.06.2007, 19:14
Mit CALL und RET wird der Stack verwendet, um wieder zurückspringen zu können.

NemesisoD
01.06.2007, 19:27
Hey, es funktioniert.
=D>

Gibt es eine möglichkeit dem Assembler zu sagen er soll die Sprungadresse automatisch anzuzeigen? Mit dem Präprozessor oder so? Ich habe nähmlich jetzt beim Debuggen die Sprungadresse in den SRAM gelegt, welche ich aus dem Dissassembler abgelesen habe. Wenn ich das nach fertigstellung des Programms für viele Befehle machen müsste würde ich verrückt werden.

Danke schon mal

uwegw
01.06.2007, 19:42
Du setzt dir ne Sprungmarken am Ziel, und sagst dann CALL sprungmarke