mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Studio Code geht nicht richtig


Autor: Thomas K (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas K (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
klare Sache.
Ansonsten bei Problemen mit PortC: JTAG enabled, macht immer wieder
Probleme.

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.