عيون العرب - ملتقى العالم العربي

العودة   عيون العرب - ملتقى العالم العربي > عيــون الأقسام العلمية > تحميل كتب مجانية, مراجع للتحميل

تحميل كتب مجانية, مراجع للتحميل كتب مجانية, كتب عربية للتحميل, كتب ألكترونية, كتب اجنبية, كتب تعليمية, مراجع عربية,كتب للتحميل, كتب للقراءة.

إضافة رد
 
LinkBack أدوات الموضوع انواع عرض الموضوع
  #26  
قديم 09-22-2011, 06:44 PM
 
نظام المؤقت Timer mode
  • يتم اختيار نظام المؤقت بمسح clear الخانة TOCS(OPTION register, bit 5) .
  • فى نظام المؤقت يتزايد السجل TMR0 عند كل دورة تعليمة . ولأن هذا السجل ذو سعة 8-bit فيمكنه العد من الصفر 00 إلى FF (255) , وعندما يصل إلى أقصى قيمة له وهى FF (255) ويتقدم فى التزايد فيلف العد عائدا إلى الصفر 00 وتعرف هذه الحالة بالطفحان overflow (تجاوز الحد الأقصى) ويتم تسجيلها بواسطة الخانة T0IF (Timer0 Interrupt Flag) بالسجل INTCON (Interrupt Control) بجعلها بالقيمة set أى 1 , حيث يمكن لهذه الحالة بدء (توليد) مقاطعة والتى تعرف باسم " المقاطعة بالمؤقت صفر " Timer0 Interrupt إذا ما كانت ممكنة لعمل مقاطعة .
  • يتم تمكين المقاطعة بالمؤقت Timer 0 بجعل الخانة T0IE(Timer0 Interrupt Enable)" تمكين المقاطعة بالمؤقت صفر " بسجل التحكم فى المقاطعة INTCON بواحد أى set بالأضافة إلى خانة التمكين العام GIE . هذه المقاطعة هى التى يجب أن تبين أن الوقت إنتهى وتحدث عند حدوث طفحان بالسجل TMR0 .
  • يجب مسح clear الخانة TOIF " علم المقاطعة بالمؤقت صفر " بواسطة روتين خدمة المقاطعة بحيث يمكن حدوث مقاطعة بالمؤقت من جديد .
نفترض أن الميكروكونترولر PIC يعمل على مذبذب ساعة بتردد Fosc =4 MHz فإن تردد نبضات ساعة التعليمات سوف تكون Fosc /4 = 1 MHz . نتيجة لذلك يقوم العداد بالتزايد كل واحد ميكروثانية 1 μs بالضبط .وهذا يعنى أن المؤقت Timer 0 سوف يستغرق 256 μs لكى يعد من الصفر إلى الصفر التالى . عن طريق تحميل سجل المؤقت TMR0 بقيمة مسبقة مناسبة يمكن اختيار فترات زمنية أصغر .على سبيل المثال إذا تم تحميل السجل TMR0 مسبقا بالقيمة 206 فإن المؤقت Timer 0 سوف يحدث له طفحان بعد 50 μs فقط . علاوة على ذلك يوجد قاسم تردد مبرمج بسعة 8-bit يعرف باسم prescaler "المقياس المسبق " أو " معامل القسمة " وهو متاح لقياس الفترات الزمنية الطويلة . والمقياس المسبق هو دائرة قسمة تقع بين مصدر نبضات الساعة والمؤقت وتقوم بقسمة التردد الداخل على قيمة من ثمانى قيم ثنائية تقع ما بين القيمة 2 والقيمة 256 .إذا كان تردد نبضات ساعة التعليمات 1MHz فإن أقصى فترة زمنية سوف تكون
256 x 256 μs = 65.536 ms وهى التى تناظر معمل قسمة 256 . قيم معامل القسمة يتم اختيارها برمجيا بواسطة الخانات PS0, PS1,PS2 " خانات اختيار معامل القسمة " بالسجل OPTION .
من أجل تخصيص استخدام معامل القسمة مع موديول المؤقت Timer 0 يجب مسح clear = 0 الخانة PSA " تخصيص معامل القسمة " . إما إذا كانت الخانة PSA بواحد set = 1 فلا يتم تخصيص أى معامل قسمة لموديول المؤقت .
فيما يلى تفاصيل السجل OPTION_REG والسجل INTCON :







نظام العداد Counter Mode
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #27  
قديم 09-22-2011, 06:45 PM
 
