.include "tn15def.inc" rjmp main main: ldi r20,0x00 rjmp EERead mov r16,r21 INC r20 ;eeprom adresse um eins erhoehen rjmp EERead mov r17,r21 rjmp ende EERead: sbic EECR,EEWE rjmp EERead out EEAR,r20 sbi EECR,EERE in r21,EEDR ret ende: rjmp ende .eseg ; EEPROM-Segment .org 0; "start-adresse" table1: .db 0xff,0xee,0xdd,0xcc,0xbb,0xaa,0x99,0x88 nach dem ersten einlesen des EEproms springt er immer wieder an den Anfang der Main Prozedur.... er soll doch da weitermachen wo er vor dem EEprom lesen war.... kann mir jemand helfen? THx
Hallo sammy, wenn ich das richtig gesehen habe, springst Du EEread durch einen relativen Sprung (rjmp) an (kein Unterprogrammaufruf). Den Rücksprung machst Du mit ret, als wäre es ein Unterprogramm gewesen. Also entweder, Du baust Dir die EEread als Unterprogramm und springst sie mit CALL an, oder Du setzt zwei Rücksprungmarken, die Du mit RJMP anspringst (Dann mußt Du Dir noch eine Unterscheidung überlegen, ich würde einfach noch ein Register verwenden). Gruß Christian
völlig normal - man kann (im Normalfall) nicht ein Unterprogramm mit rjmp anspringen und mit ret zurückkehren, Korrekter Aufruf wäre rcall. Weiss jetzt nicht aus dem Kopf ob der Tiny15 RAM hat, wenn ja, musst du auch vorher den Stackpointer initialisieren. Bei Hardwarestack ist dass nicht nötig.
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.