error: Operand 1 out of range:

Gast #664464
Lesenswert?

Hallo!
Ich bin dabei, das MJOY Projekt (USB Joystick in ASM) auf einen ATmega88 
zu portieren.
Ich habe die Register wie in Atmels AVR094: Replacing ATmega8 by 
ATmega88 geändert und .include "m8def.inc" in .include "m88def.inc" 
geändert.
Jetzt treten aber mehrere Fehler in der Form
error: Operand 1 out of range:
z.B. bei folgendem Codestück auf:
;ADC enable, no start yet, Single Conversion mode, no interrupts
;set ADC prescaler to 12MHz / 64 = 187.5kHz

ldi  temp0, 0b10000110
out ADCSRA,temp0

Was kann ich dagegen machen?
Angehängte Dateien:
Gast #664485
Lesenswert?

Danke!
STS Klappt!
wie kann ich die anderen Befehle ersetzen?
Ich programmiere normalerweise in C...

sbi  ADCSRA, ADSC  ; start conversion

sbic  ADCSRA, ADSC

in  temp0,ADCL

und was mache ich mit GIFR und GIMSK welche beim m48 ebenfalls unbekannt 
sind? In der m8def.inc sind sie einfach als
.equ  GIMSK  =$3b
.equ  GIFR  =$3a
definiert.
#664493
Lesenswert?

Martin wrote:
> Danke!
> STS Klappt!
> wie kann ich die anderen Befehle ersetzen?
> Ich programmiere normalerweise in C...
Steht das in der AVR094 nicht drin?

> sbi  ADCSRA, ADSC  ; start conversion
Das geht nicht mehr mit einem Befehl. Da muss
1
lds tempX, ADCSRA
2
sbr tempX, (1 << ADSC) ;Achtung: sbr benutzt eine Bitmaske und keine Bitnummer!
3
sts ADCSRA, tempX

> sbic  ADCSRA, ADSC
Siehe oben, nur eben cbr nehmen.

> in  temp0,ADCL
1
lds temp0, ADCL

> und was mache ich mit GIFR und GIMSK welche beim m48 ebenfalls unbekannt
> sind? In der m8def.inc sind sie einfach als
> .equ  GIMSK  =$3b
> .equ  GIFR  =$3a
> definiert.
Hab das jetzt auch nicht alles im Kopf, aber ich meine, es müsste durch 
EIMSK bzw. EIFR ersetzt werden...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren