You are on page 1of 10

‫الفصل الثاني عشر‬

‫المؤقتات ‪ /‬العدادات‬
‫‪ 1-12‬المؤقت ‪TIMER0‬‬
‫‪ 1-1-12‬مزايا المؤقت ‪TIMER0‬‬
‫يمتلك المؤقت ‪ TIMER0‬المزايا التالية‪:‬‬
‫‪ ‬مؤقت‪/‬عداد ذو ثماني خانات‪.‬‬
‫‪ ‬قابلية القراءة والكتابة‪.‬‬
‫‪ ‬مقسم قابل للبرمجة ذو ثماني خانات‪.‬‬
‫‪ ‬مصدر نبضات الساعة داخلي (مؤقت)أو خارجي (عداد)‬
‫‪ ‬حدوث مقاطعة عند طفحان المؤقت من القمة ‪ FFh‬إلى ‪.00h‬‬
‫‪ ‬اختيار جبهة القدح الخارجية(صاعدة أو هابطة)‪.‬‬
‫‪ 2-1-12‬بنية المؤقت ‪TIMER0‬‬
‫يبين الشكل (‪ )12-1‬المخطط الصندوقي للمؤقت ‪.TIMER0‬‬
‫‪FPSC / 4‬‬ ‫‪Data bus‬‬
‫‪0‬‬ ‫‪PSout‬‬
‫‪1‬‬ ‫‪8‬‬
‫‪1‬‬ ‫‪Sync with‬‬
‫‪TOCK TOSE‬‬ ‫‪Programmable‬‬ ‫‪0‬‬ ‫‪Internal‬‬ ‫‪TMR 0‬‬
‫‪pin‬‬ ‫‪Prescaler‬‬ ‫‪Clocks‬‬ ‫‪PSout‬‬
‫‪3‬‬ ‫‪(2 cycle delay‬‬
‫‪St Interrupt‬‬
‫‪TOCS‬‬ ‫‪PS2, PS1, PS0‬‬ ‫‪PAS‬‬ ‫‪Flag bit TOIF‬‬
‫الشكل ‪ 1-12‬مخطط بنية المؤقت ‪Timer 0‬‬ ‫‪on overflow‬‬

‫‪ 3-1-12‬آلية عمل المؤقت ‪TIMER0‬‬


‫يمكننن للمؤقننت ‪ TIMER0‬أن يعمننل بدحنند ن ننامي التوقيننت أو العنند ويننتم جعلننم يعمننل و ن ن ننا التوقي نت‬
‫بتصفير الخانة ‪ TOCS‬من المسجل ‪Option‬ونسمي ذلك نمط المؤقت )‪.(Timer mode‬‬
‫و ي هذا النمط تتم زيادة قيمة المؤقت مع كل دورة تعليمة جديدة (وذلك عند عد استخدا المقسم) وعندما‬
‫تتم كتابة قيمة الضبط إلى مسجل ‪ TMR0‬إن زيادة المؤقت تتوقف لفترة دورتين‪.‬‬
‫وإذا كنننت ترينند اسننتخدا المؤقننت ‪ Timer 0‬نني ن ننا العنند )‪ (counter mode‬عليننك أن تفعننل الخانننة‬
‫‪ TOCS‬حيننت تننزداد نني هننذا النننمط قيمننة المؤقننت عننند ورود جبهننة (صنناعدة أو هابطننة) علننى القطنن‬
‫‪ AR4/TOCAKI‬وينتم تحديند ننول الجهنة بواسنطة الخاننة ‪ TOSE‬ني المسنجل ‪ , OPTION‬عنند‬
‫تصفير هذه الخانة يتم زيادة قيمة المؤقت عند ورود الجبهة الصاعدة ‪ ,‬أما تفعيلها يزيد المؤقت عند الجبهنة‬
‫الهابطة ‪ ,‬وسيتم بحت عمل المؤقت ‪ Timer 0‬كعداد ي قرة قادمة إن شاء هللا ‪.‬‬
‫أمننا المقسننم (‪ )Prescaler‬يتشننارب بننم المؤقننت ‪ Timer0‬ومؤقننت المراقبننة ‪ WDT‬ويننتم تحدينند ذلننك مننن‬
‫خ ن ا الخانننة ‪ PSA‬نني المسننجل ‪ OPTION‬حيننت سننيتبع هننذا المقسننم إلننى المؤقننت ‪ TMR0‬عننندما يننتم‬
‫تصفير هذه الخانة (‪.)PSA‬‬
‫والمقسم (‪ )Prescaler‬كما سنجده ي قرة قادمة هو عبارة عن موقع غير قابل للقراءة أو الكتابة ولم عدة‬
‫نس تقسيم يتم اختيارها بواسطة الخانات ‪ PS0:PS2‬ي المسجل ‪OPTION.‬‬
‫‪TMR0 Interrupt‬‬ ‫‪ 4-1-12‬مقاطعة المؤقت ‪TMR0‬‬
‫تتولد مقاطعة المؤقت ‪ TMR0‬عند حدوث طفحنان ني مسنجل المؤقنت ‪ TMR0‬منن القيمنة ‪ FFh‬إلنى القيمنة‬
‫‪ , FFh‬وعند حدوث ذلك يتم اإلع ن عنم بواسطة العلم ‪ TOIF‬الموجود ضمن المسجل ‪INTOCN‬‬
‫وبإمكانك استثمار تلك المقاطعة أو حجبهنا بواسنطة الخاننة ‪( TOIE‬خاننة تمكنين مقاطعنة المؤقنت ‪)TMR0‬‬
‫ي المسجل ‪.INTON‬‬

‫‪-182-‬‬
‫و يج أن تتم عملية تصفير العلم ‪ T0IF‬ضمن روتين خدمة المقاطعة ‪ ISR‬قبل تمكين هنذه المقاطعنة منرة‬
‫أخرى‪.‬و ينذكر أن مقاطعنة المؤقنت ‪ TMR0‬ال تسنتطيع إخنراا المعنالن منن نمنط الراحنة )‪ (Sleep‬ألن هنذا‬
‫المؤقت سيكون غير عاا أص عندما يكون المتحكم داخ ي هذا النمط‪.‬‬
‫‪ 5-1-12‬المؤقت ‪ TIMER0‬في نمط العداد >‪<Counter‬‬
‫حتى يستخد هذا المؤقت كعداد ينبغي تزويده بنبضات ساعة خارجينة وهننا يجن تنو ير متطلبنات خاصنة‬
‫بحيت تضمن تزامن نبضات الساعة الخارجية مع النبضات الداخلية ‪TOSC‬‬
‫كما يج تدمين تدخير زمني قبل زيادة المؤقت بعد حدوث التزامن )‪.(synchronization‬‬
‫‪-1‬تزامن نبضات الساعة الخارجية )‪(External Clock Synchronization‬‬
‫عنننندما ال ينننتم اسنننتخدا المقسنننم نننإن مننندخل نبضنننات السننناعة الخارجينننة ‪ TOCKI‬يكنننون مسننناويا لخنننرا‬
‫المقسم‪.‬وتتم عملينة تنزامن النبضنات ‪ TOKI‬منع النبضنات الداخلينة ‪ TOSC‬بواسنطة أخنذ عيننات (نمذجنة )‬
‫)‪ (Sampling‬من خرا المقسم (الذي هو نفسم مدخل النبضنات الخارجينة ) ني األدوار ‪ Q4,Q2‬منن أدوار‬
‫النبضات الداخلية وذلك كما هو موضح ي الشمل (‪ ,)12-5‬حيت توضح األسهم لح ات أخنذ ( النمذجنة )‬
‫العينننات لاشننارة ‪ TOKI‬ويجن أن تكننون النبضننات ‪ YOCKI‬نني المسننتوى العننالي "‪ "1‬لفتننرة ال تقننل عننن‬
‫‪ ( 2TOSC‬باإلضننا ة إلننى تنندخير زمننني ‪ RC‬قنندره ‪ , ) 20ns‬وكننذلك أن تبقننى نني المسننتوى المنننخف "‪"0‬‬
‫لفترة ال تقل عن ‪( 2tosc‬باإلضا ة إلى تدخير زمني ‪ RC‬قدره ‪. ) 20 ns‬‬
‫عنننند اسنننتخدا المقسنننم ينننتم تقسنننيم نبضنننات السننناعة الخارجينننة بواسنننطة عنننداد (زاحنننف غينننر متنننزامن)‬
‫(‪ )asynchronous – ripple - counter‬وحتى ت ئم نبضات الساعة الخارجينة متطلبنات النمذجنة يجن أن‬
‫ين ر إلى العداد الزاحف (‪ ) ripple – counter‬بعين االعتبار بحيت تكون النبضنات ‪ TOCKI‬ذات تنرة ال‬
‫تقل عن ‪( 4TOSC‬باإلضا ة إلى تدخير زمني ‪ RC‬قدره ‪ ) 40 ns‬ألنم سيتم تقسيمها بواسطة المقسم ‪.‬‬
‫إن الشننيء الوحينند المطلننول مننن النبضننات ‪ TOCKI‬هننو أال تتجنناوز تننرة النبضننة العلويننة أو السننفلية منهننا‬
‫القيمة ‪ .10ns‬ويمكن لمزيد من التفاصيل مراجعة المواصفات الكهربائية للشريحة المدروسنة (البنارامترات‬
‫‪.) 40,41,42‬‬
‫‪ – 2‬تأخير زيادة المؤقت ‪:)TMRO Increment Delay( TMRO‬‬
‫بمننا أن خننرا المقسننم متننزامن مننع النبضننات الداخليننة إنننم يوجنند تنندخير زمننني بننين لح ننة وصننوا حا ننة‬
‫نبضات الساعة الخارجية ولح ة تزايد المؤقت بشكل حقيقي‪.‬‬
‫‪ 6-1-12‬المقسم ‪Prescaler‬‬
‫المقسم ‪:‬وهو عبارة عن عداد ذ ثمان خانات يسنتخد لتقسنيم اإلشنارة علنى دخلنم و ن نسنبة تقسنيم محنددة‬
‫برمجيا‪.‬‬
‫ويستخد المقسم لتقسيم النبضات الواردة إليم من المؤقنت ‪ TMR0‬أو منن المؤقنت المراقبنة ‪ WDT‬كمنا هنو‬
‫موضح ي الشكل (‪ )6.2‬ويعمل ني لح نة منا قنط منع أحند المنؤقتين السنابقين ولنيم منع كليهمنا بواسنطة‬
‫الخانة ‪ PSA‬الموجودة ي المسجل ‪.OPTION‬‬
‫أما نسبة التقسيم يتم تحديدها بواسطة الخانات ‪ PS0:PS2‬الموجودة ني المسنجل ‪OPTION‬وذلنك كمنا هنو‬
‫) ‪CLKOUT ( = Fosc/ 4‬‬ ‫موضح ضمن هذا المسجل‪.‬‬
‫‪Data Bus‬‬
‫‪M‬‬
‫‪0‬‬ ‫‪U‬‬ ‫‪1‬‬ ‫‪8‬‬
‫‪TOKI pin‬‬
‫‪X‬‬ ‫‪M‬‬ ‫‪SYNC‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪U‬‬ ‫‪2‬‬ ‫‪TMR0‬‬
‫‪X‬‬ ‫‪Cycles‬‬ ‫‪Reg‬‬
‫‪TOSE‬‬ ‫‪TOCS‬‬ ‫‪Set TOIF flag bit‬‬
‫‪PSA‬‬ ‫‪On Overflow‬‬

‫‪8‬‬
‫‪0‬‬
‫‪M‬‬ ‫‪8-bit Prescaler‬‬
‫‪U‬‬
‫‪1‬‬ ‫‪X‬‬
‫‪Watchdog‬‬
‫‪Timer‬‬ ‫‪-183-‬‬

‫‪8-to-1MUX‬‬
‫‪PSA‬‬ ‫‪PS2: PS0‬‬
‫‪WDT Enable bit‬‬
‫‪WDT‬‬
‫‪Time -out‬‬
‫(الشكل ‪ 6-12‬المخطط البنيوي لمقسم المؤقت ‪/ TMRO‬المؤقت ‪)WDT‬‬
‫عندما تتم اإلشارة إلى المؤقت ‪ TMR0‬دن جميع تعليمات الكتابة إلى المسجل ‪TMR0‬‬
‫(مثنل)‪ CLRF TMR0 , MOVWF TMR0, BSF TMR0.X‬سنو تمسنح المقسنم (تصنفيره) أمنا عنند‬
‫اإلشارة إلى المؤقت ‪ WDT‬إن تعليمة ‪ CLRWDT‬قط هي التي سو تمسح محتنوى المقسنم منع محتنوى‬
‫مؤقت المراقبة‪WDT.‬‬
‫‪Switching Prescaler Assignment‬‬ ‫‪ 7-1-12‬تغير تابعية المقسم‬
‫يتم تبديل تابعية المقسم من المؤقت ‪ TMRO‬إلى المؤقت ‪ WDT‬أو بالعكم أثناء البرنامن‪ ,‬ولكي يتم تجنن‬
‫حدوث عملية التصفير (‪ ) reset‬للشريحة إنم يج إتبال تسلسل منن التعليمنات موضنح ني المثناا ال حن‬
‫وذلك عند انتقاا تابعية المقسم من المؤقت ‪ TMRO‬إلى ‪ .WDT‬ويج إتبال مثنل التسلسنل حتنى إذا لنم ينتم‬
‫تمكين المؤقت ‪.WDT‬‬
‫‪)WDT‬‬ ‫المثاا ‪ :1.12‬تغير تابعية (‪Timer0‬‬
‫‪BSF‬‬ ‫‪Status, rpo‬‬ ‫‪; bank1‬‬
‫اختيار مصدر النبضات وقيمة ما لنسبة التقسيم ; '‪MOVLW b'xx0x0xxx‬‬
‫‪MOVWF Option-REG ; bank0‬‬
‫‪BCF Status, RPO‬‬ ‫‪; bank0‬‬
‫‪CLRF TMRO‬‬ ‫تصفير المسجل ‪ TMRO‬والمقسم ;‬
‫‪BSF‬‬ ‫‪Status, RP1‬‬ ‫‪; bank1‬‬
‫اختيار ‪WDT‬وعد تغير نسبة التقسيم ; '‪MOVLW b'xxxx1xxx‬‬
‫‪MOVWF Option-RGG‬‬ ‫;‬
‫‪BCF‬‬ ‫‪Status, RPO ; bank0‬‬
‫و نني المثنناا السنناب إذا كانننت نسننبة التقسننيم النهائيننة المرغوبننة هنني غيننر النسننبة ‪ 1.1‬ننإن التع نديل األوا‬
‫للمسجل ‪ ( OPTION-REG‬ي السطرين ‪ )3.2‬غينر ضنروري‪ .‬وإذا كاننت نسنبة التقسنيم النهائينة هني ‪1.1‬‬
‫تحميل قيمة تقسيم مؤقتة ( ي السطرين ‪ )2.3‬هي غير ‪.1.1‬‬
‫أما نسبة التقسيم النهائية يتم تحميلها ي عملية التعديل األخيرة للمسجل ‪.OPTION‬‬
‫‪ )Timer0‬بإمكاننك أن تسنتخد التسلسنل المتبنع ني المثناا‬ ‫وعندما نريند تغيينر تابعينة المقسنم (‪WDT‬‬
‫التالي‪:‬‬
‫‪)Timer0‬‬ ‫المثاا ‪ :2.12‬تغير التابعية(‪WDT‬‬
‫‪CLRWDT‬‬ ‫تصفير المقسم و المؤقت ‪; WDT‬‬
‫‪BSF STATUS, RPO‬‬ ‫‪; bank1‬‬
‫'‪MOVWF b'xxxx0xxx‬‬ ‫اختيار ‪TMRO‬ونسبة تقسيم جديدة ;‬
‫;‪MOVWF OPTION-REG‬‬
‫‪BCF Status, RPO‬‬ ‫‪; Bank0‬‬
‫‪Initialization‬‬ ‫‪ 8-1-12‬التهيئة‬
‫بما أن للمؤقت ‪TMR0‬مصدرين لنبضات الساعة لذا سيكون لدينا مثالين عن تهيئة هذا المؤقت‪.‬‬
‫يريننا المثناا األوا كيفينة تهيئنة ‪ Timer0‬ني نمنط المؤقنت )‪ (timer mode‬أمنا المثناا الثناني يريننا كيفينة‬
‫تهيئة ‪ Timer0‬ي نمط العداد )‪.(counter mode‬‬
‫المثال ‪Timer Mode : 3.12‬‬
‫‪CLRF TMR0‬حجن المقاطعنات‬ ‫;‬ ‫تصنفير المسنجل ‪TMR0‬‬
‫‪CLRF INTCON‬‬ ‫;‬ ‫‪BSF‬‬ ‫‪STATUS ,PRO‬‬ ‫وتصفير العلنم ‪; TOIF‬‬
‫‪MOVLW 0XC3‬‬ ‫حج إمكانية انحياز النا ذة ‪ B‬نحو األعلى‬ ‫‪ban1‬‬
‫;‬
‫‪MOVWF OPTION-REG‬‬ ‫;‬ ‫وتحديد المقاطعة عند الحا ة الصاعدة‬
‫;‬ ‫زيادة ‪ Timer0‬عند النبضات الداخلية‬
‫;‬ ‫بنسبة تقسيم ‪1:16‬‬
‫‪-184-‬‬
‫‪BCF STSTUS, PR0‬‬ ‫‪; bank0‬‬
‫‪BSF INTCON ,TOIE‬‬ ‫;‬ ‫تمكين المقاطعة الخاصة بالمؤقت ‪TIMR0‬‬
‫حالة عد تمكين المقاطعات ;‬
‫‪Wait over BTFSS INTCON, T0IF‬‬
‫‪GOTO wait-over‬‬
‫حدوث طفحان ي هذه النقطة;‬
‫المثال ‪Counter mode :4.12‬‬
‫‪CLRF TMRO‬‬ ‫;‬ ‫تصفير مسجل المؤقت ‪Timer0‬‬
‫‪CLRF INTCON‬‬ ‫;‬ ‫حج المقاطعات وتصفير ‪T0IF‬‬
‫‪BSF Status, PR0‬‬ ‫;‬ ‫‪Bank1‬‬
‫يزداد ‪ TMR0‬عند انتقاا النبضات ;‬
‫الخارجية ‪TOCKI‬من ‪ high‬إلى ‪; low‬‬
‫;‬ ‫بنسبة تقسيم ‪1:256‬‬
‫‪BCF STSTUS, RP0‬‬ ‫‪; bank0‬‬
‫‪BSF INTCON, T0IE‬‬ ‫تمكين مقاطعة ‪; TMR0‬‬
‫‪BSF INTCON GIE‬‬ ‫تمكين المقاطعة العامة ;‬
‫حالة عد تمكين المقاطعات;‬
‫‪Wait over BTFSS‬‬ ‫‪INTCON, T0IF‬‬
‫‪GOTO wait-over‬‬
‫حدوث طفحان ي العداد;‬
‫‪Timer 1‬‬ ‫المؤقت‬ ‫‪2-12‬‬
‫‪ 1-2-12‬مقدمة‬
‫المؤقت ‪ Timer1‬هو عبارة عن مؤقت ‪ /‬عداد ذو ‪ 16‬خانة وهو مقسم إلى مسجلين كل منهما ذو ‪8 bit‬‬
‫هما المسجلين ‪ TMR1H, TMR1L‬وهمنا قناب ن للقنراءة والكتابنة )‪ .(Readable And Writable‬حينت تنتم‬
‫زيادة محتويات المسجلين ‪ TMR1H: TMR1L‬من القيمة ‪.0000h‬‬
‫أما المقاطعة الطفحان الخاصة بهذا المؤقت تتم اإلشارة إليها بالعلم ‪ TMR1IF‬ويمكن حج أو تمكين‬
‫هذه المقاطعة بواسطة الخانة ‪ TMR1IE‬الخاصة بتمكين هذا المؤقت ‪.‬‬
‫‪ 2-2-12‬أنماط عمل المؤقت ‪Timer 1‬‬
‫‪ .1‬نمط المؤقت المتزامن )‪. (synchronous timer‬‬
‫‪ .2‬نمط العداد المتزامن )‪. (synchronous counter‬‬
‫‪ .3‬نمط العداد غير المتزامن )‪. (Asynchronous counter‬‬
‫ينتم اختيننار أحنند هننذه األنمنناط برمجيننا بواسننطة خانننات المسننجل ‪ T1CON‬حيننت أن خانننة اختيننار مصنندر‬
‫نبضات الساعة هي ‪ , TMR1CS‬وخانة التوقيت هي ‪ TISYNC‬وسنشرح هذا المجل وخاناتم بالتفصيل ي‬
‫قرة قادمة ‪.‬‬
‫تزداد ي نمط المؤقت ) ‪ (timer mode‬محتويات المؤقت‪ Timer 1‬مع كنل دورة تعليمينة ‪(instruction‬‬
‫)‪ ,cycle‬أمننا غنني نمننط العننداد )‪ (counter mode‬إنننم سننيزداد مننع كننل جبهننة صنناعدة مننن نبضننات السنناعة‬
‫الخارجية المطبقة على القط ‪ T1CKI‬هنذا ويمكنن تشنغيل ‪ turn on‬هنذا المؤقنت أو إيقنا عملنم ‪turn off‬‬
‫باستخدا خانة التحكم ‪ TMRION‬ي المسجل ‪ .T1CON‬كمنا ويوجند لهنذا المؤقنت ‪ Timer1‬مندخل تصنفير‬
‫داخلي )‪(internal reset input‬‬
‫وهذه الخاصة يتم استخدامها مع الن ا ‪.CCP‬‬
‫عننندما يننتم تمكننين هننزاز المؤقننت ‪( Timer1‬الخننارجي) وذلننك بتفعيننل الخانننة ‪ TIOSCEN‬وسننيتحوا‬
‫القطبان ‪( T1OSO, TIOSI‬ويكا ئان القطبين ‪ RC1,RC0‬ي المنتحكم ‪ ) PIC16C73‬إلنى قطبني دخنل وينتم‬
‫تجاهل الخانات المناظرة لهما ي المسجل ‪. TRIS‬‬
‫‪Timer1‬‬ ‫‪ 3-2-12‬بنية المؤقت‬
‫يبين لنا الشكل ‪ 7-12‬مخططا صندوقيا يمثل البنية الداخلية للمؤقت ‪.Timer1‬‬

‫‪-185-‬‬
‫‪Timer Control Register‬‬ ‫‪ 4-2-12‬مسجل التحكم ‪TICON‬‬

‫‪U-0 U-0‬‬ ‫‪R/W-0‬‬ ‫‪R/W-0‬‬ ‫‪R/W-0‬‬ ‫‪R/W-0‬‬ ‫‪R/W-0‬‬ ‫‪R/W-0‬‬


‫‪-‬‬ ‫‪-‬‬ ‫‪TICKPS1 TICKPS0 T1OSCEN T1SYNC‬‬ ‫‪TMR1CS TMR1ON‬‬

‫‪bit 7‬‬ ‫‪bit0‬‬

‫خانات المسجل ‪:‬‬


‫‪ ‬الخانتان ‪ bit 7:6:‬تقرأان ي الحاا "‪"0‬‬
‫‪ ‬الخانتان ‪ TICKPS1:TICKP0 :bit 5:4‬هما خانتا اختيار نسبة تقسيم دخل المؤقت‬
‫)‪(Timer1 Input Clock Prescales Select bit‬‬
‫وتكون نس التقسيم كما يلي‪:‬‬
‫قيمة المقسو ‪11=1:8‬‬
‫قيمة المقسو ‪10=1:4‬‬
‫قيمة المقسو ‪01=1:4‬‬
‫قيمة المقسو ‪00=1:1‬‬
‫‪ ‬الخانة ‪ T10SCEN bit3‬خانة تمكين هزاز المؤقت ‪Timer1‬‬
‫‪=1‬الهزاز قديم تم تمكينم‬
‫‪ =0‬الهنزاز غينر ممكنن (مفعنل) وهننا ينتم إلغناء مقاومنة التغذينة العكسنية وقالن الهنزاز ‪(oscillator‬‬
‫)‪ inverter‬لتمنع تصريف الطاقة(تعمل كدخل‪/‬خرا)‪.‬‬
‫‪ ‬الخانة ‪:TISYNC bit2‬خانة اختيار التزامن مع نبضات الساعة الخارجية‪ .‬نميز هنا حالتين ‪:‬‬
‫‪ .1‬عندما ‪TME1CS = 1‬‬
‫‪ = 1‬غير متزامن مع نبضات الساعة الخارجية‪.‬‬
‫‪ = 0‬متزامن مع نبضات الساعة الخارجية‪.‬‬
‫‪.2‬‬
‫‪-186-‬‬
‫عندما ‪TMRCS = 0‬‬
‫يتم إهماا هذه الخانة ويقو المؤقت ‪ Timer1‬باستخدا نبضات الساعة الداخلية عندما ‪TR1CS = 0‬‬
‫‪ ‬الخانة ‪ :TR1CS bit‬خانة اختيار مصدر نبضات الساعة ) ‪(Timer1 Clock Source Select bit‬‬
‫‪ = 1‬المصدر خارجي على القط ‪( T1OSO / T1CKI‬عند الجبهة الصاعدة)‬
‫‪ = 0‬مصدر نبضات داخلي )‪)FOSC/4‬‬
‫‪ ‬الخانة ‪ :TMR1ON‬خانة تشغيل المؤقت ‪(Timer 1 On bit) Timer 1‬‬
‫‪ = 1‬تمكين المؤقت‬
‫‪ = 0‬إيقا المؤقت‬

