Assembler Fehler mit EICRA

OP #1921455
Lesenswert?
• ▲
▼
Servus,

fange gerade das Microcontroller-Programmieren an und habe ein Problem 
mit einem ATmega48 (bzw. der compilierung des Programmes).

Folgender Code:
1
.include "m48def.inc"
2
 
3
.def temp = r16
4
 
5
.org 0x000
6
         rjmp main            ; Reset Handler
7
.org INT0addr
8
         rjmp int0_handler    ; IRQ0 Handler
9
.org INT1addr
10
         rjmp int1_handler    ; IRQ1 Handler
11
 
12
 
13
main:                         ; hier beginnt das Hauptprogramm
14
 
15
         ldi temp, LOW(RAMEND)
16
         out SPL, temp
17
         ldi temp, HIGH(RAMEND)
18
         out SPH, temp
19
 
20
         ldi temp, 0x00
21
         out DDRD, temp
22
 
23
         ldi temp, 0xFF
24
         out DDRB, temp
25
 
26
         ldi temp, (1<<INT0) | (1<<INT1) ; INT0 und INT1 auf fallende FLanke konfigurieren
27
         out EIMSK, temp
28
     
29
         ldi temp, 0x00 ; INT0 und INT1 auf fallende Flanke konfigurieren
30
         out EICRA, temp 
31
         
32
         sei                   ; Interrupts allgemein aktivieren
33
 
34

35
loop:    rjmp loop             ; eine leere Endlosschleife
36
 
37
int0_handler:
38
         push temp             ; Das SREG in temp sichern. Vorher
39
         in   temp, SREG       ; muss natürlich temp gesichert werden
40
 
41
         sbi PINB, 1
42
 
43
         out SREG, temp        ; Die Register SREG und temp wieder
44
         pop temp              ; herstellen
45
         reti
46
 
47
int1_handler:
48
         push temp             ; Das SREG in temp sichern. Vorher
49
         in   temp, SREG       ; muss natürlich temp gesichert werden
50
 
51
         cbi PINB, 1
52
 
53
         out SREG, temp        ; Die Register SREG und temp wieder
54
         pop temp              ; herstellen
55
         reti

und folgender Fehler:

.\test2.asm(27): error: Operand 1 out of range: 0x69

Das Problem liegt wohl an EICRA, was aber nunmal die Adresse 0x69 hat. 
Was soll ich also tun?

Danke für eure Hilfe.


PS: noch was wenn ich in der m48def.inc Z nicht auskommentiere kommt
.\m48def.inc(382): error: Attempt to redefine keyword 'z'
Gast #1921459
Lesenswert?
• ▲
▼
Hi

>Das Problem liegt wohl an EICRA, was aber nunmal die Adresse 0x69 hat.
>Was soll ich also tun?

Nimm statt 'out' 'sts'. IO-Adressen > $5F können nicht mit in/out 
angesprochen werden.

MfG Spess

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.