قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية ياسين الحانوتي
ياسين الحانوتي
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2013
المشاركات: 164
نشاط [ ياسين الحانوتي ]
قوة السمعة:
قديم 16-01-2017, 03:05 AM المشاركة 17   
افتراضي



اشكرك اخي من كل قلبي على مشاركتك الطيبه

فكره تقسيم الوقت فكره جيده وانا اتبعتها سابقا
ممكن استخدام جمله فور وتقسيم الوقت

ولكن انا بما انني استخدمت الانتربت فلا بد ان الانتربت يقطع مايقوم به

لا استخدم الانتربت وبعد ذلك اقوم بتقسيم الوقت

تخيل او الزمن عشر دقائق هل انتظر حتى تتهي العشر دقائق

انا اريد نفس كود الانتربت الذي كتبته ولكن بتعديل بسيط عليه
العفو اخي.

أولا المشكلة تعلم أن الانتربت لو بدأ في وسط تعليمة الديلاي يرجع ويكمل ما
تبقى من الديلاي .. لذلك لقطع الديلاي ربما تحتاج للأسمبلي ,, لكن لغة سي وحدها لا أعتقد..
تقسيم الوقت الى اجزاء حتى اذا حصلت انتربت نستطيع التحكم في العداد
بالتالي نقفز مباشرة الى نهاية الوقت .. هذا للبساطة، اذا كانت الدقة مهمة استخدم المؤقت الداخلي او قم بتقسم الوقت الى 1 ميلي عوض 100 مثلا...

ولو كان زمن النبض 10 دقائق لن تطول مدة الانتظار اكثر من 100 ميلي ثانية، جرب الكود على isis وعدل الرقم 7 او 20 كما شئت

المهم امامك حل آخر (أعتقد أفضل) وهو استخدام المؤقت الداخلي للبيك

اعلانات

A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 06-12-2017, 03:46 AM المشاركة 18   
افتراضي



اخى العزيز بالنسبة لدالة button :

كود:
if (Button(&PORTB, 0, 40, 1)) {               // Detect logical one       oldstate = 1;                              // Update flag     }
كود:
Button(&portb البورت الذى يحتوى المفتاح,pin number connected to switch, time delay for debounce, 0 or 1 state);
بخصوص العنصر الاخير و هو :
كود:
 0 or 1 state
اذا كان الضغط على المفتاح يدخل 1 على رجل البورت فاكتب 1
و العكس اكتب 0

ملاحظة : فى البرامج الاحترافية لا يستخدم delay كما قلت , ولكن يستخدم دالة millis or micros حيث انهما لا يجعلان الميكرو فى حالة انتظار دون عمل , لانهما يعتمدان على التايمر الداخلى للميكرو .

ممكن مثال على ذلك اخي الكريم ؟؟ يا ريت لو تعرفني طريقه اخرى استغني فيها عن المر delay هيث ان هناك مشكلتان الاولى ان البك لا يعمل لاي امر اخر عند الوصول لامر ال delay و الثاني انه لا اقدر عمل تأخير ليومين مثلا نظرا لكبر طول الرقم .. اريد طريقه عمليه و احترافيه لو سمحت اخي

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 01:07 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)