Hallo Leute, Kann mir mal einer zeigen wie ich mit dem LPM Befehl richtig umgehe ? Habe da Probleme das die Software nicht richtig im Mikrocontroller läuft. Ich benutzte nen AT90S2313 Ich will eine Zahl aus dem Programmcodespeicher laden und diese Bitweise auf einen Ausgang scheiben. Um dieses zu erreichen müsste es doch so Funktionieren : ... ... ; Sonstiger Code ... LDI ZH,high(tabelle<<1) LDI ZL,low (tabelle<<1) LPM r16,z+ ... ... ... tabelle: .db 10,20,30,40 Wäre dieses so richtig ?
Hi, wußte gar nicht, daß man lpm noch Operanden geben kann... Ich hab einfach nur lpm gemacht, dann ist der Wert in R0. Hast Du Dich in dieser Zeile vertippt? Kannst ja einfach schreiben: LDI ZH,high(tabelle<<1) LDI ZL,low (tabelle<<1) LPM mov R16, R0 Was soll "z+" machen? Sowas wie in C ("z++") geht in ASM nicht... Johannes
Z+ geht schon, allerdings nicht bei LPM. Wie schon gesagt, der LPM-Befehl schreibt immer das von Z adressierte Byte aus dem Programmspeicher nach r0. lpm hat keine weiteren Operanden. Und das es den Befehl beim 1200er nicht gibt, stört mich mehr als alle anderen Einschränkungen.
Beim LPM Befehl gibt es sehr wohl Operanden, allerdings nur bei den AVR MEGA. Bei den normalen AT90S, soweit diese über den LPM Befehl verfügen wird im das durch den Zeiger ZL|ZH spezifizierte Byte aus dem Flash nach R0 übertragen. Bei den MEGAs gibt es noch die Spielarten: LPM Reg,Z LPM Reg,Z+ wobei Reg = R0 - R31
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.