Hallo leute,
ich hab hier eine ganz komische sache bemerkt:
wenn ich in meinem Porgramm mit In den Inhalt von Portb in ein Register ( R16 ) schreibe wird auch das R26 beschrieben ( als XH verwendet ), woran leigt das, wie kann ich das vermeiden???

hier mal der Anomaliencode:


in temp2,portd ; Lese Portd aus
lsl temp2 ; Schiebe alle Bits eins nach links


Mein gesammter Code:

Code:
;***********************************************************************************
;* Beschaltung:                                                                    *
;*                                                                                 *
;*  PB0 >----[200R]--A-[D]--[D]--[D]--[D]--[D]      Die 5 Anoden einer LED-Reihe   *
;*                      |    |    |    |    |       sind miteinander verbunden und *
;*  PB1 >----[200R]--A-[D]--[D]--[D]--[D]--[D]      über einen Vorwiderstand an    *
;*                      |    |    |    |    |       einen Portpin angeschlossen.   *
;*  PB2 >----[200R]--A-[D]--[D]--[D]--[D]--[D]      Die Kathoden der LEDs einer    *
;*                      |    |    |    |    |       Spalte sind ebenfalls mit-     *
;*  PB3 >----[200R]--A-[D]--[D]--[D]--[D]--[D]      einander verbunden und über    *
;*                      |    |    |    |    |       einen Transitor nach GND ge-   *
;*  PB4 >----[200R]--A-[D]--[D]--[D]--[D]--[D]      schalten.                      *
;*                      |    |    |    |    |                                      *
;*  PB5 >----[200R]--A-[D]--[D]--[D]--[D]--[D]      LEDs: LED Rot                  *
;*                      |    |    |    |    |       Transistoren: BC547            *
;*  PB6 >----[200R]--A-[D]--[D]--[D]--[D]--[D]      Widerstände: 1/4W Kohleschicht *
;*                      |    |    |    |    |                                      *
;*                      K    K    K    K    K                                      *
;*                      |    |    |    |    |                                      *
;*                    |/     |    |    |    |                                      *
;*  PD0 >----[10k]----|      |    |    |    |                                      *
;*                    |>     |    |    |    |                                      *
;*                      |    |    |    |    |                                      *
;*                      |    |    |    |    |                                      *
;*                      |  |/     |    |    |                                      *
;*  PD1 >----[10k]---------|      |    |    |                                      *
;*                      |  |>     |    |    |                                      *
;*                      |    |    |    |    |                                      *
;*                      |    |    |    |    |                                      *
;*                      |    |  |/     |    |                                      *
;*                      |    |  |>     |    |                                      *
;*                      |    |    |    |    |                                      *
;*                      |    |    |    |    |                                      *
;*                      |    |    |  |/     |                                      *
;*  PD2 >----[10k]-------------------|      |                                      *
;*                      |    |    |  |>     |                                      *
;*                      |    |    |    |    |                                      *
;*                      |    |    |    |    |                                      *
;*                      |    |    |    |  |/                                       *
;*  PD3 >----[10k]------------------------|                                        *
;*                      |    |    |    |  |>                                       *
;*                      |    |    |    |    |                                      *
;*                      |    |    |    |    |                                      *
;*  GND >---------------o----o----o----o----o                                      *
;*                                                                                 *
;*                                                                                 *
;***********************************************************************************

;-------[ Assembler Einstellungen ]-------------------------------------------------

;Includedatei für AT90S2313 laden 
.include "2313def.inc" 

;Arbeitsregister definieren 

.def temp1 = r16                    ; Universalregister 1
.def temp2 = r17                    ; Universalregister 2
.def temp3 = r18                    ; Universalregister 3


;-------[ µC Einstellungen ]--------------------------------------------------------

;Interupt Config. I 

.org 0000 
rjmp start 
reti
reti
reti 
reti 
rjmp t1int 

Start:
 

;Interupt Config II 
sei                                ; Interuptts freigeben

ldi temp1, (1<<TOIE1)              ; Timer1 Interrupt 
out timsk, temp1                   ; aktivieren

