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

مشاهدة نتائج الإستفتاء: هل ترى أهمية لدورة تشرح لغة (mikroBasic) لبرمجة البيك ؟
موضوع فى غاية الأهمية و ضرورى جدا ... ... 1 23 95.83%
موضوع هام ولكن يوجد ما يكفى ... ... 2 1 4.17%
موضوع مكرر ولا داع لبذل المزيد من الجهد ... 3 0 0%
المصوتون: 24. أنت لم تصوت في هذا الإستفتاء

   

montasr88
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2010
الدولة: jordan
المشاركات: 127
نشاط [ montasr88 ]
قوة السمعة:
قديم 19-03-2010, 11:33 PM المشاركة 41   
افتراضي



انا متابع الدوره من اولها

مشكووور وتابع عطاءك

اعلانات

صهيب البلال
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2009
المشاركات: 85
نشاط [ صهيب البلال ]
قوة السمعة:
قديم 20-03-2010, 06:00 PM المشاركة 42   
افتراضي


الحمد لله والصلاة والسلام على رسول الله وعلى آله وصحبه ومن والاه

الاخوة الكرام ahmad72 و montasr88
أشكركما على المتابعة والتشجيع وجزاكما الله خيرا ... وأعد جميع الإخوة المتابعين بأن هذه الدورة ستكون اكثر تفاعيلة وإثارة في الدروس القادمة حيث سيتم طرح الأسئلة حول الدروس التي تم شرحها ...

