 |
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: EGYPT
المشاركات: 1,315
|
|
نشاط [ ناصراحمد2 ]
قوة السمعة:
|
|
04-11-2011, 06:49 AM
المشاركة 17
|
|
(((((تابع ماقبلة)))(((الجزء الثالث والاخير من شرح الدرس الاول )))
بعد الفاصل الاعلانى نعود لكى نكمل درسنا الدسم
طبعا نعلم ان الدرس هو عبارة عن ((تحريك الشكل فى اربع اتجاهات )
نتحكم بها عن طريق السويتش بوتن او (الازرار الضاغطة )
ولكى نستخدم الازرار الضاغطة لابد ان نستخدم الشرط (IF)
واذا نظرنا للكود الان سوف نجد انة يشمل عدد (4) للشرط (IF)
ممممممممممممممم ممكن يكون فية ناس كتير جدا فهمت الموضوع بالكامل حتى الان هههههههههههههه
نعم الكود مقسم الى 4 مراحل يمثلها الشرط (IF)
الجزء الاول خاص للحركة ناحية اليمين اذا ضغطنا على زر
قمنا باستخدام البورت C للسويتشات وهذا باستخدام عدد 4بنات منها بن 1 وبن 2 وبن3 وبن4
البن 1 للحركة ناحية اليسار
والبن رقم 2 للحركة ناحية الاعلى
والبن رقم 3 للحركة للاسفل
والبن رقم 4 للحركة لليمين
لا يهم الترتيب فى اى شىء لان الدالة لن تعمل الا فى حالة الضغط على البن المخصص
ماعلينا من السويتشات اعتقد انة يوجد مواضيع كتير تستخدم شرط الاف والسوتشات
نلاحظ فى الكود انة لتحريك النص ناحية اليسار استخدمنا الطريقة التى تعلمناها سابقا
وهى اننا نقوم بالتبديل بين الداتا
واذا اخترنا الاقل=الاعلى منها
ثم الاعلى منها =الاعلى منها
او هذا الشكل
كود:
///////////////lllllllllllllllllllllllllllllllllllllllllllllllllllllll
كود:
char data2[16]={
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00001111,
0b00001111,
0b00001111,
0b00001100, ////////////////
0b00001100,
0b00001111,
0b00001111,
0b00001111,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
};
char data1[16]={
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b11110000,
0b11110000,
0b11110000,
0b00110000, /////
0b00110000,
0b11110000,
0b11110000,
0b11110000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
};
/////////////////// ///////////////lllllllllllllllllllllllll
char n,d0,d1,d2,d3,d4; k;
/////////////////////////////////
char x;
char y;
char m;
void main() {
TRISA=0;
TRISB=0;
portb=0;
porta=0;
TRISd=0;
portd=0;
TRISc=0;
portc=0;
loop:
portc=0b11111111;
for (x=0;x<100;x++) {
porta.f2=1;
////////////////////////////////////////
porta.f1=1; porta.f1=0;
////////////////// //////////////////
portb=data2[0];
portd=data1[0];
delay_us(250);
////
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
///////////////////////////////
portb=data2[1];
portd=data1[1];
delay_us(250);
////
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
///////////////////
portb=data2[2];
portd=data1[2];
delay_us(250);
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
////////////////
portb=data2[3];
portd=data1[3];
delay_us(250);
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
////////////////
portb=data2[4];
portd=data1[4];
delay_us(250);
////
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
///////////////////////////////
portb=data2[5];
portd=data1[5];
delay_us(250);
////
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
///////////////////
portb=data2[6];
portd=data1[6];
delay_us(250);
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
////////////////
portb=data2[7];
portd=data1[7];
delay_us(250);
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
////////////////
portb=data2[8];
portd=data1[8];
delay_us(250);
////
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
///////////////////////////////
portb=data2[9];
portd=data1[9];
delay_us(250);
////
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
///////////////////
portb=data2[10];
portd=data1[10];
delay_us(250);
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
////////////////
portb=data2[11];
portd=data1[11];
delay_us(250);
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
////////////////
portb=data2[12];
portd=data1[12];
delay_us(250);
////
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
///////////////////////////////
portb=data2[13];
portd=data1[13];
delay_us(250);
////
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
///////////////////
portb=data2[14];
portd=data1[14];
delay_us(250);
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
////////////////
portb=data2[15];
portd=data1[15];
delay_us(250);
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
////////////////
//
فان كل جزء من الداتا سوف يتحرك لياخذ القيمة الاخرى
وهكذا سوف تلاحظ العين ان النص يتحرك لليسار
ملاحظة هامة :
التغيير من الاقل الى الاعلى ليس بشرط ولكن هذا حسب ماقمنا بتحديد الداتا داخل العرض
((هذا ايضا تم شرحة سابقا فى الدروس السابقة ))
نلاحظ ايضا انة يوجد فى الكود جزئين جزء يمين وجزء يسار وتقريبا هم نفسهم ؟؟؟؟؟؟؟
طبعا لا ننسى اننا نستخدم عدد 2 داتا DATA2&DATA1
وكل واحدة منهم نستخدمها فى بورت B&D
ولكى يتم ازاحة الشكل بالكامل لابد ان تتم ازاحة ال2داتا فى نفس الوقت حتى لا تلاحظ العين ان احداهما تسبق الاخرى
وهذة النقطة سوف نستخدمها فى جميع حركاتنا
ونفس الطريقة السابقة يتم استخدامها للتحريك ناحية اليمين
ولكن مع فرق بسيط ؟؟؟
ياترى ماهو ؟؟؟
اوك
فعلا الفرق هو
بدلا من ان يحتل الاصغر يساوى الاكبر منة ثم الاكبر منة يحتل ماهو اكبر منة
نفعل العكس
الاكبر =الاصغر منة
الاصغر منة =الاصغر منة
وهكذا
ولا ننسى ان ياخذ اخر رقم مكان اول رقم والا لن يتم الالتفاف والحركة تستمر لدورة واحدة فقط ه
================
الحركة رقم 3
البن رقم 3 من البورت C
استخدمناها للتحريك الى الاسفل
مممممممم
يوجد تساؤل لشخص شديد الملاحظة لماذا هذا الجزء صغير جدا بالنسبة للبقية؟؟؟؟؟؟
::::::::::وارد عليكم بكل بساطة انة هذا الكود شبية الكود الذى يسبقة ولكنة مختصر ::::::::
وهذا قمت بتنفيذة فى الكود لكى نتاكد ان بالامكان تنفيذ ماسبق من اكواد طويلة ولكن بشكل اقصر بكثيثثثثثثثثثثر
سؤال اخر ممكن ان يخطر ببالكم ؟؟؟
لماذا لم يتم اختصار جميع الخطوات السابقة ؟؟؟؟
والاجابة ببساطة:
لانة من الممكن ان لا يفهمها المستجدون فى عالم البرمجة امثالى
وايضا لكى نشاهد كل حركة بتفاصيلها
=========
==================
حتى هذة اللحظة اعتقد انة تم شرح الجميع والدرس بالكامل
ولكن لى اضافة بسيطة
لاحظو هذا الجزء من الكود
d4= data1[y].f0;
d3= data2[y].f0;
data1[y].f7=d3; data2[y].f7=d4;
نلاحظ وجود d4&d3
وهم ليس موجودتين فى الكود الاساسى فماهما وما وظيفتهما ؟؟؟؟؟؟؟؟؟
الاجابة:
نستخدمهم لتخزين قيمة اول رقم حتى لا تفقد قيمتها الاساسية عندما تقوم باحتلال القيمة التى تليها
؟؟؟؟؟؟
؟؟؟؟؟
اعتقد انها مفهومة ؟؟؟؟؟؟؟؟
مممممممم
اوك لمن لا يستوعب هذا الامر نعطى مثال بسيط
1=x
2=a
3=b
4=c
كمثال هذة الارقام تساوى كل واحدة منهم القيمة مابعد = انتبهو جيدا للرقم 1 وهو يساوى x
نقوم الان بالتبديل
1=2
2=3
3=4
4=1
سوف نكتشف بعد التنفيذ شىء غريب ان القيمة x
غير موجودة لانها بكل بساطة تحولت الى a
بعد تنفيذ اول خطوة للبرنامج
فيحدث انة فى الخطوة الاخيرة تحتل رقم 4 قيمة الرقم1 الذى تحول بعد اول خطوة الى a
والحل لهذة المشكلة اننا قمنا بحجز مخزن اضافى نقوم بتخزين اول قيمة بة ثم نستدعيها فى اخر خطوة هههههه
اعتقد ان درسنا اليوم ((((دسم جدا جدا )))))))
لا تكتفى بالقراءة مرة واحدة قم باعادة القراءة مرة ومرتان او ثلاث
انتهى شرح الدرس الاول من الجزء الثانى من دورة شرح الماتركس من الالف الى الياء
8****************8
(((((((((((((((((((نهايــــــــــية الدرس الاول ))))))))))))))))))))))
|