clr temp1                          ; TCCR1 High auf 0
out tccr1a,temp1
 
ldi temp1,(1<<ICNC1)|(1<<CS10)     ; Noiscanceler deaktiv.
out tccr1b,temp1                   ; Timer1 Clock = Clock

ldi temp1,0xE8                     ; Timervorgabewerte:
out tcnt1h, temp1                  ; Highbyte= 0xE8
ldi temp1,0x90                     ; Lowbyte = 0x90
out tcnt1l, temp1                  ; Wert =  0xE890 => 500Hz Interruptfreq.

;Stack einrichten
ldi temp1,low(ramend-0x05)         ; 5 Bytes für Matrixdaten (VGA) im SRAM reservien
out spl,temp1                   


;I/O-Ports Config.
;PortB                             
ser temp1                          ; PortB als Ausgang def.
out ddrb, temp1

;PortD
ser temp1                          ; PortD als Ausgang def.
out ddrd, temp1

;Pointerregister def.
;X-Pointer für Multiplexer
ldi xl, low(RAMEND)                ; Addresse vom Ramende    
ldi xh, high(RAMEND)  


;Z-Pointer für ASCII-Werteauslesen
ldi zl, low(ASCII*2)               ; Addresse vom Beginn der ASCII-Tabelle
ldi zh, high(ASCII*2)

ldi temp1,16                      ; Wenn PB.5=1, dann PortD = 1 
out portd, temp1

;-------[ Hauptprogramm Beginn ]----------------------------------------------------
Main:

   ldi temp1, 0b01010101 
   sts (ramend-0x00),temp1
   ldi temp1, 0b01010101 
   sts (ramend-0x01),temp1
   ldi temp1, 0b01010101
   sts (ramend-0x02),temp1
   ldi temp1, 0b01010101 
   sts (ramend-0x03),temp1
   ldi temp1, 0b01010101 
   sts (ramend-0x05),temp1

   call delay

rjmp Main
;-------[ Hauptprogramm Ende ]------------------------------------------------------




;-------[ Delay-Routine (1 Sekunde) ]-----------------------------------------------
Delay:
          ldi  R21, $1F
WGLOOP0:  ldi  R22, $FD
WGLOOP1:  ldi  R23, $FE
WGLOOP2:  dec  R23
          brne WGLOOP2
          dec  R22
          brne WGLOOP1
          dec  R21
          brne WGLOOP0
          nop
          nop
ret


;-------[ Multiplex-Interrupt-Routine]----------------------------------------------

t1int:
  
	ldi temp1,0xE8                     ; Timervorgabewerte:
	out tcnt1h, temp1                  ; Highbyte= 0xE8
	ldi temp1,0x90                     ; Lowbyte = 0x90
	out tcnt1l, temp1                  ; Wert =  0xE890 => 500Hz Interruptfreq.

    LD temp1,x                         ; Lese ein Matrix-Byte aus SRAM                        ; Lese ein Matrix-Byte aus SRAM 
    sbiw xl,1  

	cpi XL,Ramend-0x05 
	breq noreset 
	ldi XH,HIGH(RAMEND) 
	ldi XH,LOW(RAMEND) 
	noreset:

    in temp2,portd                     ; Lese Portd aus
    lsl temp2                          ; Schiebe alle Bits eins nach links

	out portb,temp1                    ; Schreibe SRAM-Daten in den PortB
    out portd, temp2                   ; Schreibe PortD ( Shifted nach links)

	sbis portd,5                       ; Schauen ob PD.5 = 1
	rjmp endmulti                      ; Wenn PB.5=0, dann springe nach endmulti 
                                        
    ldi temp1,1                        ; Wenn PB.5=1, dann PortD = 1 
	out portd, temp1

	endmulti:
reti


;-------[ ACII-HEX-Tabelle und Text ]-----------------------------------------------

;ASCII-HEX-Tabelle
ASCII:

;Text
Text:
.db "Hallo, ich bin ein AVR!",0


;=======[ Programm ENDE ]===========================================================