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

   

ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 10-05-2014, 12:51 PM المشاركة 33   
افتراضي



ممكن تشرحلي الجزئية دي

while (1)
{
#asm("wdr")

if((PINA.0==0&&PINA.1==1&&PINA.2==1)||(PINA.0==1&& PINA.1==0&&PINA.2==1)||(PINA.0==0&&PINA.1==0&&PINA .2==1)||(PINA.0==0&&PINA.1==1&&PINA.2==0))
{
PORTA.6=0;
lcd_gotoxy(5,0);
lcd_puts("ERROR");
}
if(x!=PINA.0||y!=PINA.1||z!=PINA.2)
{
x=PINA.0;
y=PINA.1;
z=PINA.2;
lcd_clear();
وليه استخدمنا المتغيرات دي يعني سطر سطر معليش تعبتك معايا


كود:
while (1) 
{ 
///////////////////////////////////////////////////////////////////////////
#asm("wdr")  
هذه التعليمة لعمل ريست لمؤقت الحراسة سابقا كان ازا تم تعليق المايكرو لاي 
سبب فعلينا ان نكون منتبهين ونعمل له ريستارت يدوي اما في الانظمة الحديثة 
فاضافو للمايكرو مؤقت سموه وتش دوك يعني كلب الحراسة
 برنامجك سياخذ وقت للقرائة تقريبا 8 ميلي ثانية ومع كل عودة لبداية البرنامج 
سيتم عمل تصفير لعداد هذا المؤقت اما ازا علق البرنامج باي منطقة اثناء القرائة
 فسيبقى عداد هذا المؤقت يعمل لانه مستقل عن المايكرو وعند وصوله للزمن
 اللذي حددناه وهنا حددنا ثانية فسيقوم هذا المؤقت عند طفحانه بعمل ريستارت
 اتوماتيكي للمايكرو وبهذا نضمن عمل المايكرو بشكل موثوق 
///////////////////////////////////////////////////////////////////////////
هذه الشروط لاي احتمال خاطئ في عمل الحساسات نحن هنا سنستعمل على 
الاغلب حساسات مثل اللتي سارفق صورتها وهذه الحساسات مع الزمن ممكن ان
 يتراكم عليها طحالب او تكلس من المياه او اي شيئ اخر يمنع حركة الاطار 
الخارجي لها وبهذا لن يرا المايكرو انه تم فتح او اغلاق هذا الحساس ويصل الى 
حساس اخر وهذا يشكل عمل غير نظامي لتسلسل فتح واغلاق الحساسات وهنا
 وضعنا جميع الاحتمالات الخاطئة لتسلسل عمل الحساسات فاذا تحقق احد 
الشروط فسيتم ايقاف المضخة اذا كانت تعمل واعطائنا رسالة تفيد بان هناك عطل
 باحد الحساسات 
if((PINA.0==0&&PINA.1==1&&PINA.2==1)||(PINA.0==1&& PINA.1==0&&PINA.2==1)||(PINA.0==0&&PINA.1==0&&PINA .2==1)||(PINA.0==0&&PINA.1==1&&PINA.2==0))
{ 
PORTA.6=0;
lcd_gotoxy(5,0); 
lcd_puts("ERROR"); 
}
////////////////////////////////////////////////////////////////////////
هذا الشرط وضعناه لعدم مسح الشاشة واعادة الكتابة عليها باستمرار فتابع المسح
 ياخذ زمن يمكن ان تلاحظيه بالعين على الشاشة فتلاحظي رجفة خفيفة على 
الشاشة بسبب المسح والكتابة المستمرة والغير ضرورية لان الشاشة فيها مايكرو 
يقوم بحفظ البيانات اللتي ارسلتيها وعرضها على الشاشة بشكل مستمر طالما 
انت لم ترسلي امر المسح وهنا وضعنا لكل حساس متغير يكون مساوي له اثناء 
عدم تغير حالة الحساس فاذا تم تغير حالة اي حساس فسيصبح حالة احد هذه 
المتغيرات لاتساوي حالة القطب الموصول مع الحساس وبالتالي سيتحقق الشرط 
وسيتم الدخول لتنفيذ التعليمات داخل هذا الشرط وهي ان يقوم بمساوات حالة
 المتغيرات مع حالة الاقطاب ومسح الشاشة وبهذا لن يتم مسح الشاشة الا عند 
الحاجة فقط
اخت سارة هذا البرنامج كتب بغرض الاستفادة منه تجاريا وليس فقط للمكاكاة 
لو كان بغرض المحاكاة لكنا اختصرنا به اشياء كثيرة جدا
if(x!=PINA.0||y!=PINA.1||z!=PINA.2)
{ 
x=PINA.0; 
y=PINA.1; 
z=PINA.2;
lcd_clear();


التعديل الأخير تم بواسطة : ahmadazez بتاريخ 10-05-2014 الساعة 01:06 PM
اعلانات

ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 10-05-2014, 12:56 PM المشاركة 34   
افتراضي


هذه صورة الحساس المستخدم بمثل هذه الحالات


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


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