Salutations

Je suis en train de bricoler avec un pic16f84. J'ai un "buzzer" de carte mere sur la sortie 5 port B de mon µC

J'ai codé une petite fonction sensée envoyer sur cette pin un signal de fréquence f et de durée d :

Code:
void sound(uns16 f, uns16 d)
{
	int i; 
	uns16 p = 50000 / f; // une demi période en dizaines de µscondes
	uns16 d2 = d * 100; // d(ms) --> d2(10µs)
	uns16 p2 = p * 2;    // p2 = période du signal (µs)
	uns16 duree = d2 / p2; //nombre de périodes
	for(i=0; i<=duree; i++)
	{
		PORTB.5 = 1;
		delay_10us(p);	
		PORTB.5 = 0;	
		delay_10us(p);		
	}
}
je ne comprends pas pourquoi, mais ma fréquence étant à peu pres bonne, j'ai je ne sais quel probleme avec la durée... elle varie en fonction de ma fréquence, et parfois meme, en dépit de tout autre facteur ...

J'ai vérifié mon raisonnement quatres ou cinq fois, mais je ne comprends pas pourquoi il ne fais pas ce que je lui demande.

Sauriez vous maider ?

merci, ++ Tix.