Code:
typedef void (*function_t) (void);

extern void zeige  (void);
extern void zeige2 (void);

function_t feld[] = {zeige, zeige2};  

void caller (int addr, function_t zeige3) 
{

  feld[0]();
  feld[1]();
  zeige3();
  ((void(*)(void)) addr) ();
}
Zitat Zitat von izaseba
Könnte mir mal jemand unter die Arme greifen und mir mal sagen wie ich das Miniprogramm in AVR implementiere?

Gruß Sebastian
Geht genauso.

Obiger Code assemblier avr-gcc so:
Code:
	.file	"foo.c"
	.arch atmega8
__SREG__ = 0x3f
__SP_H__ = 0x3e
__SP_L__ = 0x3d
__tmp_reg__ = 0
__zero_reg__ = 1
	.global __do_copy_data
	.global __do_clear_bss
.global	feld
	.data
	.type	feld, @object
	.size	feld, 4
feld:
	.word	pm(zeige)
	.word	pm(zeige2)
	.text
.global	caller
	.type	caller, @function
caller:
/* prologue: frame size=0 */
	push r14
	push r15
	push r16
	push r17
/* prologue end (size=4) */
	movw r14,r24
	movw r16,r22
	lds r30,feld
	lds r31,(feld)+1
	icall
	lds r30,feld+2
	lds r31,(feld+2)+1
	icall
	movw r30,r16
	icall
	movw r30,r14
	icall
/* epilogue: frame size=0 */
	pop r17
	pop r16
	pop r15
	pop r14
	ret
/* epilogue end (size=5) */
/* function caller size 25 (16) */
	.size	caller, .-caller
/* File "adc.c": code   25 = 0x0019 (  16), prologues   4, epilogues   5 */