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