قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الاليقسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots
انا كنت اعتقد ان هناك علاقة مباشرة بينهما فاجابني الاستاذ احمد حينها انه لايمكن حساب الوقت بدقة من خلال هذا الكود انما يكون ذلك من خلال لغة الاسمبلي . وواعدنا بأن يوضح هذه العملية بالتفصيل .وان شاء الله سيفعل
ببساطه
وحسب تجربتي
delay_ms(1000)
بيعطينا دلي ثانية واحده والله اعلم لا علاقة لانه في برنامج mikroC تضع قيمة الكرستالة المستخدمه وهكذا يقوم البرنامج باعطاءك قيمة تاخير صحيحة
فقيمة الكرستالة تحدد سرعة تنفيذ الاموار داخل البرنامج مثال اذا كان لدينا كرستالة قيمتها 20 ميجا , فإن سرعة تنفيذ الاوامر تكون 1\20 و كذلك لها علاقة بالتواصل مع العالم الخارجي Interface
اما ما يخص قيمة delay _ms فهي قيمة حقيقة ببنسبة 98 %
يعني لو طلبنا انه يكون porta خرج و يفعل ليد لمدة Delay_ms(1000
) فانه سيفعل الليد لمدة ثانية تقريبا
و الله أعلم
و بارك الله فيك
التعديل الأخير تم بواسطة : حسن الامير بتاريخ 25-04-2009 الساعة 01:06 AM
السلام عليكم
ان التعليمة تعطي زمن تاخير دقيق حسب الرقم المكتوب في التعليمة..حيث ان البيك يحدد الزمن بشكل دقيق مهما تغيرت الكريستالة المستخدمة 4 ميجاهيرتز او 20 او غيرها..فالتعليمة تعطي الزمن الدقيق المطلوب للتاخير ..
ربنا يوفقك وينفع بك الاسلام والمسلمين.
واخر دعوانا ان الحمدلله رب العالمين...وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم.
اخي حمودي1010
سارد عل سؤالك
ماهي علاقة تعليمة
delay_ms() بكوارتز البيك
مثلا اذاكان كواتز البيك هو 20Mhz
كم تستغرق هذه التعليمة من وقت الكواتز
عندما نتكلم على فلوكود فسؤالك خاطئء لانه لا علاقة بين فلوكو د وتردد الكريستلة على الاطلاق فعندما على سبيل المثال ناخذ مخرج معين ونطلب انتضار 500 ميلي ثانية فالمترجم فلوكود سيقوم بالتكفل بالباقي اي انه هو من يكتب الاسمبلي اللذي يحدد الزمن اللذي طلبته منه هذا يعني انه لو فرضا تركت البرنامج على حاله وغيرت تردد الكريستالة فلن يتغير زمن المخرج .بكل بساطة لان فلو كود قام بتغيير التعليمات اللتي تدخل في حساب التوقيت اللذي اعطيته له انت .وهنا تكمن قوة البرنامج .
ملاحضة .التوقيت غير دقيق لانه ان اردت ان يكون توقيتك دقيق برتبة الميكرو ثانية فيجب كتابة برنامج التوقيتة بطريقتك انت وذالك بالاسمبلي وهنا نهاية لسؤالك
فكل تعليمة زمن تطبيقها متعلق بالتردد الذي تعطيه الكريستالة
ارجو اني لم اكن ثقيل الدم عليكم
انا مجرب اشياء صنعتها بالبيك واضن اني اجبت على سؤالك .والله اعلم ان اخطءت
ارجو دعواتكم بالهداية
السلام عليكم شباب
تردد الكرستالة المكتوب يؤثر على زمن التأخير عند استخدام تعليمة delay_ms()
والسبب بسيط جدا كل تعليمة يقوم البيك بتنفيذها تتطلب عدد نبضات محدد
وهذا العدد لا يختلف سواء كانت الكرستالة المستخدمة 20 ميغل أو 4 ميغا
وبالتالي عند استخدام الكرستالة الأعلى سيتم التنفيذ بشكل أسرع لأن تتالي النبضات يكون أسرع
بالنسبة لتعليمة ال delay يقوم برنامج المايكرو بيسك بتحويلها لحلقات لتأخير الزمن مكتوبة بلغة الأسمبلي (فعليا عندما تقوم ببناء البرنامج يولد نسخة بلغة الأسمبلي للبرنامج كاملا ملف يمكن قراءة محتواه ) معتمدا على القيمة المدخلة للكريستالة وبالتالي عند تغيير قيمة الكرستالة المدخلة عن القيمة الفعلية الموضوعة في الدارة سيؤدي ذلك إلى اختلاف الزمن (نتيجة طبيعية)
وأنا شخصيا بعتقد أنو التعليمة دقيقة جدا من حيث الزمن ولاأعتقد أن التنفيذ أو الدقة متعلقة باللغة المستعملة أسمبلي أو c أو غيرها
الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 01:23 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)