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

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.