نكمل حول أساسيات هذه اللغة الجميلة
2- المصفوفات
المصفوفات : عبارة عن مجموعة من العناصر ( المتغيرات ) متشابهة في النوع تخزن في مواقع متتالية في الذاكرة العشوائية ( (RAMللـ Pic ...

إذن المصفوفة تمثل مجموعة من العناصر جميع هذه العناصر يجب أن تكون من نفس النوع ... اكيد أنت تتذكر ما المقصود بالنوع ؟؟؟ نوع المتغير الذي تكلمنا عنه في الدرس السابق إما (byte , word , integr ,… (
إذن ممكن يكون عندنا مصفوفة من النوع byte أو من النوع work أو .....
الآن كيف نعرّف مصفوفة في لغة مايكروبيسك ؟؟
لتعريف مصفوفة من النوع byte نكتب التالي
كود:
Dim (array name) as byte[array length]
مثلا
كود:
dim suh as byte[8]
صار عندنا مصفوفة تحتوي على ثمانية عناصر من صفر الى سبعة ...
لاحظ : كل عنصر من عناصر المصفوفة السابقة يمكن أن نعتبره متغير من النوع byte
كيف أصل الى أي عنصر من عناصر المصفوفة ؟؟؟
جميل .... لكي نصل الى العنصر الأول نكتب suh[0[ وللعنصر الثاني نكتب suh[1] وللعنصر الثامن suh[7] وهكذا

الآن ما رأيك أن نكتب برنامج يقوم بتعريف مصفوفة تحتوي على 5 عناصر من النوع byte ويجمع العنصر الأول مع الثاني ويضع الناتج في العنصر الثالث
ويطرح العنصر الخامس من العنصر الرابع ويضع الناتج في العنصر الخامس ...؟
برنامج بسيط ( وغير مفيد ) إليس كذلك ؟
كود:
Program array1
Dim suh as byte[5]
Main:
Suh[2]=suh[0]+suh[1]
Suh[4]=suh[3]-suh[3] 
End
لكي يصبح البرنامج مفيدا ... نفرض أن العنصر الأول يساوي 4 والعنصر الثاني يساوي 3 .. إذن العنصر الثالث =4+3 =7
أفرض أن العنصر الرابع =8 والعنصر الخامس = 2 ...كم ستكون النتيجة الجديدة للعنصر الخامس ؟؟؟؟ أكيد 8-2= 6
مارأيك أن نعرض النتيجة على منافذ الـ pic كالتالي
porta=suh[2]
portb=suh[4]
إذن البرنامج سيصبح
كود:
Program array1
dim suh as byte[5]
main:
trisa=0
trisb=0
suh[0]=4
suh[1]=3
suh[3]=8
suh[4]=2
suh[2]=suh[0]+suh[1]
suh[4]=suh[3]-suh[4]
porta=suh[2]
portb=suh[4]
end
لاحظ التنفيذ على برنامج بروتس


طبعا نستطيع عمل البرنامج السابق دون استخدام المصفوفات لكن أردنا أن نوضح كيفية جمع وطرح عناصر المصفوفة ... وكيف نسند قيمة الى أي عنصر على حدة
... ويمكنك إجراء عمليات الضرب والقسمة والعمليات المنطقية بنفس الطريقة

لا تنسى أنه يمنك تعريف مصفوفة من النوع word كالتالي
كود:
dim suh as word[5]
ومن النوع integer كالتالي
كود:
dim suh as integer[5]
وهكذا بقية الأنواع

لكن ... ما دامت المصفوفة عبارة عن مجموعة من المتغيرات فلماذا نستخدمها . الا يكفي أن نعرف هذه المتغيرات فحسب ؟؟؟
طبعا لا وذلك للاسباب التالية :
1- المصفوفة تختصر علينا الجهد .. أفرض أنك بحاجة الى تعريف 100 متغير
أيهما أسهل
كود:
Dim suh as byte[100]
أم
كود:
Dim suh1,suh2,suh3,suh4,……………,suh100 as byte
أكيد الطريقة الأولى أسهل
2- المصفوفة تمكننا من الوصول الى العناصر بسهولة ( سيتضح لك الأمر فيما بعد عند استخدام حلقات التكرار )
3- المصفوفة توفر مساحة الخزن ... لاحظ الرابط التالي
http://www.qariya.com/vb/showthread.php?t=60878

لا أريد الإطالة أكثر ...
نلتقي في الدرس القادم إن شاء الله تعالى
سبحانك اللهم وبحمدك أشهد أن لاإله إلا أنت أستغفرك وأتوب إليك


التعديل الأخير تم بواسطة : صهيب البلال بتاريخ 20-03-2010 الساعة 06:06 PM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

montasr88
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2010
الدولة: jordan
المشاركات: 127
نشاط [ montasr88 ]
قوة السمعة:
قديم 21-03-2010, 08:57 PM المشاركة 43   
افتراضي


شيء أكيد ان النصفوفات توفر جهد كبير
هل ستتعامل في المستقبل القريب مع المصفوفات من ذات البعدين؟؟
انا لسه متابع معكم


الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,484
نشاط [ wleed antar ]
قوة السمعة:
قديم 21-03-2010, 11:44 PM المشاركة 44   
افتراضي


السلام عليكم ورحمة الله وبركاته

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

----------------------------------------------------------------------


أشكر جميع الإخوة على كافة التعليقات الطيبة و أشكر الأخ عماد وأحب أن أجيبه قائلا أن بالنسبة لكتابة الرسائل والمصفوفات وابتكار المشاريع وغير ذلك فاطمئن لأنه من يتعلم حروف الهجاء يكتب ما يريد ومن لم يتعلم إلا رسم الكلمة فقط لن يكتب سواها ! !

أذكر نفسى مع حضراتكم

عن المتغيرات
-----------------

أضع نبذة بسيطة عن المتغيرات
ربما يكون لديك أخى بريدبورد أو لوحة تجارب كالتى ذكرناها فى بداية الموضوع ، فلماذا هذه اللوحة ؟
كى نجرى عليها تجاربنا بسهولة وبسرعة وبدون لحام للمكونات ولسهولة فك وتغيير المقاومات فى الحال حتى إذا انتهينا من مشروعنا أو مرحلة من مشروعنا قمنا بتسجيل البيانات والمخطط ثم نقوم بفك كل المكونات وتركيبها بشكل مختلف تماما ليناسب مشروعا آخر أو مرحلة أخرى من المشروع فبهذه الطريقة نكون استخدمنا نفس اللوحة ونفس المكونات ونفس وحدة التغذية المتعددة الخروج , ولم نشغل كثيرا من سطح مكتب معملنا .

وكذلك المتحكم الصغير يمكنك برمجته عدة مرات وتجربة كثيرا من المشاريع على نفس هذا المتحكم عدة مرات ولكن لو أن هذا المتحكم لم يقبل البرمجة سوى مرة واحدة فقط لاحتجنا عدد كبير من المتحكمات بعدد التجارب والمشاريع التى نطورها ولأنفقنا الكثير من الأموال ولكن متحكما واحدا أصبح ( متغيرا ) نستطيع تخزين المعلومات عليه وتجربته وتدوين هذا المشروع بعد إتمامه ثم إعادة تخزين معلومات أخرى على نفس المتحكم من جديد !

وهكذا المتغيرات فى برنامجنا نخزن فى المتغير الواحد قيمة أو معلومة يمكن تغييرها ثم استدعائها بالعنوان أى بإسم المتغير بغض النظر عن ما يحتويه فمثلا إذا أردنا تصميم برنامجا يقوم بعمل رسائل متحركة مثلا أو بعدة تعليمات فإننا مثلا نحتاج لوضع قيمة معينة لزمن تأخير ولعدد أحرف الكلمة الواحدة لعرض الحركة ونحتاج لكتابة هذا الأمر عدد من المرات داخل البرنامج فإذا قمنا بتجربته فقد نلاحظ أننا نحتاج لتعديل فى هذا الزمن مثلا فنذهب بحثا عن هذا الزمن عند مواضع محدده من سير البرنامج ونقوم بتغييرها كلها أما لو أننا قمنا بعمل متغير يحتوى على تأخير زمنى محدد فى أول البرنامج فإننا نستطيع تعديل البرنامج ببساطه بتغيير زمن هذا المتغير فى أول سطور البرنامج فقط مرة واحدة داخل تعليمة واحدة فيتغير تبعا لهذا جميع تعليمات التأخير لهذا المتغير داخل البرنامج وهذا للتسهيل على أنفسنا .

وقد نجبر أحيانا لأن نضع متغيرا ليتم تخزين قيمة من المستخدم يتلقاها البرنامج ليجرى عليها كثيرا من التعليمات وهنا يلعب المتغير دورا أساسيا فى هذه الجزئية ، وهناك متغيرات مركبة وهى ما تعرف بإسم المصفوفة والتى تخزن بها التعليمات ويتم استدعائها من قبل متغيرات أخرى .

وهناك مصفوفات تسمح بالتعديل وهى التى ذكرها الأخ صهيب وأخرى لا تسمح بالتعديل const

وهذا برنامجا يستخدم متغير بسيط

program Led_on_off

dim Var1 as byte

:main
trisb = 0
for Var1 = 1 to 255
portb = Var1
( delay_ms( 500
next Var1

portb = 0
( delay_ms( 1000
goto main
.end
فى هذا البرنامج نرى متغيرا بسيطا من نوع بايت والذى يعنى أنه يخزن قيم لا تتعدى 255 كما سبق ووضح لنا الأخ صهيب فى قيم المتغيرات ،

هذا البرنامج لن نخوض فى تفصيل شرح التعليمات وأترك لحضراتكم استنتاج الناتج وبرجاء التأمل وتدوين الملاحظات فى ورقة جانبية قبل تجربته ثم مقارنة النتيجة الفعلية بالنتيجة المتوقعة .


التعديل الأخير تم بواسطة : wleed antar بتاريخ 21-03-2010 الساعة 11:49 PM

jackal313_3
:: مهندس ::
تاريخ التسجيل: Mar 2010
المشاركات: 9
نشاط [ jackal313_3 ]
قوة السمعة:
قديم 25-03-2010, 02:16 AM المشاركة 45   
افتراضي


جزالك الله خيرا على هذا الجهد الرائع

فعلن انه السهل الممتنع قمت بتحميل البرامج كامله وسوف ابدا بالتجارب
بانتظار المزيد بارك الله فيك


صهيب البلال
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2009
المشاركات: 85
نشاط [ صهيب البلال ]
قوة السمعة:
قديم 27-03-2010, 03:01 PM المشاركة 46   
افتراضي


بسم الله الرحمن الرحيم
الحمد لله رب العالمين والصلاة والسلام على سيدنا محمد سيد المرسلين وعلى آله وصحبه اجمعين ...
أشكر جميع اٌخوة المتابعين واعتذر عن التأخير
واقول للأستاذ وليد ... جزاك الله خيرا على ما قدمته من توضيبحات حول موضوع المتغيرات .. ونطلب منك تعليقا لكل موضوع حتى تعم الفائدة .. بارك الله فيك
على بركة الله تعالى نكمل ...

الدرس الثالث : لا زلنا مع أساسيات لغة المايكروبيسك .... وقد تعرفنا على المتغيرات والمصفوفات ... وسنؤجل الحديث عن المتغيرات النصية ونتكلم عن موضوع مهم جدا ومفيد للغاية ألا وهو جمل الشرط
3-جمل الشرط :
نبدأ بجملة (if)
افرض أن لديك الدائرة البسيطة التالية

المصباح منطفئ ... لكن إذا غلق المفتاح أنار المصباح ...
إذن شرط إضاءة المصباح هو غلق المفتاح ... فإذا تحقق الشرط تحقق المشروط عليه ...
إذن حقيقة الشرط تتلخص في التالي ( إذا تحقق كذا .... افعل كذا )
الآن كيف نطبق الشرط في مايكروبيسك.... ايعازات سهلة
تذكير : الايعازات مشابهة تماما للغة فيجوال بيسك
كود:
If conditions then 
statements
End if
إذا تحقق الشرط أو الشروطconditions نفذ الإجراءات statements
لكي نفهم الموضوع بشكل دقيق سنقوم بكتابة البرنامج التالي :
1- نهيئ المنفذ A للإدخال
2- نهيئ المنفذ B للإخراج
3- نربط مفتاح sw0 على الطرف A0 ونربط دايود ضوئي led0 على الطرف B0
4- إذا تم غلق المفتاح sw0 فإن الـ led0 يضيء
اليك البرنامج :
كود:
Program ifthen
Main
Trisa=31
Trisb=0
aa:
if porta.0=1 then portb.0=1
goto aa
end
ماذا تتوقع ان تكون نتيجة البرنامج السابق ؟؟
الظاهر : أنه عند الضغط على الزر sw0 فإن led0 يضيء ويبقى مضاء ...
جميل جدا.... تمكنا من ربط الإدخال بالإخراج ... تمكنا من التحكم بالإخراج عن طريق الإدخال.. توصلنا الى المبدأ الأساسي للسيطرة .. بهذه السهولة ؟؟؟
نعود الى البرنامج مرة أخرى .... ونطرح التساؤلات
التساؤل الأول : لماذا لم نستخدم end if ؟؟؟ اليك الاجابة وأرجو ان تنتبه اليها وتحفظها ... إذا كتبنا جملة واحدة (إجراء واحد) فقط بعد جملة الشرط if فلا حاجة الى إنهاء الشرط باستخدام end if ...
لاحظ في البرنامج السابق كتبنا عبارة portb=led0 فقط بعد جملة الشرط لذلك لم نحتج الى استخدام end if ... أتمنى أن يكون الأمر واضحا
التساؤل الثاني : كيف نعدل على البرنامج ليجعل led0 يضاء عند الضغط على الزر sw0 وينطفي عندما يكون الزر غير مضغوط .... ؟؟
لابد من استخدام else
كيف ؟؟
كود:
If conditions then 
statements
else
statements
End if
ليصبح البرنامج كالتالي
كود:
Program ifthen
Main
Trisa=31
Trisb=0

aa:
if porta.0=1 then
portb.0=1 
else
portb.0=0
end if 
goto aa
end
التساؤل الثالث : ما فائدة استخدام إيعاز الانتقال goto aa ؟؟
أقول ... نحن نريد أن نراقب حالة الطرف A0 دائما ونسجل أي تغير يطرأ عليه ... لذلك نحتاج إلى استعمال حلقة غير منتهية بداخلها ايعازات المراقبة
ونحن قد استخدمنا هذه الحلقة التي شرحها من قبل الاستاذ وليد
Aa:


Goto aa
مع العلم أنه يمكننا استخدام أي كلمة بدل aa
مثلا
Loop :
الايعازات
Go to loop
إذن ضع هذه الملاحظة في بالك وتذكر أنه كلما أردت مراقبة الإدخال سواء كان الإدخال مفتاح أو متحسس أو ... يجب عليك أن تضع ايعازات المراقبة في حلقة غير منتهية infinite loop

.................................................. ...........................................
الآن ما رأيك أن نتحكم في إطفاء وتشغيل أجهزة تعمل على الجهد 12 فولت أو أي جهد تحتاجه باستخدام pic ؟؟
قبل الإجابة لابد من توضيح الأشياء التي تحتاجها للتحكم بهكذا أجهزة
1-ترانزستور كمفتاح وليكن 2n2222
2- مرحل relay
3- مقاومات
سيناريو البرنامج للتحكم في تشغيل وإطفاء أربعة أجهزة تعمل على 12 فولت :
1- نهيئ الطرف A كإدخال والطرف B كإخراج
2- نربط الدائرة كما في الشكل أدناه
URL=http://dreameer.com/up/][/URL]

3- عند الضغط على المفتاح الأول يشتغل الجهاز الأول .... وهكذا
كود:
Program ifthen
Main
Trisa=31
Trisb=0
aa:
if porta.0=1 then
portb.0=1 
else
portb.0=0
end if 
if porta.1=1 then
portb.1=1 
else
portb.1=0
end if 
if porta.2=1 then
portb.2=1 
else
portb.2=0
end if 
if porta.3=1 then
portb.3=1 
else
portb.3=0
end if 
goto aa
end
نتوقف الى هنا ...
الخلاصة :
1- لن تتمكن من ربط الإخراج بالإدخال الا باستخدام جمل الشرط
2- لكي تراقب حالة الإدخال يجب أن تستخدم حلقة تكرار غير منتهية
3- جملة if لها عدة صيغ :
الصيغة الأولى :
كود:
If conditions then one statement
الصيغة الثانية :
كود:
if conditions then 
statements
end if
الصيغة الثالثة :
كود:
if conditions then 
statements
else
statements
end if
سنتعرف على بقية الصيغ في الدروس القادمة إن شاء الله تعالى

سبحان ربك رب العزة عما يصفون وسلام على المرسلين والحمد لله رب العالمين


صهيب البلال
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2009
المشاركات: 85
نشاط [ صهيب البلال ]
قوة السمعة:
قديم 27-03-2010, 03:07 PM المشاركة 47   
افتراضي


الإخوة المتابعين الكرام ...
لكي يصبح الموضوع أكثر تفاعلا أطلب منك عمل البرنامج التالي
1- نربط ثلاثة مفاتيح على الطرف A وثلاثة مصابيح على الطرف B
2- عند الضغط على المفتاح الأول يضي المصباح الأول وينطفئ مرتين
3- عند الضغط على المفتاح الثاني يضي المصباح الثاني وينطفئ ثلاث مرات
4- عند الضغط على المفتاح الثالث يضي المصباح الثالث وينطفئ أربع مرات

انتظر إجاباتكم
لاتنسوا الرجوع الى المشاركة السابقة للاستفادة
وجزاكم الله خيرا


zoro238
:: مهندس جيد ::
تاريخ التسجيل: Apr 2006
المشاركات: 290
نشاط [ zoro238 ]
قوة السمعة:
قديم 29-03-2010, 04:48 PM المشاركة 48   
افتراضي


ممكن رابط اخر غير رابط 4 شير لاانة مجود عندنا

ممكن لتحميل البرنامج والكراك ولمتابعه الدروس



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