Forum: Mikrocontroller und Digitale Elektronik assember


von Marc (Gast)


Angehängte Dateien:

Lesenswert?

ich folgendes kleines Programm geschrieben und beim simuliern im AVR
Studio kommt immer eine Fehlermeldung. Das programm scheint aber zu
laufen. Kann mir die Fehlermeldung erklären ? (asm Datei als anhang)

.include "m16def.inc"
.equ  port_als_ausg  =  0xff
.equ  port_als_eing  =  0x00
.equ  anfangswert    =  255
.def  zaehlregister  =   r23
.def  temp      =  r16


main:
; Einrichten des Stapels

   ldi temp, LOW(RAMEND)
    out SPL  , temp
    ldi temp, HIGH(RAMEND)
    out SPH  , temp



;Port C zum Eingang machen:

  ldi temp,port_als_eing
  out DDRC,r17

;PORT D zum Ausgangmachen:

  ldi temp,port_als_ausg
  out DDRD,r17

Abfrage:

;Abfrage der PINs an Port C


  sbis   PINC,0
  rcall   Fall1

  sbis  PINC,1
  rcall  Fall2

  jmp Abfrage
Fall1:
  ret

Fall2:
  ret


Fehlermedung im AVR Studio:


Loaded plugin STK500
Loaded plugin Atmel AVR Assembler
Loaded partfile: C:\Programme\Atmel\AVR
Tools\PartDescriptionFiles\ATmega16.xml
Loaded plugin Atmel AVR Assembler
Loaded partfile: C:\Programme\Atmel\AVR
Tools\PartDescriptionFiles\ATmega16.xml
Loaded plugin Atmel AVR Assembler
Loaded partfile: C:\Programme\Atmel\AVR
Tools\PartDescriptionFiles\ATmega16.xml
Loaded plugin Atmel AVR Assembler
Loaded partfile: C:\Programme\Atmel\AVR
Tools\PartDescriptionFiles\ATmega16.xml
AVR Simulator: Please wait while configuring simulator...
AVR Simulator: ATmega16 Configured OK
Loaded objectfile: D:\Eigene Dateien
(D)\Schule\TAR\AVRStudio\Programm\TAR\TAR.obj
AVR Simulator: Invalid opcode 0xffff at address 0x000008
AVR Simulator: Invalid opcode 0xffff at address 0x000008
AVR Simulator: Invalid opcode 0xffff at address 0x000008
Loaded objectfile: D:\Eigene Dateien
(D)\Schule\TAR\AVRStudio\Programm\TAR\TAR.obj
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
Loaded objectfile: D:\Eigene Dateien
(D)\Schule\TAR\AVRStudio\Programm\TAR\TAR.obj
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
Loaded objectfile: D:\Eigene Dateien
(D)\Schule\TAR\AVRStudio\Programm\TAR\TAR.obj
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
Loaded objectfile: D:\Eigene Dateien
(D)\Schule\TAR\AVRStudio\Programm\TAR\TAR.obj
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
Loaded objectfile: D:\Eigene Dateien
(D)\Schule\TAR\AVRStudio\Programm\TAR\TAR.obj
AVR Simulator: Invalid opcode 0xffff at address 0x00d0d0
AVR Simulator: Invalid opcode 0xffff at address 0x0010d1
Loaded objectfile: D:\Eigene Dateien
(D)\Schule\TAR\AVRStudio\Programm\TAR\TAR.obj

von Klaus Bröntgen (Gast)


Lesenswert?

>;Port C zum Eingang machen:
>
> ldi temp,port_als_eing
> out DDRC,r17

geht schonmal nicht, muß dann "out ddrc,temp" heißen; anderer port
ebenso

>sbis   PINC,0
>  rcall   Fall1

da weiß ich auch immer nicht, wann es "sbis" oder "sbrs" heißen
muß. ggf. ausprobieren

>jmp Abfrage
geht gar nicht, muß "rjmp" heißen

von Hannes L. (hannes)


Lesenswert?

Warum soll "jmp Abfrage" beim Mega16 falsch sein?

Bei Portc beachten, dass das JTAG-Interface einzelne Bits des Ports
blockiert. Dafür gibt es aber das Bit JTD in einem der
MCU-Steuerregister.

Übrigens:
Doppelklick auf eine Fehlermeldung markiert im Quelltext die
Fehlerzeile. Immer mit der ersten Fehlermeldung beginnen, denn ein
Fehler (z.B. vergessener Doppelpunkt bei Label) kann weitere
Fehlermeldungen provozierien, zu denen garkeine Fehler existieren.

...

von Klaus Bröntgen (Gast)


Lesenswert?

@hannes
>Warum soll "jmp Abfrage" beim Mega16 falsch sein?

ja, da war ich wohl etwas voreilig. ich sollte mir angewöhnen, alles
durchzulesen....

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.