es ist nur ein teile test programm, mickrontrolle AT90S8535 in STK200
über RS232 mit PC verbinden. signal nach jeder 5 Sekunden sollen Daten über UART transportiert werden .

Das heisst,nach jeder 5 sekunde wird Interrupt ausgelöst,und daten über UART senden.
ich denke, bei mein Programm fehlt etwa verbindung zw Senden und Interrupt,aber ich weis nicht wie ich es korrigieren.

könnte jemand mir helfen?



Code:
.include"8535def.inc"
.def temp=r16
.def infor=r19
.def laenger=r20
.def kommando=r21



.equ quartz=2457600   ;Seite 60,64,XTAL->Baudrategenerator  
.equ baud=9600    
.equ start=65536-39060

.equ highvalue=high(start)
.equ lowvalue=low(start)

.org 0X000
    rjmp reset           ;reset handler
.org 0X008
    rjmp TIM1_OVF        ;time1 overflow handler


reset:                 
  ldi temp,low(RAMEND)
  out spl,temp             ;Seite 21
  ldi temp,high(RAMEND)    ;Stackpoint initialisieren
  out sph,temp

  
 
  ldi temp,1<<TXEN    ;Seite 63
  out UCR,temp        ;Seite 64
  ldi temp,quartz/(baud*16)-1 
  out UBRR,temp       ; UART initialisieren

  
  ldi temp,1<<TOIE1
  out TIMSK,temp      ;time1 interrupt ein , Seite 27
  ldi temp,0b00000101 ;Seite 38
  out TCCR1B,temp     ;bit2-0 define the Prescaling 
                      ;source of Timer/Counter1
  
  sei                 ;interrupts generelle aktivieren


 loop:   
       ldi temp,1
       mov r1,temp
       ldi temp,2
       mov r2,temp
       ldi temp,3
       mov r3,temp
       ldi temp,4
       mov r4,temp
       ldi temp,5
       mov r5,temp
       ldi temp,6
       mov r6,temp
       ldi temp,7
       mov r7,temp
       ldi temp,8 
       mov r8,temp    
    rjmp loop   


senden:
          mov temp,r1     
          rcall senden2   

          mov temp,r2
          rcall senden2
          
          mov temp,r3
          rcall senden2
   
          mov temp,r4
          rcall senden2
          
          mov temp,r5
          rcall senden2
          
          mov temp,r6
          rcall senden2
          
          mov temp,r7
          rcall senden2
          
          mov temp,r8
          rcall senden2
   
         ret



senden2:
       sbis USR,UDRE     ;skip if bit in I/O register set
       rjmp senden2      ;warten bis UDR fuer naechster Btyte 
       out UDR,temp      ;bereit ist,   Datenblatte  Seite 62
       ret   



TIM1_OVF:
                          
       ldi temp,highvalue
       out TCNT1H,temp    ;Datenblaette Seite 38 
       ldi temp,lowvalue  ;Startwert des Timers einstellen 
       out TCNT1L,temp    ;39060 Takt ist 5 Sekunde
        
                          ;nach 5 sekunde ist interrupt ausgeloest
       rcall senden       ;aufrufen Senden Funktion
                
       reti
[/list]