السلام عليكم
فكرة عمل الدائرة هي توليد قطار من ال0 و ال1 يفصلها زمن معين و على أساس هذا الزمن يمكن توليد نغمات مختلفة حسب ترددها فمثلا لتوليد نغمة بتردد 100HZ d يكون الزمن الدوري لها 1/100 أي 10 ميللي ثانية و بالتالي نقسم العدد على 2 (5 مللي لل1 و 5 ميللي لل0) و يكون الكود النهائي كالتالي :
كود:
while(porta.f0==0){
portb.f0=1;
delay_ms(5);
portb.f0=0;
delay_ms(5);
}
وهو يقوم بإصدار نغمة بتردد 100MH عند الضغط على سويتش موصول A0 و الصوت يخرج من خلال B0 باستخدام speaker .
و هذه صورة توضح شكل الموجة الناتجة :
و هنا رابط الكود و الدائرة على بروتس
wave.zip - 0.02MB