mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm funktioniert nicht


Autor: frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen...
ich hab da mal ein Problem, habe folgendes ASM-Prog geschrieben und komm 
mit der Fehlermeldung nicht klar...
über einen Tip wo der Fehler liegt würde ich mich freuen...
.def        Potiwert      =  r14
.def        DACWert        =  r15
.def        temp        =  r16
.def        buffer        =  r17
;Portbezeichnung
;PortC
.equ        Daten        =  0
.equ        Takt        =  1
.equ        DCDC        =  2
.equ        Poti        =  3
;PortD
.equ        TDon        =  0
.equ        SpSig        =  1
.equ        AnfangsspannungPoti  =  50  
.equ        AnfangsspannungDCDC  =  255
.def        SpannungPoti    =  r12  


.include    "m8def.inc"

.CSeg

Haupt:

  ldi      temp,High(Ramend)
  out      SPH,temp
  ldi      temp,low(Ramend)
  out      SPL,temp
  rcall      Init      


Haupt1:
  ldi       SpannungPoti,255  
Haupt2:  
  
  mov      buffer,SpannungPoti  
  mov      PotiWert,buffer
  cbi      PortC,Poti
  rcall      I2CDaten
  sbi      PortC,Poti
  dec      SpannungPoti
  breq       Haupt1
  rjmp      Haupt2            

  ret  


Fehlermeldung: test.asm(171): error: Invalid register

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, du hast sogar Code UND Fehlermeldung gepostet , ABER im falschen 
Forum und ohne die Zeile anzugeben, zu der die Meldung gehört.
Ich tippe auf:
Haupt1:
  ldi       SpannungPoti,255 
als Ursache für dein Problem, LDI geht nur für die Register R16-R31

hth. Jörg

Autor: frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hey danke, das war der fehler, jetzt geht es...
gibt es irgendwo eine übersicht wo soetwas vermerkt ist, das zb der 
befehl ldi nur mit den registern 16 bis 31 geht, im datenblatt vom atmel 
steht es ja nicht drin...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ frank (Gast)

>befehl ldi nur mit den registern 16 bis 31 geht, im datenblatt vom atmel
>steht es ja nicht drin...

Doch, in der Beschreibung der Assemblerbefehle.

http://www.atmel.com/atmel/acrobat/doc0856.pdf

MFG
Falk

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stelle im AVR-Studio den Cursor auf ldi und drücke auf F1.
Es öffnet sich die Hilfe und positioniert sich sogleich
auf den Help-Eintrag für ldi. Und dort stehts dann auch.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.