بسم الله الرحمن الرحيم
اولا كيفية تشغيل التايمرات في كل الوضعيات
اذا اعتمد المؤقت على كريستالة يكون عداد زمني اما اذا اعتمد على مصدر خارجي فإنه يكون عداد عادي ويستخدم كثيرا في قياس التردد.
TMR0:
يقوم بالعد من 0 الى 255
يتحكم فيه ريجستر OPTION_REG
عند التعامل مع ميكرو سي او بيسك يمكن كتابة اعدادات التايمر 0 على الصورة
OPTION_REG=0b01110000;
وهذا جدول الاعدادات من الداتا شيت وسوف اقوم بشرحهم :

* bit 7 RBPU & bit 6 INTEDG هذان لاعدادات المقاطعة ومقاومات الجذب لبورت بي وليس لهما علاقة بالتايمر لذلك فإن القيمة الافتراضية لهما = 1
* T0CS: TMR0 Clock Source Select bit يستخدم لاختيار مصدر النبضات فعندما يكون ب 0 فإنه يعمل كتايمر ثابت (على الكريستاله الداخلية) اما عندما يكون ب 1 يعمل كعداد للنبضات التي تكون على البن T0CKI (RA6) .
* T0SE: TMR0 Source Edge Select bit عندما يكون ب 1 يقوم بالعد عند كل حافة هابطة واذا كان ب 0 يقوم بالعد عند الحافة الصاعدة
* PSA: Prescaler Assignment bit عندما تكون ب 1 فان تقسيم التردد يؤثر على ال watch dog timer واذا كانت ب 0 فإن التقسيم يؤثر على ال تايمر لذلك يتم وضعه ب 0 اذا اردنا تقسيم التردد للتايمر وهذا يعني انه يقوم بعدة واحدة كل عدد معين من النبضات وتوضع ب 1 اذا اردنا عدم تقسيم التردد.
* PS2:PS0: Prescaler Rate Select bits تحديد نسبة التقسيم حسب الجدول.
على سبيل المثال اذا اردنا تشغيل التايمر 0 كعداد بدون تقسيم على الحافة الصاعدة نكتب امر :
OPTION_REG=0b11101000;
عند الحاجة الي قراءة او تغيير قيم العداد او تصفيره نستخدم الريجستر TMR0
على سبيل المثال :
TMR0=0 او TMR0=126 او PORTB =TMR0 وهكذا..
خصائص التايمر 0 :
- لايمكن التحكم به في التشغيل او الايقاف فهو في حالة عمل دائم
-يستخدم بكثرة للحصول على نبضات ثابتة مع الزمن تستخدم في المقاطعة في تطبيقات كثيرة مثل seven segment multiplexing & Dot matrix
- يعتبر افضل التايمرات عند الرغبة في استخدامه كعداد.
- قد يستخدم كمولد نبضات ل WDT watch dog timer
* عند استخدام الكريستاله كمصدر للتردد يمكن حساب زمن العدة الواحدة بالمعادلة
T=(4*prescaler)/Fosc
مع العلم ان التايمر عندما يصل الي 255 يعود الى الصفر ويتم تشغيل علم المقاطعة اذا كان قد تم تفعيله.
ساستكمل باقي المؤقتات ان شاء الله