Witam pisze program zegarka w assemblerze oparty o procesor ATtinny2313, i w procedurze obsługującej wyświetlanie cyfr na wyświetlaczu segment-LED wczytuje z pamięci flash procedurą LPM R0, Z+ do rejestru r0 kolejne liczby do wyświetlania, na co AVR studio się buntuje pisząc ...ss\Prog_uC_L5Ass.asm(34): error: lpm r0, z+: Unsupported instruction on AT90S2313
Pierwsze co zrobiłem to sprawdziłem w dokumentacji i instrukcja w tym wariancie (tj inkrementacji) występuje w tabeli instrukcji, sama instrukcja LPM działa i kompilator sie nie buntuje, ale po co dokładać dodatkowe cykle skoro LPM r0, Z+ jest niby wspierane..
Poniżej kawałek kodu:
Myslicie że dokumentacja może być poprostu przekłamana i LPM ma tylko jeden wspierany wariant? Bo poki co inne rozwiązanie tej zagwostki mi nie przychodzi do głowy. (w załączniku dokumentacja którą wykorzystuje)
Pierwsze co zrobiłem to sprawdziłem w dokumentacji i instrukcja w tym wariancie (tj inkrementacji) występuje w tabeli instrukcji, sama instrukcja LPM działa i kompilator sie nie buntuje, ale po co dokładać dodatkowe cykle skoro LPM r0, Z+ jest niby wspierane..
Poniżej kawałek kodu:
petla:
ldi ZL, LOW(liczba_LED*2)
ldi ZH, HIGH(liczba_LED*2)
;wyswietl cyfry od 0 do 9
ldi r22, 0
petla1:
;załaduj cyfre z pamieci do R0
;i inkrementuj adres w rejestrze Z
[b]lpm r0, z+[/b] //TUTAJ SIE BUNTUJE
;załaduj PORTB
out PORTB, r0Myslicie że dokumentacja może być poprostu przekłamana i LPM ma tylko jeden wspierany wariant? Bo poki co inne rozwiązanie tej zagwostki mi nie przychodzi do głowy. (w załączniku dokumentacja którą wykorzystuje)
