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

   

الصورة الرمزية ناصراحمد2
ناصراحمد2
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: EGYPT
المشاركات: 1,315
نشاط [ ناصراحمد2 ]
قوة السمعة:
قديم 25-04-2013, 08:54 PM المشاركة 17   
افتراضي



استاذ ناصر لو سمحت ارجو ان ترد عليا فى هذا السؤال
يارريت تضع الكود كامل وتعرفنا انت فهمت الكود لحد فين وسوف يتم الرد على كل استفساراتك ان شاء الله .


التعديل الأخير تم بواسطة : ناصراحمد2 بتاريخ 25-04-2013 الساعة 09:02 PM
اعلانات

الصورة الرمزية remon romany
remon romany
:: عضو نشط ::
تاريخ التسجيل: Feb 2011
المشاركات: 893
نشاط [ remon romany ]
قوة السمعة:
قديم 25-04-2013, 09:04 PM المشاركة 18   
افتراضي


يارريت تضع الكود كامل وتعرفنا انت فهمت الكود لحد فين وسوف يتم الرد على كل استفساراتك ان شاء الله .
هذا هو الكود وياريت لو حضرتك عندك دورة (شرح عمل الليد ماتريكس من الاف للياء )كاملة وتقدر تبعتهالى عشان احملها بكل شئ فبها عشان الدورة اللى فى الموقع فيها روابط لا تعمل
انا فهمت الكود لحد loop والباقى مش قادر استوعبة ولا افهمة
كود:
char x[21]={

0b00000000,0b00000000,0b11111110,0b11111110,
0b00000000,0b11111110,0b11111110,0b00000110,
0b00000110,0b11111110,0b11111110,0b00000110,
0b00000110,0b00111110,0b00101110,0b00101000,
0b00111000,0b00000000;,0b00000000,0b00000000,
0b00000000
};
char x3;
char n;
char x2;
 void main()
{
TRISB=0;
 PORTB=0;

 TRISd=0;
 PORTd=0;

loop:

 for(n=0;n<100;n++;){
porta.f1=1;   porta.f1=0;/////////*****///////////

for (x2=0;x2<8;x2++;){

  porta.f0=1;porta.f1=1; porta.f1=0;  porta.f0=0;
   portb=x1;
 delay_us(300);
}
for(x3=0; x3<21;x3++;){
x[x3]=x[x3+1];    
x[0]=x[20];

}
goto loop;
}


التعديل الأخير تم بواسطة : remon romany بتاريخ 25-04-2013 الساعة 09:14 PM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية ناصراحمد2
ناصراحمد2
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: EGYPT
المشاركات: 1,315
نشاط [ ناصراحمد2 ]
قوة السمعة:
قديم 25-04-2013, 09:26 PM المشاركة 19   
افتراضي


هذا هو الكود وياريت لو حضرتك عندك دورة (شرح عمل الليد ماتريكس من الاف للياء )كاملة وتقدر تبعتهالى عشان احملها بكل شئ فبها عشان الدورة اللى فى الموقع فيها روابط لا تعمل
انا فهمت الكود لحد loop والباقى مش قادر استوعبة ولا افهمة
كود:
char x[21]={

0b00000000,0b00000000,0b11111110,0b11111110,
0b00000000,0b11111110,0b11111110,0b00000110,
0b00000110,0b11111110,0b11111110,0b00000110,
0b00000110,0b00111110,0b00101110,0b00101000,
0b00111000,0b00000000;,0b00000000,0b00000000,
0b00000000
};
char x3;
char n;
char x2;
 void main()
{
TRISB=0;
 PORTB=0;

 TRISd=0;
 PORTd=0;

loop:

 for(n=0;n<100;n++;){
porta.f1=1;   porta.f1=0;/////////*****///////////

for (x2=0;x2<8;x2++;){

  porta.f0=1;porta.f1=1; porta.f1=0;  porta.f0=0;
   portb=x1;
 delay_us(300);
}
for(x3=0; x3<21;x3++;){
x[x3]=x[x3+1];    
x[0]=x[20];

}
goto loop;
}
ودى اول مشكلة انك مصر على وضع الكود وهو ناقص
وبالتالى تلخبط اى حد حابب يساعدك
ماعدا عن كاتب الكود او الاشخاص المتابعين للدورة ................

===========================
عموما راح نبدا من الاول حتى تقوم بوضع الكود كامل

اولا لاحظ هذا الجزء الاول من الكود
كود:
كود:
char x[21]={

0b00000000,0b00000000,0b11111110,0b11111110,
0b00000000,0b11111110,0b11111110,0b00000110,
0b00000110,0b11111110,0b11111110,0b00000110,
0b00000110,0b00111110,0b00101110,0b00101000,
0b00111000,0b00000000;,0b00000000,0b00000000,
0b00000000
};
هنا تم تعريف متغير على شكل مصفوفة مكونة من 21 جزء
واسم المصفوفة هو x ولكى نحدد عدد هذة المصفوفة قمنا بوضع قوس مربع []
وقمنا بوضع عدد المصفوفة وهو 21 ولا تنسى ان المصفوفات تبدا عدها من الصفر
ولكى نستخدم اى جزء من هذة المصفوفة علينا بوضع رقم داخل القوس المربع
كمثال اريد ان استخدم رقم 1 من المصفوفة وهو 0b00000000
بدل مانضع كل هذا نكتفى فقط بوضع x[0]
واذا اردنا وضع رقم 3 من المصفوفة وهو كما تشاهد 0b11111110;
نكتفى فقط بوضع هذا x[2]
لاحظ اننا بدانا ب 0 ثم 1 ثم 2 وهكذا حتى نصل الى 20 لاننا لو استخدمنا x[21]
هذا يعنى اننا نستخدم او نتعامل مع المصفوفة دفعة واحدة .
اتمنى ان يكون هذا الجزء واضح


الصورة الرمزية remon romany
remon romany
:: عضو نشط ::
تاريخ التسجيل: Feb 2011
المشاركات: 893
نشاط [ remon romany ]
قوة السمعة:
قديم 25-04-2013, 09:29 PM المشاركة 20   
افتراضي


ودى اول مشكلة انك مصر على وضع الكود وهو ناقص
وبالتالى تلخبط اى حد حابب يساعدك
ماعدا عن كاتب الكود او الاشخاص المتابعين للدورة ................

===========================
عموما راح نبدا من الاول حتى تقوم بوضع الكود كامل

اولا لاحظ هذا الجزء الاول من الكود
كود:
كود:
char x[21]={

0b00000000,0b00000000,0b11111110,0b11111110,
0b00000000,0b11111110,0b11111110,0b00000110,
0b00000110,0b11111110,0b11111110,0b00000110,
0b00000110,0b00111110,0b00101110,0b00101000,
0b00111000,0b00000000;,0b00000000,0b00000000,
0b00000000
};
هنا تم تعريف متغير على شكل مصفوفة مكونة من 21 جزء
واسم المصفوفة هو x ولكى نحدد عدد هذة المصفوفة قمنا بوضع قوس مربع []
وقمنا بوضع عدد المصفوفة وهو 21 ولا تنسى ان المصفوفات تبدا عدها من الصفر
ولكى نستخدم اى جزء من هذة المصفوفة علينا بوضع رقم داخل القوس المربع
كمثال اريد ان استخدم رقم 1 من المصفوفة وهو 0b00000000
بدل مانضع كل هذا نكتفى فقط بوضع x[0]
واذا اردنا وضع رقم 3 من المصفوفة وهو كما تشاهد 0b11111110;
نكتفى فقط بوضع هذا x[2]
لاحظ اننا بدانا ب 0 ثم 1 ثم 2 وهكذا حتى نصل الى 20 لاننا لو استخدمنا x[21]
هذا يعنى اننا نستخدم او نتعامل مع المصفوفة دفعة واحدة .
اتمنى ان يكون هذا الجزء واضح
تمام يا استاذ ناصر ربنا يخليك
كدة انا فهمت اول جزء
وبالنسبة لكود
فهذا هو رابط الموضوع اللى موجود فية الكود
http://www.qariya.com/vb/showthread.php?t=56529&page=58
حضرتك هتلاقية اخر كود فى موضوع حضرتك


التعديل الأخير تم بواسطة : remon romany بتاريخ 25-04-2013 الساعة 09:35 PM

الصورة الرمزية ناصراحمد2
ناصراحمد2
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: EGYPT
المشاركات: 1,315
نشاط [ ناصراحمد2 ]
قوة السمعة:
قديم 25-04-2013, 09:38 PM المشاركة 21   
افتراضي


عموما سوف نكمل شرح الكود

وناخذ الجزء الاخر من الكود وهو جزئين

]loop:

for(n=0;n<100;n++{
porta.f1=1; porta.f1=0;/////////*****///////////

هذا الجزء هو لكى نجهز مسجل الازاحة للحركة

for (x2=0;x2<8;x2++{
وهذا الجزء هو حلقة تكرار تستمر حتى ثماني مرات
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
portb=x1;
delay_us(300);
هذا هو الجزء المهم وانت فقط نسخت خطوة واحدة فقط
وهذة الخطوة تجعل مسجلات الازاحة تتحرك خطوة واحدة فقط
طبعا مسجلات الازاحة يتحكم بها البورت a
اما البورت b وفى نفس توقيت هذة الخطوة لمسجل الازاحة جعلناها تساوى
x1
اهاااااااااااااااااااااااااا انتبة هنا
لانك ناسخ الكود بشكل خاطى وقمت بحزف اجزاء فقد تم لخبطة الكود
لانة من المفترض هنا ان بورت b يساوى x[0]
ثم مع تتابع الخطوات نجعل بورت b تساوى x[1] ثم x[2]
ثم x[3] طبعا كل هذا جنبا الى جنب مع حركة مسجلات الازاحة كما هى فى هذا الجزء
نتوقف هنا لحظة ايضا
حتى هذا الجزء من الكود يكون عمل الكود هو عرض كلمة على الماتركس ولكن بشكل ثابت
نذهب الى الجزء التالى من الكود
}
for(x3=0; x3<21;x3++{
x[x3]=x[x3+1];
x[0]=x[20];
هذا الجزء ايضا انت قمت باختصارة وهو من المفترض ان يكون اكثر من 21 سطر
بحيث اننا نجعل كل متغير او كل جزء من المصفوفة ياخذ الجزء اللى بعدة وهكذا حتى الاخر
ولا ننسى ان نجعل اخر امر هو ان ياخذ اخر متغير مكان اول متغير حتى يحدث دوران
}
goto loop;
هذة طبعا لجعل الكود يعمل بشكل مستمر


التعديل الأخير تم بواسطة : ناصراحمد2 بتاريخ 25-04-2013 الساعة 09:42 PM

الصورة الرمزية remon romany
remon romany
:: عضو نشط ::
تاريخ التسجيل: Feb 2011
المشاركات: 893
نشاط [ remon romany ]
قوة السمعة:
قديم 25-04-2013, 09:51 PM المشاركة 22   
افتراضي


عموما سوف نكمل شرح الكود

وناخذ الجزء الاخر من الكود وهو جزئين

]loop:

for(n=0;n<100;n++{
porta.f1=1; porta.f1=0;/////////*****///////////

هذا الجزء هو لكى نجهز مسجل الازاحة للحركة

for (x2=0;x2<8;x2++{
وهذا الجزء هو حلقة تكرار تستمر حتى ثماني مرات
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
portb=x1;
delay_us(300);
هذا هو الجزء المهم وانت فقط نسخت خطوة واحدة فقط
وهذة الخطوة تجعل مسجلات الازاحة تتحرك خطوة واحدة فقط
طبعا مسجلات الازاحة يتحكم بها البورت a
اما البورت b وفى نفس توقيت هذة الخطوة لمسجل الازاحة جعلناها تساوى
x1
اهاااااااااااااااااااااااااا انتبة هنا
لانك ناسخ الكود بشكل خاطى وقمت بحزف اجزاء فقد تم لخبطة الكود
لانة من المفترض هنا ان بورت b يساوى x[0]
ثم مع تتابع الخطوات نجعل بورت b تساوى x[1] ثم x[2]
ثم x[3] طبعا كل هذا جنبا الى جنب مع حركة مسجلات الازاحة كما هى فى هذا الجزء
نتوقف هنا لحظة ايضا
حتى هذا الجزء من الكود يكون عمل الكود هو عرض كلمة على الماتركس ولكن بشكل ثابت
نذهب الى الجزء التالى من الكود
}
for(x3=0; x3<21;x3++{
x[x3]=x[x3+1];
x[0]=x[20];
هذا الجزء ايضا انت قمت باختصارة وهو من المفترض ان يكون اكثر من 21 سطر
بحيث اننا نجعل كل متغير او كل جزء من المصفوفة ياخذ الجزء اللى بعدة وهكذا حتى الاخر
ولا ننسى ان نجعل اخر امر هو ان ياخذ اخر متغير مكان اول متغير حتى يحدث دوران
}
goto loop;
هذة طبعا لجعل الكود يعمل بشكل مستمر
شكرا لك استاذ ناصر ولكن انا قمت بنسخ الكود على ما اعتقد بشكل صحيح
وحضرتك ممكن تتاكد من الكود وهو موجود فى هذا الرابط
http://www.qariya.com/vb/showthread.php?t=56529&page=58
وياريت لو حضرتك لقيت اى شئ ناقص فى الكود تكملة وتكتبلى الكود كامل حتى استطيع فهمة بصورة افضل


الصورة الرمزية ناصراحمد2
ناصراحمد2
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: EGYPT
المشاركات: 1,315
نشاط [ ناصراحمد2 ]
قوة السمعة:
قديم 25-04-2013, 10:10 PM المشاركة 23   
افتراضي


شكرا لك استاذ ناصر ولكن انا قمت بنسخ الكود على ما اعتقد بشكل صحيح
وحضرتك ممكن تتاكد من الكود وهو موجود فى هذا الرابط
http://www.qariya.com/vb/showthread.php?t=56529&page=58
وياريت لو حضرتك لقيت اى شئ ناقص فى الكود تكملة وتكتبلى الكود كامل حتى استطيع فهمة بصورة افضل
الله ينور عليك
كدة انت تمام التمام ولابد ان تدرج رابط صفحة الكود الاساسى يكون افضل
ولانك ادرجت الرابط سهل على الامر
حتى انى اكتشفت انى مخطىء فى سطر داخل الكود
وللاسف لا استطيع تعديلة لان ادارة المنتدى لا تسمح بتعديل المشاركات

عموما :
هذا الكود هو كود مختصر لعرض كلمة فى ماتركس 8فى 8

وهذا الجزء الاهم فى الكود
كود:
loop:

 for(n=0;n<100;n++;){
porta.f1=1;   porta.f1=0;/////////*****///////////

for (x2=0;x2<8;x2++;){

  porta.f0=1;porta.f1=1; porta.f1=0;  porta.f0=0;
   portb=x1;
هنا تماما الخطا الذى لم انتبة لة 
والتصحيح لة هو 
portb=x[x2];
ومعناها ان مابين القوسين [] سوف تبدا قيمتة بصفر ثم تتغير كلما تغير x2
وx2 هو حلقة تكرار سوف تبدا من 0 حتى تصل الى 7 فيكون الناتج هو 8 مرات تكرار 
 delay_us(300);
}
for(x3=0; x3<21;x3++;){
x[x3]=x[x3+1];    
x[0]=x[20];

}
goto loop;
}


داخل الكود تم اختصار مرات تكرار الخطوات وجعلناها مرتبطة مع متغير التكرار نفسة
وهو x2 وهكذا قمنا بعمل 8 جمل بجملة واحدة .
اما فى الجزء الاخير
فهو حلقة تكرار اخرى
واسم الحلقة هو المتغير x3
ولكن لم نربط التبديل بحلقة التكرار
ولكن اكتفينا بان يكون فى كل مرة x3 يضاف اليها 1 فى كل مرة من التكرار
وهكذا عندما يكون التكرار وصل الى 20 مرة يكون اضافة 1 الناتج لها 20 مرة

انتبة لهذا الجزء .
كود:
x[x3]=x[x3+1];


الصورة الرمزية remon romany
remon romany
:: عضو نشط ::
تاريخ التسجيل: Feb 2011
المشاركات: 893
نشاط [ remon romany ]
قوة السمعة:
قديم 25-04-2013, 10:16 PM المشاركة 24   
افتراضي


الله ينور عليك
كدة انت تمام التمام ولابد ان تدرج رابط صفحة الكود الاساسى يكون افضل
ولانك ادرجت الرابط سهل على الامر
حتى انى اكتشفت انى مخطىء فى سطر داخل الكود
وللاسف لا استطيع تعديلة لان ادارة المنتدى لا تسمح بتعديل المشاركات

عموما :
هذا الكود هو كود مختصر لعرض كلمة فى ماتركس 8فى 8

وهذا الجزء الاهم فى الكود
كود:
loop:

 for(n=0;n<100;n++;){
porta.f1=1;   porta.f1=0;/////////*****///////////

for (x2=0;x2<8;x2++;){

  porta.f0=1;porta.f1=1; porta.f1=0;  porta.f0=0;
   portb=x1;
هنا تماما الخطا الذى لم انتبة لة 
والتصحيح لة هو 
portb=x[x2];
ومعناها ان مابين القوسين [] سوف تبدا قيمتة بصفر ثم تتغير كلما تغير x2
وx2 هو حلقة تكرار سوف تبدا من 0 حتى تصل الى 7 فيكون الناتج هو 8 مرات تكرار 
 delay_us(300);
}
for(x3=0; x3<21;x3++;){
x[x3]=x[x3+1];    
x[0]=x[20];

}
goto loop;
}


داخل الكود تم اختصار مرات تكرار الخطوات وجعلناها مرتبطة مع متغير التكرار نفسة
وهو x2 وهكذا قمنا بعمل 8 جمل بجملة واحدة .
اما فى الجزء الاخير
فهو حلقة تكرار اخرى
واسم الحلقة هو المتغير x3
ولكن لم نربط التبديل بحلقة التكرار
ولكن اكتفينا بان يكون فى كل مرة x3 يضاف اليها 1 فى كل مرة من التكرار
وهكذا عندما يكون التكرار وصل الى 20 مرة يكون اضافة 1 الناتج لها 20 مرة

انتبة لهذا الجزء .
كود:
x[x3]=x[x3+1];
ايوة كدة يا استاذ ناصر اللة ينور عليك
انا كدة فهمت
وشكرا على تعبك الكتتتتتتتتتتتتير دة من بدرى وانت عمال تفهم فيا
ما انا بقول برضو الكود دة مش مظبوط هههههههههههههههههه
انا بقالى 3 ايا بفكر الكود دة هيشتغل ازاى هههههههههههه
بس اللة ينور على حضرتك بجد



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