السلام عليكم ورحمة الله
• شرح البرنامج حسب ماتيسر .
// ENG / ABDALLA HEGAZY ** // DATA / 2019/12/30 ** // controller **
من هنا
#define MOTOR_vibrator_M11 PORTC.F7 #define MOTOR_Mixing_M62 PORTC.F6 #define Helical_motor_M61 PORTC.F5 #define MOTOR_Y33 PORTC.F4
#define MOTOR_Water_valve_Y32
الى هنا
وضعت المعطيات الرئيسية وحددت منفذ لكل ما تريد التحكم به .
محرك الارتجاج M11 على المنفذ ٨ من المجموعة C.
محرك الخلاط M62 على المنفذ السابع من المجموعة C .
محرك رش البودرة او الحلزون M61 على المنفذ السادس من المجموعة C .
صمام التعبئة Y32 على المنفذ الخامس .
صمام التفريغY33 ( لم اعلم على اي منفذ ارجو منك التوضيح ) .
على هذا الاساس استخدمت خمس منافذ من المجموعة C وبقي ثلاث .
لاحظ اخي عدم كتابة دالة البرنامج الرئيسية VOID MAIN ام انني مخطئ .
وايضا لم الاحظ PORT و TRIS .
ارجو بعض التوضيح اليسير .
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
هنا قمت على تحديد المسميات لكل حساس حسب ترتيبهم .
المستوى الاول على المنفذ السادس من المجموعة A
PORTA.F5 #define SENSOR_LEVEL_1
المستوى الثاني على المنفذ الثالث من المجموعة D
PORTD.F2 #define SENSOR_LEVEL_2
المستوى الثالث على المنفذ الرابع من المجموعة D
PORTD.F3 #define SENSOR_LEVEL_3
المستوى الرابع على المنفذ الخامس من المجموعة D
PORTD.F4 #define SENSOR_LEVEL_4
المستوى الخامس على المنفذ السادس من المجموعة D
PORTD.F5 #define SENSOR_LEVEL_5
المستوى السادس على المنفذ السابع من المجموعة D
PORTD.F6 #define SENSOR_LEVEL_6
( انهاء الجميع او ايقاف الجميع ) ارجو توضيح هذا السطر .
المنفذ الثامن من المجموعة D
PORTD.F7 #define END_ALL
على هذا النحو استخدمت منفذ واحد من المجموعة A 《《PORT 5 .
وستة منافذ من المجموعة D .
بقي لدينا
ثلاث منافذ من المجموعة C .
منفذان من المجموعة D .
و سبعة من المجموعة A .
وكامل المجموعة B .
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
من هنا
Helical_motor_M61 =0; MOTOR_Y33 =0;
MOTOR_Mixing_M62 =0; MOTOR_vibrator_M11=0; MOTOR_Water_valve_Y32 =0; #define
الى هنا
كنت لاقول انك تريد تحديد حالة المحركات او المنافذ ولكن لم ارى تعليمة PORT وايضا لم الاحظ كتابة سجل كل منفذ TRIS من المنافذ السابقة .
هنا استخدمت المنفذ الثاني من المجموعةD ووضعت عليه منبه يشتغل ٣٥٠ ميلي ثانية و يتوقف ٢٠٠ ميلي .
BEZR PORTD.F1=1; delay_ms(350);
PORTD.F1=0; delay_ms(200);
هذه الجملة جديدة لم اعلم معناها .
اعتقد انها تخص التنبيه الثاني الذي اخبرتني عنه بالشرح
انه على المنفذ الثاني من المجموعة D
#define BEZRR PORTD.F1=1;
تاخير ٢٧٠ ميلي ثانية بحالة عمل
delay_ms(270); PORTD.F1=0;
ثم ايقافه مدة ٥٠ ميلي .
delay_ms(50); PORTD.F1=1;
ايضا اعادة نفس السطرين لكن بمدة ايقاف تصل الى ١.٥ ثانية .( لماذا تم التصميم بهذا الشكل )
delay_ms(270); PORTD.F1=0; delay_ms(1500);
هنا لم افهم سبب وضع المربع .وكلمة #define
حياك الله وبارك بك
اريد التقييم حول هذا الشرح 😁😁😊