‫‪Timer1‬‬ ‫‪ 12-2-5‬أنماط عمل المؤقت‬


‫‪Timer1‬‬ ‫‪mode‬‬ ‫‪ )1‬نمنننننننننننننننننننننننننننننننط المؤقنننننننننننننننننننننننننننننننت‬
‫يتم اختيار هذا النمط بتصفير الخانة ‪ TMR1CS‬ي المسجل ‪ ,T1CON‬و ني هنذا الننمط تكنون نبضنات‬
‫الساعة على دخل المؤقت هي النبضات الداخلية ذات التردد ‪FOSC /4.‬‬
‫‪ )2‬نمط العداد المتزامن )‪(synchronized counter mode‬‬
‫أوالً‪ :‬التعريف بالعداد المتزامن‬
‫يتم اختيار هذا النمط بتفعيل الخانة ‪, TMR1CS‬و ي هذا النمط تتم زيادة محتوينات المؤقنت ‪Timer1‬‬
‫عند مل جبهة صناعدة )‪ (rising edge‬منن النبضنات المطبقنة علنى القطن ‪ T1OSI‬وذلنك عنندما يكنون‬
‫هزاز المؤقت قد تم تمكينم بواسطة تفعيل الخانة ‪ , T1OSCEN‬و ي حاا عد تمكين هزاز المؤقت تتم‬
‫الزيادة تبعا للنبضات على القط ‪ T1OSO / T1CKI‬كما هو موضح ي الشكل ‪ 7-12‬وإذا تم تصفير‬
‫الخانة ‪ T1SYNC‬إن نبضات الدخل الخارجية )‪ (external clock in put‬ستتزامن مع نبضات الساعة‬
‫الداخليننة وهننذا التننزامن سننيتم بعنند مرحلننة المقسننم ‪ , prescaler‬حيننت أن المقسننم هننو مننن نننول العندادات‬
‫الزاحفة غير المزامنة ‪.‬‬
‫و ي هذه التهيئة وأثناء نمط الراحة (‪ )sleep‬لن تنتم زينادة المؤقنت ‪ Timer1‬حتنى ولنو كاننت هنناب‬
‫نبضات ساعة خارجية مطبقة‪.‬حيت أن دارة التزامن)‪(synchronization circuit‬هي ي الحقيقة مغلقة‬
‫)‪.(shut off‬‬
‫وعلننى كننل حنناا ننإن المقسننم سيسننتمر بالزيننادة‪.‬و ي الفقننرة التاليننة سننو نننناقت كيفيننة تزوينند المؤقننت‬
‫نبضات توقيت خارجية عندما يكون ي نمط العداد المتواقت‪.‬‬
‫ثانيا‪:‬توقيت نبضات دخل الساعة الخارجينة ني نمنط العنداد المتنزامن ‪External clock Input Timing For‬‬
‫)‪Synchronized Counter Mode‬‬
‫عندما يتم استخدا مدخل نبضات الساعة الخارجية ي نمط العنداد المتنزامن نإن هنناب متطلبنات منن‬
‫الواج علينا أخذها بعين االعتبار حيت أن نبضات الساعة الخارجية مرتبطة بتزامن نبضات السناعة‬
‫الداخلية ‪ TOSC‬باإلضا ة إلى وجود تدخير ي الزيادة الفعلية للمؤقنت ‪ TMR1‬وذلنك بعند إنشناء عملينة‬
‫التزامن‪.‬‬
‫عندما تكون نسبة المقسم هي‪ 1:1:‬إن النبضات على خرا المقسم ستكون نفسنها علنى مندخل نبضنات‬
‫الساعة الخارجية )‪(external clock input‬‬
‫أمننا بالنسننبة لعمليننة التننزامن بننين النبضننات علننى ‪ T1CKI‬والنبضننات الداخليننة إنهننا تنجننز بواسننطة‬
‫نمذجة)‪ (Sampling‬النبضات على خرا المقسم ‪ TOSC‬بشكل متناول مع النبضات الخاصنة بنبضنات‬
‫الساعة الداخلية ‪.‬‬
‫لذلك يعتبر من الضروري استمرار المنط على القط ‪ T1CKI‬ي حالة ‪ 1‬لمدة ‪2T0SC‬‬
‫على األقل (باإلضا ة إلى زمن تدخير‪ RC‬صغير ) وكذلك ني حالنة ‪ 0‬وينصنح هننا بمراجعنة الخنوا‬
‫الكهربائية لشريحة المتحكم المستخد (البارامترات‪. )45,46,47‬‬
‫عندما تكون نسبة المقسم نسبة ما مختلفة عن النسبة ‪ 1:1‬إن نبضات دخل الساعة الخارجية سو يتم‬
‫تقسيمها بواسطة العداد المتموا ي المقسم )‪ (ripple-counter prescaler‬لذا نإن خنرا المقسنم سنو‬
‫يكون متناظرا )‪ (symmetrical‬وحتى توا نبضات الساعة الخارجية متطلبات عملية المقسم النمذجة‬
‫يج ن أخننذ العننداد المتمننوا )‪ (ripple-counter‬بالحسننبان وبننناء عليننم إنننم مننن الضننروري أن تكننون‬
‫‪-187-‬‬
‫النبضات على القط ‪ T1CKI‬ذات ترة زمنية على األقل ‪( 4T0SC‬باإلضا ة إلى تدخير ‪ RC‬صغير )‬
‫المقسننمة علننى قيمننة هنني نسننبة التقسننيم ‪.‬ومننن المتطلبننات األخننرى ألزمنننة المنطقننين العننالي )‪(high‬‬
‫والمنخف )‪ (low‬هو أن ال تتجاوز تلك األزمنة عرض النبضة أألصغري المشنار إلينم ني الخنوا‬
‫الكهربائية البارامترات (‪.)40,42,45,46,47‬‬
‫نمط العداد غير المتزامن )‪(A synchronized Counter Mode‬‬ ‫‪)3‬‬
‫أوالً ‪ :‬التعريف بالعداد غير المتزامن‬
‫إذا تم تفعيل الخانة ‪ T1SYNC‬ي المسجل ‪ T1CON‬إن نبضات الساعة الخارجية لن تكون متزامننة‬
‫ويستمر المؤقت بالتزامن بشكل غير متزامن ‪ asynchronously‬مع نبضات الساعة الداخلية وسيسنتمر هنذا‬
‫المؤقت بالعمل أثناء حالة الراحة ‪ sleep‬وبإمكانم توليد مقاطعة عند طفحانم تسب إيقاظ المعالن ‪.‬‬
‫وعليك أن تتعامل بشيء من الحيطة عندما تحتاا إلى عملية قراءة ‪ /‬كتابة لهنذا المؤقنت ني برنامجنك‬
‫وهو األمر الذي سنعالجم ي قرة قادمة ‪ ,‬وحيت أن هذا المؤقت بإمكانم أن يعمل أثناء ترة الراحة سيكون‬
‫بإمكانك استخدامم ي إنجناز سناعات ذات توقينت حقيقني صنحيح )‪ . (true real-time clock‬بقني أن ننذكر‬
‫بدن استخدا المؤقت ‪ Timer1‬ي نمط العداد غير المتزامن سو لن يسمح باستخدامم كمولد قاعندة زمنينة‬
‫من أجل ن امي ‪( Capture‬المسك) و‪( Compare‬المقارنة )‪.‬‬
‫مالحظة‪:‬‬
‫إذا تم تفعيل الخانة ‪ T1SYNC‬فإن المؤقت سيزداد بشكل غير متزامن وعندها فإن نبضات الدخل يجب أن توافق متطلبقات‬
‫الزمن أألصغري لكال المنطقين "‪ "0","1‬وذلك تبعا للخواص الكهربائية للشريحة (البارامترات ‪. ) 47,46,45‬‬
‫ثانياً‪ :‬القراءة والكتابة إلى المؤقنت ‪ Timer1‬ني نمنط العنداد غينر المتنزامن ‪Asynchronized Counter‬‬
‫) ‪) Mode Reading &Witting Timer1 in‬‬
‫‪ ‬إن قراءة أحد المسلين ‪ TMR1L , TMR1H‬أثناء عمل المؤقت بتغذية من نبضنات سناعة خارجينة‬
‫غير متزامنة ستعطي قراءة حقيقية مضمونة ‪.‬‬
‫‪ ‬غير أنم من المستحسن للمستخد أيضع نص عينيم أن قراءة المؤقت ذو الـ ‪ 16 bit‬على محلتين‬
‫‪ 8bit‬سيطرح إشكالية سببها احتماا طفحان المؤقت بين تلك القراءات ‪.‬‬
‫‪ ‬من أجل عملية الكتابنة إنننا ننصنح المسنتخد أن يوقنف المؤقنت قبنل كتابنة القيمنة المرغوبنة إلينم‪.‬‬
‫حيت أن الكتابة أثناء زيادة مسج ت المؤقت ستسب بخل اضطرال ال يمكننك التنبنؤ بعنده بقيمنة‬
‫مسج ت المؤقت‪.‬‬
‫‪ ‬تتطل ن قننراءة القيمننة ذات ‪ 16 bit‬سننيئا مننن العنايننة حيننت أن ك ن عمليتنني القننراءة المنفصننلتين‬
‫ضروريتين لقراءة كامل الخانات النـ‪ , 16 bit‬وسنو نوضنح ذلنك ني المثناا ال حن والنذي منن‬
‫الضروري دراستم بعناية ‪.‬‬
‫مثال ‪ :5.12‬قراءة ‪16‬خانة من قيمة المؤقت العامل‬
‫جميع المقاطعات محجوبة;‬
‫‪MOVF‬‬ ‫‪TMR1H, W‬‬ ‫;‬ ‫قراءة البايت العلوي‬
‫‪MOVWF‬‬ ‫‪TMPH‬‬ ‫إلى مسجل أغراض عامة ;‬
‫‪MOVF‬‬ ‫‪TMR1L, W‬‬ ‫قراءة البايت السفلي ;‬
‫‪MOVWF‬‬ ‫‪TMPL‬‬ ‫إلى مسجل أغراض عامة ;‬
‫‪MOVF‬‬ ‫‪TMR1H, W‬‬ ‫قراءة البايت العلوي ;‬
‫‪SUBWF‬‬ ‫‪TMPH, W‬‬ ‫طرح القراءة الماضية للبايت من القراءة الحالية ;‬
‫‪BTFSC‬‬ ‫‪STSTUS, Z‬‬ ‫هل النتيجة صفر والقراءتين متساويتين ;‬
‫;‬
‫من الممكن أن قيمة ‪ TMR1L‬قد تتغير بين إنجاز عملية قراءة البايت;‬
‫العلوي وعملية قراءة البايت السفلي السابقتين لذا سيتم;‬
‫ي هذه النقطة قراءة البنايتين السفلي والعلوي للحصوا على القيمة الصحيحة;‬
‫‪MOVF‬‬ ‫‪TMR1H, W‬‬ ‫;‬ ‫قراءة البايت العلوي‬
‫‪MOVWF‬‬ ‫‪TMPH‬‬ ‫;‬
‫‪MOVF‬‬ ‫‪TMR1L, W‬‬ ‫;‬ ‫قراءة البايت السفلي‬
‫‪MOVWF‬‬ ‫‪TMPL‬‬ ‫;‬
‫تمكين المقاطعات حس الرغبة;‬
‫‪CONTINUE‬‬ ‫;‬ ‫تكملة البرنامن‬
‫المثال ‪ :6.2‬كتابة ‪ 16‬خانة لقيمة المؤقت العامل‬
‫جميع المقاطعات محجوبة;‬
‫‪-188-‬‬
‫‪CLRF‬‬ ‫‪TMR1L‬‬ ‫مسح البايت السفلي لضمان عد الطفحان إلى ;‬
‫البايت العلوي ;‬
‫‪MOVLW HI-BYTE‬‬ ‫القيمة التي ستنسخ إلى ‪; TMR1H‬‬
‫‪MOVWF TMR1H, F‬‬ ‫كتابة البايت العلوي ;‬
‫‪MOVLW LO-BYTE‬‬ ‫القيمة التي ستنسخ إلى‪; TMR1L‬‬
‫‪MOVWF‬‬ ‫‪TMR1L, F‬‬ ‫كتابة البايت السفلي ;‬
‫تمكين المقاطعات المرغوبة ;‬
‫‪CONTINUE‬‬ ‫تكملة البرنامن ;‬

