Forum: Mikrocontroller und Digitale Elektronik Programm funktioniert nicht


von frank (Gast)


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...
1
.def        Potiwert      =  r14
2
.def        DACWert        =  r15
3
.def        temp        =  r16
4
.def        buffer        =  r17
5
;Portbezeichnung
6
;PortC
7
.equ        Daten        =  0
8
.equ        Takt        =  1
9
.equ        DCDC        =  2
10
.equ        Poti        =  3
11
;PortD
12
.equ        TDon        =  0
13
.equ        SpSig        =  1
14
.equ        AnfangsspannungPoti  =  50  
15
.equ        AnfangsspannungDCDC  =  255
16
.def        SpannungPoti    =  r12  
17
18
19
.include    "m8def.inc"
20
21
.CSeg
22
23
Haupt:
24
25
  ldi      temp,High(Ramend)
26
  out      SPH,temp
27
  ldi      temp,low(Ramend)
28
  out      SPL,temp
29
  rcall      Init      
30
31
32
Haupt1:
33
  ldi       SpannungPoti,255  
34
Haupt2:  
35
  
36
  mov      buffer,SpannungPoti  
37
  mov      PotiWert,buffer
38
  cbi      PortC,Poti
39
  rcall      I2CDaten
40
  sbi      PortC,Poti
41
  dec      SpannungPoti
42
  breq       Haupt1
43
  rjmp      Haupt2            
44
45
  ret

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

von Jörg X. (Gast)


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:
1
Haupt1:
2
  ldi       SpannungPoti,255
als Ursache für dein Problem, LDI geht nur für die Register R16-R31

hth. Jörg

von frank (Gast)


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...

von Falk B. (falk)


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

von Karl H. (kbuchegg)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.