ATMEGA8 assembler fehlermeldung

Gast #2960486
Lesenswert?

Bekomme die Fehlermeldung " ...... out of Range" doch ich kann den 
fehler nicht lokalisieren?
1
.include "m8def.inc"
2

3
.org 0x0000
4
  rjmp RESET
5
  rjmp BEGINN
6
  reti
7
  reti
8
  reti
9
  reti
10
  reti
11
  reti
12
  reti
13
  rjmp ZAEHLER
14
  reti
15
  reti
16
  reti
17
  reti
18
  reti
19
  reti
20
  reti
21
  reti
22
  reti
23

24
RESET:
25

26
    
27
    in r16, 0b01000000      ;Initialisierung des Analog Wandlers
28
    out ADMUX, r16
29

30
    in r20, 0b00000000      ;Zähler Wert für Entfernung auf 0 setzen
31

32
    in r16, 0b00000000      ;Gesamten PortC als Eingang konfigurieren
33
    out DDRC, r16
34
     
35
    in r16, 0b11111111      ;Pullups verwenden
36
    out PORTC, r16
37

38
    in r16, 0b11111111      ;PortB als Ausgang verwenden
39
    out DDRB, r16
40

41
    in r16, TIMSK        ;Timer konfigurieren
42
    ori r16, 1<<TOIE0
43
    out TIMSK, r16
44

45

46

47
    sei              ;Globale Interrupt Freigabe
48

49
BEGINN:
50
  
51
    sbis PC4          ;Abfrage des Schalter für Beginn der Messung
52
    rjmp SENDEN          ;Wenn Taster gedrückt ist Sendevorgang beginnen
53
    rjmp BEGINN          ;Taster erneut abfragen
54

55
SENDEN:
56
    
57
    in r16, 0b00000001      ;Timer zur Entfernungsmessung beginnt zu zählen
58
    out TCCR0, r16
59

60
    in r16, 0b00000001      ;Spannungsversorgung für den Sender aktivieren
61
    out PORTB, r16
62

63
    in r16, 0b01101101      ;Starten des Fast PWM Signals zur erzeugung einer ca. 40 kHz Frequenz
64
    out TCCR2, r16
65

66

67
    
68
    
69

70

71
ZAEHLER:
72

73
    push r16          ;R16 sichern
74
    in r16, SREG        ;SREG sichern
75
    push r16
76

77
    INC r20            ;Bei jedem Overflow das "Zählregister" um 1 erhöhen
78

79
    pop r16            ;R16 wiederherstellen
80
    out SREG, r16        ;Statusregister wiederherstellen
81
    pop r16
82
    reti            ;ISR verlassen
Gast #2960669
Lesenswert?

>sbis PC4
Gibt es nicht !
Syntax ist :
sbis ioregister,bit nr (0-7)
also :
sbis pinc,4
bzw. :
sbis pinc,PC4
finde ich aber Schwachsinn weil schon durch pinc der Port auf C 
festgelegt wurde.
Macht nur sinn wenn Pin 4 auf einer anderen Bitposition wie z.B. 7 
liegen könnte (bei unterschiedlichen Ports jeweils anders angeordnet).
Gast #2960990
Lesenswert?

Hi
Jungs, zerpflückt ihn doch nicht gleich....
Also, trenn erst einmal den Weizen von der Spreu, also werd dir klar, 
was ist mein Hauptprogramm und was sind die Unterprogramme oder 
Interrupt Service Routinen (ISR)
Nur der Aufruf einer ISR hat in der Interrupt Vector Table etwas zu 
suchen. Reti auch, da sie fehlgeleitete Interrupts zurückschubsen.
So, nun ich wieder. Nimm ein Blatt Papier und Zeichne auf, was du 
willst. Ich hab mal einen Vorschlag skizziert. Ist nicht der Weisheit 
letzter Schluß, aber ich denke, grad wenn man mit Assembler anfängt, 
verliert man doch schnell den Überblick. Solche Programmblöcke lassen 
sich wunderbar prüfen und dokumentieren.
Gruß oldmax
Angehängte Dateien:

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