نظام العداد Counter Mode
  • يتم اختيار نظام العداد بجعل الخانةTOCSبالسجل OPTION بواحد set = 1 .
  • فى هذا النظام يقوم موديول المؤقت Timer 0 بعد نبضات الساعة الخارجية الموجودة على الطرف RA4/T0CKI.
  • سوف يتزايد المؤقت سواء عند الحافة الصاعدة أو عند الحافة الهابطة لنبضات الساعة والتى يتم اختيار ذلك برمجيا بواسطة الخانة T0SE(Timer0 Source Edge) " حافة مصدر المؤقت صفر " بالسجل OPTION .فإذا كانت هذه الخانة بواحد set فسوف يتزايد المؤقت عند الحافة الهابطة لكل نبضة من نبضات الساعة التى تصل إلى الطرف RA4/T0CKI . مرة أخرى يمكن توسعة أو تمديد مدى العداد باستخدام prescaler .
الدائرة الكهربية :
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #28  
قديم 09-22-2011, 06:47 PM
 
الدائرة الكهربية :


البرنامج :
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #29  
قديم 09-22-2011, 06:49 PM
 
كود:
*/ 
// Define LED connection 
sbit LED at RB0_bit; 
unsigned short Num; 
// Interrupt service routine 
void interrupt() { 
  Num ++;           // Interrupt causes Num to be incremented by 1 
  if(Num == 18) { 
   LED = ~LED;       // Toggle LED every sec 
   Num = 0; 
  } 
  TMR0 = 39;        // TMR0 returns to its initial value 
  INTCON.T0IF = 0;  // Bit T0IF is cleared so that the interrupt could reoccur 
} 
void main() { 
 CMCON = 0x07 ; // Disbale comparators 
TRISB = 0b00000000; // PORTB All Outputs 
TRISA = 0b00100000; // PORTA All Outputs, Except RA5=MCLR 
 LED = 0; 
 Num = 0; 
 OPTION_REG = 0x07; // Prescaler (1:256) is assigned to the timer TMR0 
 TMR0 = 39;          // Timer T0 counts from 39 to 255 
 INTCON = 0xA0;     // Enable interrupt TMR0 and Global Interrupts 
 do { 
 // You main programs goes here 
 } while(1);  // infinite loop 
}
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #30  
قديم 09-22-2011, 06:51 PM
 
البرنامج :
فى البداية سوف ننشأ زمن تأخير بقيمة واحد ثانية تقريبا باستخدام موديول المؤقت Timer 0 كمؤقت . الميكروكونترولر يعمل على تردد ساعة المذبذب Fosc = 4MHz لذلك يكون الزمن الدورى للتعليمة هو 1 μs . لتوليد فترة تأخير زمنى قدرها ثانية يجب أن يعد المؤقت مليون 1000000 دورة تعليمة . فإذا استخدمنا معامل القسمة prescaler بالقيمة 256 فإن العدد المطلوب يقل من مليون إلى
1000000/256 = 3906 . والآن إذا حملنا السجل TMR0 بالقيمة المسبقة 39 فإن طفحانه سوف يحدث بعد 256-39 = 217 counts وهكذا تكون عدد مرات الطفحان المطلوبة 3906/217 = 18 . بهذه الإعدادات فإنه بعد 18 مرة طفحان للسجل TMR0 (وفى كل مرة يتم تحميله مسبقا بالقيمة 39 ) ينقضى فترة زمنية قدرها واحد ثانية تقريبا .
البرنامج يوظف هذا التأخير فى عمل وميض لليد .

التعليق على البرنامج :

1- مقدمة (رأس) البرنامج :
/*PIC16F628
1 sec timer using TIMER0
Oscillator @ 4MHz, MCLR Enabled, PWRT Enabled, WDT OFF
*/
2- تعريف الطرف RB0 (المتصل به الليد) باسم يسهل تتبع وفهم البرنامج وهو LED . هذا الطرف هو الخانة صفر من سجل وظائف خاصة وهو المنفذ PORTB لذلك نستخدم التعبير
sbit LED at RB0_bit; " تذكر هذا التعريف" . والإعلان عن متغير العداد .

// Define LED connection

sbit LED at RB0_bit;
unsigned short Num;
3- دالة أو روتين خدمة المقاطعة والتى يتم استدعائها وتنفيذها عند حدوث المقاطعة وتحتوى على :

// Interrupt service routine

