Zitat Zitat von HeSt
... wie poste ich meinen code?
aber das hat sich ja nun erübrigt oder? ...
Code posten:
Button [C ode] drücken ( danach steht dort [C ode*] ) ,
jetzt den Code eingeben (z.B. copy und paste)
Button [C ode*] drücken.

Oder: Code eingeben, markieren und danach den Button [C ode] drücken.
Anmerkung: Zwischen "C" und "o" muss hier im Text ein Zwischenraum stehen, damit die Schaltfunktion für den Code (an dieser Textstelle im Posting) nicht aktiviert wird.

Deinen Code zu lesen hat sich ja nun erübrigt. Obwohl - wär ja mal interessant . . . . .

Zitat Zitat von HeSt
... übrigens danke für den deinen!
muss mich erst einlesen und verstehen! ...
Ich hatte gerade festgestellt, dass mein Beispiel total schlecht ist. Dieses hier ist vermutlich etwas besser: Stack ist initialisiert, Stackpointer wird in der ISR gesichert und so. Man entwickelt sich halt mit der Zeit *ggggg*.

Code:
/* =================================================================================
  Sicherung 20dez07 1732 nach Datei ..A1..\minitest\minitest_x10.asm
 ===================================================================================
..............
 ===================================================================================
                                                                                  */
/* ============================================================================== */
; Deklarationen für den Praeprozessor und Konstanten (s.auch oben Speicherbelegung)

#include <m168def.inc>

#define	a	r16	;Kurzbezeichung für Allzweckregister r16
#define	ac	r17	;Kurzbezeichung für ISR-Allzweckregister r17
;===================================================================================
/* Interrupthandler-Tabelle 
	Address Code	Labels		; Comments			*/
.org  0x0000  rjmp  RESET	;Reset Handler, power-on, brown-out, watchdog
/*.org  0x0001  rjmp  xt_int0	; EXT_INTO  IRQO Handler
.org  0x0002  reti	; PCINTO    PCINTO Handler
.org  0x0003  reti	; TIMO_OVF	;Timer0 Overflow Handler
.org  0x0004  reti	; EE_RDY	;EEPROM Ready Handler
.org  0x0005  reti	; PITAL_COMP	;Analog Comparator Handler
.org  0x0006  reti	; TIMO_COMPA	;Timer0 CompareA Handler
.org  0x0007  reti	; TIMO_COMPE	;Timer0 CompareE Handler
.org  0x0008  reti	; WATCHDOG	;Watchdog Interrupt Handler
.org  0x0009  reti	; ADC		;ADC Conversion Handler
                                                                                  */
;===================================================================================
; Hauptprogramm
;===================================================================================
;
RESET:		;=== Generelle Initialisierung
		; Zuerst RAMEND und Stack definieren;
	ldi	a,RAMEND	;Ram Ende des tiny13
	out	SPL,a		;Stack Pointer tiny13 setzen
anfang:		;=== Nur ein Dummy-Hauptprogramm
	rcall  	init_mc		;Initialisiere den Mikrocontroller
	rcall	ini_xti0	;Initialisiere die ISR für external Interrupt
	sei			; .. und Interrupts allgemein zulassen
a2:
	rcall	tiw		;Tu irgend etwas
	rjmp	a2
;		
;===================================================================================
; Prozeduren
;===================================================================================
;
tiw:	;=== tuirgendwas ... ein bisschen code muss ja abgearbeitet werden
	push	a
	in	a,SREG
	push	a
	push	ac		;AUCH das ISR-Allzweckbyte - auf alle Fälle
tiw_pop:
	pop	ac
	pop	a
	out	SREG,a
	pop	a
	ret		;=====----->>>>>
;
;===================================================================================
; Initialisierungen für µC und ISR
;===================================================================================
;
init_mc:	;=== Initialisiere Mikrocontroller
		;ALLE Register initialisieren hier := pull-ups einschalten
	ldi	a,0b00111100	;
	out	ddrb,a		;Datenrichtung "Ausgabe" für alle ports
	ldi	a,0b00000000
	out	portb,a		;  und alle ports ausschalten = low = sink
	ret		;=====----->>>>>
;
ini_xti0:	;=== Initialisiere external Interrupt
;
				;(1<<ISC01 | 1<<ISC00)
	ldi	a,0b00000011	;Init. extern. Interrupt0 auf rising edge
	out	MCUCR,a		;   d.h. MCUCR ISC00,01 auf 1 (doc2535,S 55)
	ldi	a,0b01000000	;(1<<INT0)
	out	GIMSK,a		;  und erlaube diese I´s in GIMSK
	ret		;=====----->>>>>
;
;===================================================================================
; Interrupt-Service-Routine	#######>>>>> 
;===================================================================================
;
xt_int0:	;=== Markiere Arbeit dieser ISR
	push	a
	in	a,SREG
	push	a
	ldi	a,0b00001000	;Bit3 (PB3) einschalten
	out	portb,a
int0_pop:
	pop	a
	out	SREG,a
	pop	a
	reti		;=====----->>>>>
;
;===================================================================================
; Ende des Quellcodes
;===================================================================================