.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.