قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 10-03-2011, 09:58 PM المشاركة 1   
افتراضي التدريبات العملية :التدريب الثالث Tutorial3 المقاطعة باستخدامTMR0,TMR1,TMR2 Twitter FaceBook Google+



التدريب رقم 3 Tutorial 3 المقاطعة باستخدام المؤقتات

الغرض
  • استخدام المؤقتات TMR0, TMR1 , TMR2 .
  • استخدام المقاطعات .
  • الإعلان عن دالة جديدة .
ربما لاحظت وجود عيب عند تنفيذ التأخير عند استخدام الحلقات.
في مثل تلك الحالة يكون الميكروكونترولر 'أسير' ولا يفعل شيئا.ببساطة ينتظر لحين مرور بعض الوقت.
هذا الوقت الضائع ترفا غير مقبول لذلك يجب تطبيق بعض الطرق الأخرى .

هل تتذكر موضوع المؤقتات ؟
هل تتذكر موضوع المقاطعات ؟
هذا التدريب يصنع رابط بينهما بطريقة عملية .

الدائرة الكهربية :












فكرة البرنامج :
  • مطلوب توفير تأخير طويل بما يكفى لملاحظة التغيرات على المنفذ . يستخدم لذلك الموقت TMR0 مع تخصيص "معامل القسمة " prescaler لهذا الغرض.
  • يتم إنشاء مقاطعة عند كل حدوث طفحان overflow بسجل المؤقت TMR0 فيتم تنفيذ روتين المقاطعة وفى كل مرة يقوم روتين المقاطعة تلقائيا بتزايد المتغير "cnt" بواحد .
  • عندما تصل القيمة الموجودة بهذا المتغير إلى 400 يتم تزايد المنفذ port B بواحد وتظهر النتيجة على شكل إضاءة ليدات .
يتم تنفيذ الإجراء بأكمله من 'وراء الكواليس، مما يمكن الميكروكونترولر بعمل شىء آخر .

النتيجة :
إضاءة الليدات الثمانية المتصلة بالمنفذ PORT B بشكل يمثل الأرقام من 1 إلى 255 بالنظام الثنائى أى من 00000001 إلى 11111111 .







البرنامج :

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 10-03-2011, 10:01 PM المشاركة 2   
افتراضي


البرنامج :







التعليق على خطوات البرنامج :
1- تعليقات الرأس أو مقدمة البرنامج
/*Header******************************************** **********/
2- الإعلان عن متغير : النوع " unsigned" أى " بدون إشارة " وعندما لا يذكر نوع محدد بعده يكون النوع عدد حقيقى "int" – اسم المتغير "cnt"








unsigned cnt; // Define variable cnt
3- دالة المقاطعة أو البرنامج الفرعى (روتين) للمقاطعة أو روتين خدمة المقاطعة ISR وصيغتها :
void interrupt() {
أ‌- تزايد المتغير cnt
cnt++; // Interrupt causes cnt to be incremented by 1
ب‌- إرجاع المؤقت TMR0 إلى قيمته الابتدائية .
TMR0 = 96; // Timer TMR0 is returned its initial value
ت‌- جعل خانة تمكين المقاطعة T0IE فى الحالة المرتفعة set = 1 ومسح (clear = 0 ) خانة علم المقاطعة بالمؤقت TMR0 وهى الخانة T0IF .
INTCON = 0x20; // Bit T0IE is set, bit T0IF is cleared
}
4- الدالة الرئيسية :
void main() {
5- التهيئة أو الإعدادات :
أ‌- تخصيص "معامل قسمة التردد" Prescaler ليعمل مع المؤقت TMR0 .
OPTION_REG = 0x84; // Prescaler is assigned to timer TMR0
ب‌- تهيئة جميع أطراف المداخل والمخارج لتكون رقمية .
ANSEL = 0; // All I/O pins are configured as digital
ANSELH = 0;
ت‌- إعداد جميع أطراف المنفذ port B لتعمل كمخارج . و تصفير المنفذ ليصبح فى وضع البداية الآمن .
TRISB = 0; // All port B pins are configured as outputs
PORTB = 0x0; // Reset port B
ث‌- وضع قيمة ابتدائية بالموقت TMR0 وهى 96 بحيث يقوم بالعد من 96 إلى 255 .
TMR0 = 96; // Timer T0 counts from 96 to 255
ج‌- إعداد سجل التحكم فى المقاطعة INTCON لتمكين المقاطعة بالمؤقت TMR0
INTCON = 0Xa0; // Enable interrupt TMR0
ح‌- تصفير متغير العداد cnt
cnt = 0; // Variable cnt is assigned a 0
6- الدخول فى حلقة do{……}while(1) الغير منتهية حيث يجب أو تنفيذ جسم الحلقة كما يلى :
do { // Endless loop
أ‌- يبدأ جسم الحلقة بتعبير شرطى باستخدام if ويليها بين قوسين شرط تنفيذ الأوامر التالية لها .هذا الشرط هو (cnt == 400) بمعنى هل محتويات متغير العداد وصلت إلى 400 ؟
if (cnt == 400) { // Increment port B after 400 interrupts
ب‌- إن كانت الإجابة بنعم أى تحقق الشرط فيجب تنفيذ الآتى : تزايد المنفذ PORTB بواحد ووضع النتيجة به مرة أخرى , وتصفير العداد .
PORTB = PORTB++; // Increment number on port B by 1
cnt = 0; // Reset variable cnt
ت‌- أما إذا كانت الإجابة لا فلا تتم الأوامر السابقة بل يتم الخروج من تعبير الشرط
}
ث‌- حيث نجد الحلقة الغير منتهية وتؤدى إلى تكرار العملية السابقة .
} while(1);
}


