Code:
	.NOLIST                
.INCLUDE <m8def.inc>  
.LIST                    
.CSEG                    
RESET:
rjmp init     
rjmp DUMMY    
rjmp DUMMY      
rjmp DUMMY 
rjmp DUMMY      
rjmp DUMMY     
rjmp MYINT 
rjmp init    
rjmp MYINT 
.ORG INT_VECTORS_SIZE 
init: 
ldi R16,HIGH(RAMEND) 
out SPH,R16 
ldi R16,LOW(RAMEND) 
out SPL,R16 
; CTC klarmachen
ldi r17,0;
ldi r16,(1<<WGM12)|(1<<CS10)
out TCCR1A,r17 
out TCCR1B,r16
  ; port b und d als ausgang
  LDI r24,255       
  OUT DDRB,r24 
  LDI r24,255
  OUT DDRD,r24
; interrupt
ldi r16,(1<<OCIE1A)|TIMSK;
out TIMSK,r16 
; zaehler laden
ldi r16,0 
out OCR1AH,r16 
ldi r16,255 ;29 (mit 29 sind es ca 33kHz, mit 255 ca 3,8kHz)
out OCR1AL,r16 
; PB1 ist anfangs HIGH
ldi r18,2 
out portb,r18 
sei  ; Interrupts aktivieren
; hauptschleife
loop: 
ldi r24,32
out portd,r24
;  delay loop, 1Hz
          ldi  r17,$09
WGLOOP0:  ldi  r18,$BC
WGLOOP1:  ldi  r19,$C4
WGLOOP2:  dec  r19
          brne WGLOOP2
          dec  r18
          brne WGLOOP1
          dec  r17
          brne WGLOOP0
          nop
ldi r24,192
out portd,r24; PD5+6 auf HIGH
;  delay loop, 1Hz
          ldi  r17,$09
WGLOOP3:  ldi  r18,$BC
WGLOOP4:  ldi  r19,$C4
WGLOOP5:  dec  r19
          brne WGLOOP5
          dec  r18
          brne WGLOOP4
          dec  r17
          brne WGLOOP3
          nop
; immer wiederholen 
rjmp loop
; isr, klappt nicht mit meinen pushes..
MYINT: 
;push r16
;push r17
;push r18
;push r19
;ldi r20,SREG
;push r20
;push r23
;push r24
; toggle funktion:
; "wenn portb=0 ist, wird portb=2"
; "wenn portb=2 ist, wird portb=0"
ldi r20,0
ldi r21,portb
cp r21,r20
breq setport
out portb,r20
rjmp intend
setport:
ldi r21,2 
;ldi r22,portb
;or r21,r22
out portb,r21
intend: ; auch diese pops taugen nicht
;pop r24
;pop r23
;pop r20
;out SREG,r20
;pop r19
;pop r18
;pop r17
;pop r16
reti
DUMMY:
reti
 vielleicht ist der atmel mit 1MHz auch zu langsam für das, was ich erreichen will? dann würde ich ein 16MHz quarz dranbasteln. aber auch mit erheblich niedrigerer CTC frequenz geht es nicht.
Lesezeichen