|
اخي العزيز
الكود الدي حاولت فهمه ولم استطع
time=0;
cont=ratio*100;
while(time<cont)
{
time=128*(tmr0-100);
}
led_check=0;
trigger=1;
delay_us(100);
trigger=0;
}
عندما اغير من زاوية القدح ratio فاني اغير cont
ثم ندخل في حلقة بها شرط عندما يكون تيمر 0 اكبر cont فانه يقوم بارسال نبضة ثم غلقها في rb3
عندما يكون تيمر 0 اصغر من cont فانه ينفد time=128*(tmr0-100)
لم افهمه جيدا ماالفائدة منها
|
السلام عليكم
time هو متغير لاحتساب الزمن
اما while(time<cont فهذا لوب مستمر اي مايكرو يبقى بداخل هذا لوب طالما لايزال زمن اقل cont و cont هو زمن الذي تحدث عنده قدح التراياك وعليه اذا تريد قدح تراياك عند زاويا 90 درجه اي زمن = 90/180 *10=5 اي انه مايكرو يجب ان ينتظر 5ms لكي بعدها يتم قدح التراياك وعليه لوب مهمته أبقاء مايكرو في حاله أنتظار قبل ارسال النبضه
فبعدما يصبح time اكبر من cont يخرج مايكرو من لوب ومن ثم يقوم بأرسال نبضه الى التراياك اي
كود:
trigger=1;
delay_us(100);
trigger=0;