المقاطعة باستخدام المؤقت TMR1 :

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 10-03-2011, 10:04 PM المشاركة 3   
افتراضي


المقاطعة باستخدام المؤقت TMR1 :
فى هذه الحالة يتم تمكين المقاطعة بعد حدوث طفحان فى المؤقت TMR1 والمكون من السجلين
(TMR1H, TMR1L). مزيج من تغيرات الخانات فى المنفذ PORT B يختلف عن البرنامج السابق حيث يتم إضاءة الأربعة خانات الأولى ثم بعد فترة التأخير تنطفأ ويتم إضاءة الأربع خانات الأخيرة وبعد فترة التأخير تتكرر العملية .







البرنامج :









المقاطعة باستخدام المؤقت TMR2


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 10-03-2011, 10:06 PM المشاركة 4   
افتراضي


المقاطعة باستخدام المؤقت TMR2
  • فى هذه الحالة تحدث المقاطعة بعد حدوث طفحان للمؤقت TMR2 .
  • يتم إنشاء دالة جديدة تسمى Replace والتى لا تنتمى للغة السى وتستخدم فى عكس حالة أطراف المنفذ .
النتيجة إضاءة الليدات الفردية والانتظار لفترة ثم العكس أى إضاءة الليدات الزوجية والانتظار لفترة ثم تكرار العملية .









الصورة الرمزية عمرو محمدمحمد
عمرو محمدمحمد
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2006
الدولة: مصر
المشاركات: 88
نشاط [ عمرو محمدمحمد ]
قوة السمعة:0
قديم 11-03-2011, 09:08 AM المشاركة 5   
افتراضي


بالتوفيق ان شاء اللة
انا متابع معاك خطوة بخطوة


الصورة الرمزية tata2
tata2
:: عضو متميز ::
تاريخ التسجيل: Jan 2007
الدولة: https://t.me/pump_upp
المشاركات: 238
نشاط [ tata2 ]
قوة السمعة:0
قديم 11-03-2011, 10:58 AM المشاركة 6   
افتراضي


الله يفتح عليك ويجزيك عنا خير


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 11-03-2011, 12:36 PM المشاركة 7   
افتراضي


الله يفتح عليك ويجزيك عنا خير
اخى الكريم
شكرا جزيلا لك

بارك الله فيك

مع تمنياتى بدوام التوفيق


e-obsessed
:: عضو .. ::
تاريخ التسجيل: Feb 2010
الدولة: alger
المشاركات: 126
نشاط [ e-obsessed ]
قوة السمعة:0
قديم 11-03-2011, 07:27 PM المشاركة 8   
افتراضي


مشكووووووووور

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 12:53 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025