void interrupt() {
# عند حدوث المقاطعة يتم تزايد المتغير بواحد Num ++;

Num ++; // Interrupt causes Num to be incremented by 1
# اختبار أو التحقق من شرط if : هل المتغير يساوى 18 ؟ فى البداية بالطبع لا . ولا يحدث شىء ويخرج من جملة if ليجد التحميل المسبق لسجل المؤقت TMR0 بالقيمة المسبقة 39 ويليها تصفير خانة علم المقاطعة للتجهيز لمقاطعة جديدة . وعند كل طفحان تحدث المقاطعة ويتكرر ما سبق حتى يتحقق الشرط Num == 18 أى بعد 18 مرة طفحان أى بعد مرور ثانية . عندئذ يتم تنفيذ جسم شرط if وهو عكس حالة الليد بالتعليمة LED = ~LED; بعد ذلك يتم تحميل السجل TMR0 بالقيمة المسبقة 39 وتصفير خانة علم المقاطعة بالمؤقت صفر ويتكرر العمل .
if(Num == 18) {
LED = ~LED; // Toggle LED every sec
Num = 0;
}
TMR0 = 39; // TMR0 returns to its initial value
INTCON.T0IF = 0; // Bit T0IF is cleared so that the interrupt could reoccur
}
4- بداية الدالة الرئيسية حيث يتم الإعدادات

void main() {
  • إعداد وتهيئة الميكروكونترولر :
# فصل موديول المقارن CCP لاستخدام جميع الأطراف كمداخل / مخارج رقمية .
# إعداد جميع أطراف المنفذ PORTB كمخارج .
# إعداد جميع أطراف المنفذ PORTA كمخارج فيما عدا الطرف RA5 فيعد كمدخل MCLR .

CMCON = 0x07 ; // Disbale comparators
TRISB = 0b00000000; // PORTB All Outputs
TRISA = 0b00100000; // PORTA All Outputs, Except RA5=MCLR
· الحالة الابتدائية : الليد مطفأ وعداد المؤقت بصفر
LED = 0;
Num = 0;
· إعدادات موديول المؤقت Timer 0 والسجل TMR0 :
# فى سجل الخيارات OPTION_REG يتم تخصيص معامل القسمة لموديول المؤقت Timer 0 واختيار معامل القسمة له بالقيمة 256 .
OPTION_REG = 0x07; // Prescaler (1:256) is assigned to the timer TMR0
# تحميل السجل TMR0 بقيمة مسبقة قدرها 39 ليقوم بالعد بدءا منها وحتى 255 حيث يحدث الطفحان والمقاطعة .
TMR0 = 39; // Timer T0 counts from 39 to 255
# فى سجل التحكم فى المقاطعة INTCON : تمكين المقاطعة بسجل المؤقت TMR0 عند طفحانه والتمكين العام للمقاطعات
INTCON = 0xA0; // Enable interrupt TMR0 and Global Interrupts
· الدخول فى حلقى غير منتهية تحتوى على البرنامج المطلوب تنفيذه بينما يعمل المؤقت فى الخلفية من وراء الكواليس .
do {

// You main programs goes here

} while(1); // infinite loop
}
نظام عمل موديول المؤقت Timer 0 كعداد :
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
دورات تدريبية في فن التفاوض الفعال و تعقد في الاردن سوريا لبنان تركيا مصر المغرب تونس ماليزيا دبي و دورات تدريبية في ادارة الجوده الشامله دورات في اانظمة الجوده ودورات تدريبية في التخطيط الاستراتيجي و دورات تدريبية في العلاقات العامه و السكرتارية معهدالمجدللتدريب أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه 0 12-04-2010 10:38 AM
دورات تدريبية فيالذكاء الفطري وتطبيقاتة و تعقد في الاردن سوريا لبنان تركيا مصر المغرب تونس ماليزيا دبي و دورات تدريبية في ادارة الجوده الشامله دورات في اانظمة الجوده ودورات تدريبية في التخطيط الاستراتيجي و دورات تدريبية في العلاقات العامه و السكرتاري معهدالمجدللتدريب أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه 0 11-29-2010 03:19 PM
دورات تدريبية في الشراء الالكتروني و تعقد في الاردن سوريا لبنان تركيا مصر المغرب تونس ماليزيا دبي و دورات تدريبية في ادارة الجوده الشامله دورات في اانظمة الجوده ودورات تدريبية في التخطيط الاستراتيجي و دورات تدريبية في العلاقات العامه و السكرتاري معهدالمجدللتدريب أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه 0 11-29-2010 03:15 PM
دورات تدريبية في القيادة الادارية الشاملة تعقد في الاردن سوريا لبنان تركيا مصر المغرب تونس ماليزيا دبي و دورات تدريبية في ادارة الجوده الشامله دورات في اانظمة الجوده ودورات تدريبية في التخطيط الاستراتيجي و دورات تدريبية في العلاقات العامه و السكرتاري معهدالمجدللتدريب أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه 0 11-29-2010 03:12 PM


الساعة الآن 03:34 AM.


Powered by vBulletin®
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Content Relevant URLs by vBSEO
شات الشلة
Powered by: vBulletin Copyright ©2000 - 2006, Jelsoft Enterprises Ltd.
جميع الحقوق محفوظة لعيون العرب
2003 - 2011