AVR Studio Code geht nicht richtig

Gast #71077
Hallo!

Ich versuche verzweifelt (virtuell) knöpfe an PORTC and den pins 2 und
3 auszulesen und and leds an den pins 0 und 1 wieder auszugeben.
Das Programm ist zwar noch nicht fertig, ich habe aber jetzt schon ein
gravierendes Problem.

Sobald PIN 2 oder 3 aktiviert werden springt er in eine der letzen 2
Subroutinen. DANN hüpft er bei dem RET befehl aber immer wieder auf
"rjmp main".
Wieso? Sollte er nicht nach dem Sprungbefehl (z.B. rjmp bit3set1)
wieder fortsetzen?


Vielen Dank im Voraus,
Thomas K



.NOLIST
.include "m16def.inc"
.LIST

; Name the registers we are using.
;.equ temp, 0x10      ;does not work in avrstudio
;.equ temp2, 0x11      ;does not work in avrstudio

.def temp = r16
.def temp2 = r17

.org 0x0000

  rjmp main

main:
  ; initialize DIGIT port (all bits as output), activate CC_LEDs

;  ldi temp, low8(RAMEND)      ;does not work in avrstudio
  ldi temp, LOW(RAMEND)
  out SPL, temp
;  ldi temp, hi8(RAMEND)      ;does not work in avrstudio
  ldi temp, HIGH(RAMEND)
  out SPH, temp


  ldi temp, 0b11111100    ;Pull-ups
  out PORTC, temp
  ldi temp2, 0b00000011    ;PORTC Input
  out DDRC, temp2        ;Bits 0-1 Output, Bits 2-3 Input

  in temp, PINC        ;read PinC

  sbic PINC, 2        ;switch1 == 0?
  rjmp bit2set1

  sbic PINC, 3        ;switch2 == 0?
  rjmp bit3set1

  rjmp main

bit2set1:
  sbi PORTC, 0
  ret

bit3set1:
  sbi PORTC, 1
  ret
Gast
Vielen Dank an die Leute im Chat.
Die Lösung meines Problems ist, das rjmp für die Subroutinen durch ein
rcall zu ersetzen.
Bei rcall wird die Rücksprungadresse auf den Stack gelegt, bei rjmp
nicht!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.