hallo muraad, bei Bascom ist es timer 1, da gibt es den befehl "rc5send togbit, adress, command".
dies ist der anschluss " +5V <---[A Led K]---[220 Ohm]---> PD5 "
bei bascom. pd5 ist beim AVR16 oc1a.


ich habe mal ein beispiel mit us_889 und ms_89. oc1a ist bei mir am AVR16 pd5. der pd5 (oca1) wird je nach bit auf high oder low geschaltet. lieg ich hier verkehrt mit meiner ganzen theorie.

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


uint16_t zaehler;
uint32_t zaehler1;

void us_889(void)
{
	
	for (zaehler=0; zaehler<1185; zaehler++) 
	asm volatile("nop");
	
}	
		
void ms_89(void)
{
	for (zaehler1=0; zaehler1<117105; zaehler1++) 
	asm volatile("nop");
}	

void ir_init_send(void) {
	//36kHz Träger
	TCCR1A = (1<<COM1A1) | (1<<COM1A0) | (1<<WGM11);
	TCCR1B = (1<<WGM12) | (1<<WGM13) | (1<<CS10);
	OCR1A = 111;
	ICR1 = 222;
	//Timer-Interrupt alle 2,048ms zur Signalerzeugung --> 1/(8MHz/256/64)
	TCCR0 = (1<<CS01) | (1<<CS00);    //Prescaler von 64
    TIMSK |= (1<<TOIE0);               //Timer0 Overflow Interrupt aktivieren
}
 

int main(void)
{

ir_init_send();
DDRD=255; 
PORTD=32;  // bit pd5
    
	while (1)
	{	
		PORTD=32;
		us_889();
		PORTD=0;
		us_889();
		
		PORTD=32;
		us_889();
		PORTD=0;
		us_889();
		
		PORTD=32;
		us_889();
		PORTD=0;
		us_889();
		
		PORTD=32;
		us_889();
		PORTD=0;
		us_889();
		
		PORTD=0;
		us_889();
		PORTD=32;
		us_889();
		
		PORTD=0;
		us_889();
		PORTD=32;
		us_889();
		
		PORTD=32;
		us_889();
		PORTD=0;
		us_889();
		
		PORTD=0;
		us_889();
		PORTD=32;
		us_889();
		
		PORTD=0;
		us_889();
		PORTD=32;
		us_889();
		
		PORTD=0;
		us_889();
		PORTD=32;
		us_889();
		
		PORTD=32;
		us_889();
		PORTD=0;
		us_889();
		
		PORTD=32;
		us_889();
		PORTD=0;
		us_889();
		
		PORTD=0;
		us_889();
		PORTD=32;
		us_889();
		
		PORTD=0;
		us_889();
		PORTD=32;
		us_889();
		
		PORTD=32;
		ms_89();
	}
}
mfg pebisoft