Witam,
zacząłem nauke assemblera od kursu "[Kurs] Programowanie mikrokontrolerów AVR w języku assembler" autorstwa użytkownika Kermit.
Mam problem z 4 częścią kursu dotyczącą ADC, ponieważ kurs prowadzony jest pod atmegę 32 a ja posiadam atmegę 88.
Po zbudowaniu projektu, pojawia mi sie 5 błędów o przekroczeniu zakresu. I przez to nie moge używać rozkazów (sbi, sbic, in, out).
Z dokumentacji przeczytałem, że rejestry związane z ADC, są umiejscowione w rozszerzonej pamięci I/O, więc musze użyć rokzazów LDS, STS w kombinacji z rozkazami SBRS, SBRC, SBR i CBR. Niestety nie wiem jak je ze sobą połączyć, nigdzie nie mogłem znaleźć przykładu. Dlatego proszę was o pomoc w jaki sposób mam użyć tych rozkazów. Pod spodem wklejam mój kod i screen z błędami kompilacji.

zacząłem nauke assemblera od kursu "[Kurs] Programowanie mikrokontrolerów AVR w języku assembler" autorstwa użytkownika Kermit.
Mam problem z 4 częścią kursu dotyczącą ADC, ponieważ kurs prowadzony jest pod atmegę 32 a ja posiadam atmegę 88.
Po zbudowaniu projektu, pojawia mi sie 5 błędów o przekroczeniu zakresu. I przez to nie moge używać rozkazów (sbi, sbic, in, out).
Z dokumentacji przeczytałem, że rejestry związane z ADC, są umiejscowione w rozszerzonej pamięci I/O, więc musze użyć rokzazów LDS, STS w kombinacji z rozkazami SBRS, SBRC, SBR i CBR. Niestety nie wiem jak je ze sobą połączyć, nigdzie nie mogłem znaleźć przykładu. Dlatego proszę was o pomoc w jaki sposób mam użyć tych rozkazów. Pod spodem wklejam mój kod i screen z błędami kompilacji.
.nolist
.include "m88PAdef.inc"
.list
.cseg
.org 0
cli //wyłączenie przerwań
ldi R16, HIGH(RAMEND) //implementacja stosu
out SPH, R16
ldi R16, LOW(RAMEND)
out SPL, R16
//konfiguracja PWM
sbi DDRB, 3 //ustawienie jako wyjście linii na której będzie generowany sygnał PWM
ldi R16, (1<<WGM00)|(1<<WGM01)|(1<<WGM02)|(1<<COM0A1) //załadownie do R16 wartości która posłuży do konfiguracji timera0
out TCCR0A, R16 //załadowanie wartośći z R16 do TCCR0
ldi R16, (1<<CS00)
out TCCR0B, R16
//konfiguracja ADC
ldi R16,(1<<REFS0)|(1<<ADLAR)
out ADMUX, R16
ldi R16,(1<<ADEN)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADSC)
out ADCSRA, R16
main:
sbic ADCSRA, ADIF
rcall load_OCR
rjmp main
load_OCR:
in R16, ADCH
out OCR0A, R16
sbi ADCSRA, ADSC
ret
