hallo muraad, dino dieter usw.
es ist vollbracht !
durch ausdauer und nicht aufgeben hat man das ziel erreicht.
ich kann jetzt unter winavr-c ganz sauber rc5-code (14bit) senden ohne interrupt.
es tritt über haupt kein übertragungsfehler auf, klasse.
die 36khz werden nur zur zeit des gesetzten bits erzeugt also nur immer 890us lang.
dank eurer hilfe ist es endlich gelungen.
wie man sieht ist das programm nicht kompliziert. und ist für jeden anfänger nachvollziebar.
hallo muraad, du kannst dieses programm auch wieder bekannt machen.
es läuft bei mir mit dem AVR16 und 8mhz.
ir-diode von portb0 über 10kohm nach 5volt.
der port kann beliebig gewählt werden.

Code:
#include <avr/io.h> 
#include <avr/interrupt.h> 
#include <avr/signal.h> 
#include <string.h> 
#include <stdint.h> 


//89ms pause
void ms_89(void)
{

uint32_t zaehler;

	for (zaehler=0; zaehler<118666; zaehler++) 
	asm volatile("nop");
}
	
//Eine 0 senden
void SendBit0(void)
{

uint16_t i,zaehler;

	//890us Impuls mit 36kHz senden
	//Bei 28us Periodendauer ergibt das 32 Impulse

	for(i=0; i<32; i++)
	{
		PORTB=1;
		for (zaehler=0; zaehler<18; zaehler++)  //  ~14us
		asm volatile("nop");		
		PORTB=0;
		for (zaehler=0; zaehler<18; zaehler++)  // ~14us
		asm volatile("nop");		
	}

	//890us Pause
    for (zaehler=0; zaehler<1186; zaehler++) 
    asm volatile("nop");		

}

//Eine 1 senden
void SendBit1(void)
{
 
uint16_t i,zaehler;

	//890us Pause
    for (zaehler=0; zaehler<1186; zaehler++) 
    asm volatile("nop");		

	//890us Impuls mit 36kHz senden
	for(i=0; i<32; i++)
	{
		PORTB=1;
        for (zaehler=0; zaehler<18; zaehler++) 
        asm volatile("nop");		
        PORTB=0;
        for (zaehler=0; zaehler<18; zaehler++) 
        asm volatile("nop");		
	}
}


int main(void)

{
 
	DDRB=1; // Portb1 = ausgang
	
	while (1)
	{
	SendBit1(); //Erstes Startbit=1
	SendBit1(); //Zweites Startbit=1

	SendBit0(); //Togglebit
  
	//5 Bit Gerätecode
	SendBit0();
	SendBit1();
	SendBit0();
	SendBit1();
	SendBit1();

	//6 Bit Kommandocode
	SendBit1();
	SendBit1();
	SendBit1();
	SendBit1();
	SendBit1();
	SendBit1();

	//Übertragung komplett
	PORTB=0;  //IR-LED abschalten
	ms_89(); // warte 89ms
	}

}
mfg pebisoft