نظام 8 بت 8-Bit Mode
الشكل 2-25 يوضح المؤقت Timer 0 بنظام 8-bit .
عادة يتم تنفيذ العمليات التالية فى تطبيقات المؤقت :
· مسح clear البت T0CS لاختيار الساعة FOSC/4 .
· استخدام البتات T0PS2:T0PS0 لاختيارالقيمة المناسبة للمقياس المسبق prescaler .
· مسح البت PSA لاختيار المقياس المسبق .
· تحميل load سجل المؤقت TMR0L .
· اختيارى , تمكين المقاطعات بالمؤقت Timer 0 .
· يقوم المؤقت بالعد وتتولد المقاطعة عند تزداد (تطفح - تفيض) overflows من FFH إلى 00H فى نظام 8 بت (أو من FFFFH إلى 0000H فى نظام 16 بت ) .
عن طريق تحميل قيمة بالسجل TMR0 يمكننا التحكم بالعد حتى حدوث الطفحان . يمكن استخدام العلاقة التالية فى حساب الزمن الذى يستغرقة المؤقت ببطفحان (أو لتوليد المقاطعة) , بمعرفة الزمن الدورى للمذبذب , والقيمة التى تم تحميلها بالمؤقت وقيمة المقياس المسبق prescaler :
Overflow time = 4 x TOSC x Prescaler x(256 _ TMR0) (2.1)
حيث :
Overflow time زمن الطفحان بالملى ثانية ms .
TOSC الزم الدورى للمذبذب بالملى ثانية .
Prescaler قيمة المقياس المسبق .
TMR0 القيمة التى تم تحميلها بسجل المؤقت TMR0 .
على سبيل المثال , نفترض أننا نستخدم كريستال 4MHz و أن المقياس المسبق المختار هو 1:8 عن طريق تعيين البتات PS2:PS0بالقيمة 010 . أيضا نفترض أن القيمة المحملة بسجل المؤقت TMR0 هى 100 عشرى . عندئذ يمكن حساب زمن الطفحان كما يلى :
· حساب الزمن الدورى للمذبذب 4MHZ
T = 1=f =0.25ms
· استخدام العلاقة السابقة
Overflow time = 4 x 0:25 x 8 x (256 - 100= (1248ms
وبالتالى فأن المؤقت سوف يطفح overflow بعد 1.248msec وتتولد "مقاطعة بالمؤقت" إذا تم تمكين كل من المقاطعة بالمؤقت و عموم المقاطعات global interrupts .
عادة ما نريده هو أن نعرف ما هى القيمة التى يجب تحميلها فى سجل المؤقت TMR0 لزم طفحان مطلوب . يمكن حساب ذلك عن طريق تعديل المعادلة (2.1) على النحو التالى :
TMR0 = 256 –(Overflow time)/ (4 x TOSC x Prescaler) (2.2)
على سبيل المثال , نفترض أننا نريد توليد مقاطعة بعد 500ms علما بأن الساعة والمقياس المسبق كما فى الحالة السابقة . يمكن حساب القيمة التى تحمل بسجل المؤقت TMR0 باستخدام المعادلة 2-2 كما يلى :
TMR0 = 256 – 500/(4 x 0.25 x 8)= 193.5
أقرب عدد يمكن تحميله بالسجل TMR0 هو 193 .
نظام 16 بت 16-Bit Mode