‫‪ 6-2-2‬هزاز المؤقت ‪Timer1‬‬


‫تتوضننع دارة الهننزاز الكريسننتالي بننين القطبننين ‪ T10S0,T10SI‬ويننتم تمكننين هننذه النندارة بواسننطة الخانننة‬
‫‪ T10SCEN‬من المسجل ‪.T1CON‬وهذا الهزاز ذو طاقة منخفضة وبتردد عمل حتى ‪200 khz‬‬
‫ويستمر هذا الهزاز بالعمل أثنناء تنرة الراحنة ‪ .‬وغالبنا منا ينتم اختينار الكريسنتالة ذات التنردد ‪32‬‬
‫‪ . KHz‬يبين الجدوا ‪ 1-12‬قيم المكثفات ال زمة من أجل كل كريستالم مقابلة ‪.‬‬

‫نول الهزاز‪OSC‬‬ ‫التردد‬ ‫‪C1‬‬ ‫‪C2‬‬


‫‪LP‬‬ ‫‪32 KHz‬‬ ‫‪15 PF‬‬ ‫‪15 PF‬‬
‫‪100 KHz‬‬ ‫‪15 PF‬‬ ‫‪15 PF‬‬
‫‪200 KHz‬‬ ‫‪0-15 PF‬‬ ‫‪0-15 PF‬‬
‫الجدول ‪1-12‬‬
‫مالحظة‪:‬‬
‫إن اختيار المكثفة األكبر سيزيد من استقرار الهزاز إال أنها أيضا تزيد من زمن اإلقالع )‪.(start up time‬‬
‫‪ 7-2-12‬تطبي نموذجي ‪Typical Application‬‬
‫سنستخد م مح وخوا المؤقت ‪ Timer1‬ني التطبيقنات التني تحتناا إلنى االحتفناظ بالتوقينت الحقيقني‬
‫)‪ (real time‬مع ضمان االسته ب المنخف للطاقة األمنر النذي يتحقن بواسنطة المؤقنت ‪ , Timer1‬حينت‬
‫أن هزاز المؤقت ‪ Timer1‬يسمح بالعمل أثناء الراحة )‪ (sleep‬ويستمر المؤقت بالتزايد أثنناء ذلنك ‪ ,‬وعنندما‬
‫يحنندث طفحننان نني المؤقننت ‪ Timer1‬سننتقو المقاطعننة الخاصننة بننذلك بإيقنناظ الشننريحة ويننتم عننندها تحننديت‬
‫المسج ت الموا قة ‪.‬‬
‫و ي الشكل ‪ 8-12‬نبين الدارة المعدة بهد التطبي الساب ‪:‬‬

‫‪-189-‬‬
‫مالحظة‪:‬‬
‫عندما تتم تهيئة المؤقت ‪ Timer1‬في نمط العداد غير المتزامن ستستمر عملية زيقادة المسقجلين الخاصقين بهق ا المؤققت‬
‫وعندما يحدث طفحان في ه ا المؤقت فإن الخانة ‪ TMR1F‬سقو تفعقل وإذا كانقت مقاطعقة طفحقان المؤققت ‪Timer1‬‬
‫ممكنة ستحدث عملية إيقاظ المعالج من نمط الراحة‪.‬‬
‫‪ 8-2-12‬تصفير المؤقت ‪ Timer1‬باستخدام خرج قادح نظام الـ ‪CCP‬‬
‫‪Resetting Timer1 Using a ccp Trigger Output‬‬
‫إذا تم تهيئة الن ا ‪ ccp‬ي نمط المقارننة منن أجنل توليند قنادح سنببي خنا )‪ (special event trigger‬نإن‬
‫الخانات التالية ستدخذ قيما مقابلة كما ي يلي ‪CCP1M3:CCP1M0=1011‬‬
‫ممننا ينننجم عنننم إشنننارة تقننويم تصننفير المؤقننت ‪ Timer1‬علمنننا أن ذلننك األمننر لننن يننننتن عنننم تفعيننل لعلنننم‬
‫المقاطعة ‪.TMR1F‬‬
‫نني ن ننا ‪ ccp‬إنننم يجن تهيئننة و ن أحنند‬ ‫وحتننى يدخننذ المؤقننت ‪ Timer1‬خاصننية القنندح ألسننببي الخننا‬
‫النمطين التاليين ‪:‬المؤقت ‪ Timer‬أو العداد المتزامن(‪)synchronized counter‬‬
‫أما ي حالة نمط العداد غير المتزامن إن عملية التصفير السابقة قد ال تتم ولن يتم استخدامها أبندا و إذا منا‬
‫توا حدوث عملية كتابة إلى ‪ Timer1‬مع قدح سببي خا من الن ا ‪ ccp‬ستكون األولوية لعملية الكتابة‬
‫(‪.)percedence‬‬
‫و نني هننذا النننمط المسننتخد يصننبح المسننجلين ‪ CCPRxH:CCPRxL‬عبننارة عننن مسننجل تننرة ( ‪Period‬‬
‫‪ )register‬للمؤقت ‪.Timer1‬‬
‫مالحظة‪:‬‬
‫‪ .1‬لققن يققتم تصققفير المسققجلين ‪ TMR1H:TMR1L‬عنققد حققدوث التصققفير ‪ POR‬أو أي تصققفير آخققر وال يققتم‬
‫تصفيرها إال بواسطة القادح ألسقببي الخقاص ‪.CCP‬أمقا المسقجل ‪ T1CON‬يقتم تصقفير( (‪ )00h‬عنقد التصقفير‬
‫‪ P0R‬أو‪ B0R‬وألجل أي نوع آخر من التصفير فإن ه ا المسجل لن يتأثر‪.‬‬
‫‪ .2‬يتم تصفير مقسم المؤقت‪ (Timer1 Prescaler( Timer1‬عند الكتابة إلى المسجلين‬
‫‪TMR1H:TMR1L‬‬
‫‪Timer1‬‬ ‫‪ 9-2-12‬تهيئة المؤقت‬
‫سنننقد ا ن أمثلننة عننن تهيئننة المؤقننت و ن أنمنناط عملننم المختلفننة ‪ ,‬المثنناا األوا منهننا يتحنندث عننن تهيئننة‬
‫المؤقت مع مصدر نبضات سناعة داخلني ‪ ,‬والمثناا الثناني يتحندث عنن تهيئنة المؤقنت منع مصندر نبضنات‬
‫ساعة خارجي ‪ ,‬أما المثاا األخير هو يتحدث عن تهيئة المؤقت مع نمط الهزاز الخارجي ‪.‬‬
‫المثال ‪ : 7-12‬تهيئة المؤقت ‪ Timer1‬مع مصدر نبضات ساعة داخلي‬
‫‪CLRF T1CON‬‬ ‫إيقنا المؤقنت‪ ,‬اختينار مصندر نبضنات سناعة داخلني‪ ,‬حجن ;‬
‫هزاز المؤقت ‪ ,‬نسبة التقسيم ‪; 1:1‬‬
‫‪CLRF TMR1H‬‬ ‫تصفير مسجل المؤقت العلوي ;‬
‫‪CLRF TMR1L‬‬ ‫تصفير مؤقت المسجل السفلي ;‬
‫‪CLRF INTCON‬‬ ‫حج المقاطعات ;‬
‫‪BSF STATUS, RP0‬‬ ‫‪;Bank‬‬
‫‪CLRF PIE1‬‬ ‫حج ن المقاطعننات المحيطيننة ;‬
‫‪BCF STATUS , RP0‬‬ ‫‪; Bank0‬‬
‫‪CLRF PIR1‬‬ ‫مسح أع المقاطعات المحيطية ;‬
‫‪MOVLW 0X30‬‬ ‫اختيار مصدر نبضات الساعة داخلي بنسبة تقسيم ;‬
‫‪MOVWF T1CON‬‬ ‫‪ 1:8‬وحج هزاز المؤقت وإيقا المؤقت;‬
‫يبدأ المؤقت ‪ Timer1‬بالزيادة ; ‪BSF T1CON TMR1ON‬‬
‫المثال‪ :8-12‬تهيئة المؤقت مع مصدر نبضات ساعة خارجي( متزامن )‬
‫‪TLRF T1 CON‬‬ ‫إيقا المؤقت ‪ , Timer1‬اختيار مصدر نبضات ;‬
‫داخلي‪ ,‬حج هزاز المؤقت‪ ,‬نسبة التقسيم ‪; 1:1‬‬
‫‪CLRF TMR1H‬‬ ‫تصفير مسجل المؤقت العلوي ;‬
‫‪CLRF TMR1L‬‬ ‫تصفير مؤقت المسجل السفلي ;‬
‫‪CGRF INTCON‬‬ ‫حج المقاطعات ;‬

‫‪-190-‬‬
‫‪BSF STATUS, RP0 ;Bank1‬‬
‫‪CLRF PIE1‬‬ ‫حج المقاطعات المحيطية ;‬
‫‪BSF STATUS, RP0 ;Bank0‬‬
‫تمكين مصدر نبضات الساعة الخارجي‪ ,‬وكذلك ;‬
‫دارة الهزاز نسبة تقسيم ‪; 1:8‬‬
‫ومصدر نبضات الساعة متزامن مع الشريحة وما يزاا المؤقت متوقف ;‬
‫بدأ المؤقت بالتزايد ; ‪BSF T1CON , TMR1ON‬‬
‫;‬
‫بما أن المقاطعات محجوبة لذلك سنقو بفحص ;‬
‫علم الطفحان ;‬
‫‪T1-OVFL-WAIT‬‬
‫‪BTFSS PIR1, TMR1IF‬‬
‫‪GO TO T1-OVFL-WAIT‬‬
‫;‬
‫حدوث الطفحان وإنجاز العمليات ال زمة ;‬
‫;‬
‫‪BCF‬‬ ‫‪PIR1, TMR1IF‬‬
‫المثال ‪ :9-12‬تهيئة المؤقت ‪ Timer 1‬مع مصدر نبضات الساعة خارجي (غير متزامن)‬
‫‪CLRF T1CON‬‬ ‫إيقا المؤقت ‪ ; Timer1‬مصدر نبضات داخلي;‬
‫ح هزاز المؤقت‪ ,‬بسمة التقسيم‪; 1:1‬‬
‫‪CLRF TMR1H‬‬ ‫تصفير مسجل المؤقت العلوي ;‬
‫‪CLRF TMR1L‬‬ ‫تصفير مسجل المؤقت السفلي ;‬
‫‪CLRF INTCON‬‬ ‫;‬ ‫حج المقاطعات‬
‫‪BSF STATUS, RPO ; Bank1‬‬
‫‪CLRF PIE1‬‬ ‫حج المقاطعات المحيطية ;‬
‫‪MOVW 0X3E‬‬ ‫مصدر نبضات خارجي مع تمكين دارة الهزاز;‬
‫بنسبة التقسيم ‪ 1:8‬ومصدر النبضات غير متزامن ;‬
‫مع الشريحة والمؤقت ما يزاا متوقفا ;‬
‫‪BSF‬‬ ‫‪T1CON‬‬ ‫‪,TMR1ON‬‬ ‫بنننننندء المؤقننننننت بالتزاينننننند ;‬
‫;‬
‫بما أنم تم حج مقاطعة الطفحان لذا يتم حص علم الطفحان ;‬
‫;‬
‫‪T1-OVFL-WAIT‬‬
‫‪BTFSS‬‬ ‫‪PIR1, TMR1IF‬‬
‫‪GO TO T1-OVFL –WAIT‬‬
‫;‬
‫حدوث طفحان وإجراء العمليات ال زمة ;‬
‫;‬
‫تصفير علم الطفحان ; ‪BCF PIR1,TMR1F‬‬

‫‪-191-‬‬

You might also like