السلام عليكم ورحمة الله كما هو واضح من العنوان ممكن شرح لتايمر زيرو وبالاخص فى تحديد الزمن انا بحاجة الى فهمه مع جزيل الشكر
|
سيدي الفاضل..
تايمر زيرو باختصار شديد جدا هو عباره عن عداد 8 بت ، يقوم بالعد الى الرقم 256 ثم يحصل له فيضان (overflow) و اليك الفكره..
هذا العداد يقوم دائما دائما بلا انقطاع بالعد من صفر الى نهاية ال8 بت اي الرقم 256 بناء على اعدادات ساقوم بذكرها لاحقا..
في كل مره يصل الى نهايته يرفع لك العلم (flag) ليخبرك بانتهاء العد و القيام بالوظيفه المطلوبه ثم يقوم بالغاء العلم هذا حتى يقوم بالعد مره اخرى، التايمر زيرو و غيره من انواع المقاطعات ، يعني سيقوم المعالج بتنفيذ الامر المكتوب في روتين المقاطعه فور وصول العداد الى نهايته ايا كان ما يفعله المعالج ثم يستكمل البرنامج العادي.
- تايمر زيرو يعمل بناء على تردد الكريستال
- هناك ما يسمى بالPrescaler يعني ببساطه ، عند كل كام نبضه للمعالج يقوم هو بزيادة العداد بواحد ، و هذا بالطبع يستوجب ضبط اعداداته عند بداية البرنامج حتى تحصل على التوقيت المطلوب.
هذا هو تايمر زيرو ببساطه ، اداه لحساب الوقت ، ولكن لا يستطيع التعامل مع الازمنه الطويله ، مثلا لا يمكنه التعامل مع مدة دقيقه ، فمثلا اذا كنت تريد حساب مدة دقيقه ، تقوم باعداد التايمر حتى يحسب لك 10 مللي ثانيه ثم كل 100 مره تزيد المتغير بواحد و هذا حصلت على ثانيه كامله ثم كل ثانيه تزيد متغير اخر بواحد ، و عند العدد 60 تكون قد حصلت على دقيقه و هكذا.
هناك برنامج رائع يوفر عليك ضبط اعدادات التايمر من تطوير مايكروشب ستجده على موقعهم ، البرنامج اسمه Timer calculatorو سيعطيك الاعدادات و ما عليك الا ان تنسخها و تضعها في برنامجك.
و لكن نصيحه اولى افهم التايمر بنفسك و لا تسلك الطريق السهل منذ البدايه

و اي اسئله تحت امرك