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

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-05-2013, 12:37 PM المشاركة 1   
افتراضي هيكل وعناصر بناء البرنامج عند البرمجة بلغة Basic والمترجم mikroBasic PRO for PIC : Twitter FaceBook Google+



هيكل وعناصر بناء البرنامج عند البرمجة بلغة Basic والمترجم mikroBasic PRO for PIC :
مثل لغات البرمجة الأخرى ، توفر لغة Basicمجموعة من القواعد المحددة بدقة والتى يجب مراعاتها عند كتابة البرامج .وخلافا لمعظم البرامج التى تعودت على التعامل معها ، لا تبدأ عملية كتابة البرامج فى المترجم من خلال اختيار الخيار File>New (ملف جديد) ، ولكن من خلال اختيار الخيار Project>New(مشروع جديد) . لماذا ؟ حسنا ، أنت سوف تكتب برنامج في وثيقة بالامتداد (.mbas)(mikroBasic). وتكتب , وتكتب , وتكتب بجدية , وعند ترجمة ذلك إلى الكود السداسى عشر hex، سوف يتم إنشاء مستند جديد بالامتداد (.hex) . فى نفس الوقت فإن المترجم سوف يقوم تلقائيا بإنشاء العديد من الوثائق . الغرض من هذه الوثائق ليس مهما فى هذه المرحلة . بالطبع ، يجب أن يكون هناك شىء لربطهم جميعا . هذا الشىء هو ما نتحدث عنه وهو "المشروع" . البرنامج الذى تكتبه هو مجرد جزء من المشروع .
فقط للتأكد من أننا نسير فى نفس الطريق , من الآن , كلمة "وحدة نمطية" أو "موديول" moduleتشير إلى مستند بالامتداد (.mbas). ويشار إلى النص الذى تحتويه بالبرنامج program. كل مشروع مكتوب بالمترجم mikroBasic PRO for PIC له الامتداد ( .mbppi)ويتكون من وحدة واحدة على الأقل (هى الوحدة الرئيسية Main Module) . كل مشروع يتطلب وحدة رئيسية واحدة . يتم التعرف عليها عن طريق كلمة التوجيه programوهى ترشد المترجم من أين يبدأ عملية الترجمة . عند إنشاء مشروع فارغ فى معالج المشروع Project Wizard بنجاح ، سوف يتم عرض الوحدة الرئيسية تلقائيا في نافذة محرر الكود Code Editor بالشكل التالى :

كود:

program MyProject ' The main module is called MyProject here main: ' Main procedure ... '* ... '* Write program code here ... '* end.

ملاحظات :
· لا يسبق أى شىء كلمة program، باستثناء التعليقات comments .
· يجوز للمشروع أن يشمل أيضا وحدات modules أخرى والتى ، على خلاف الوحدة الرئيسية , تبدأ بكلمة module كما يلى :
كود:
module MyModule ' Auxiliary module is called MyModule ... '* ... '* Implements ... '* end.

تنظيم الوحدة الرئيسية MAIN MODULE :
في الأساس، يمكن تقسيم الوحدة الرئيسية إلى قسمين:
· قسم الإعلانات declarations .
· وقسم جسم body البرنامج .
ما هو الإعلان Declaration فى البرمجة ؟
الإعلان هو عملية تحديد خصائص المعرفات (الأسماء) لاستخدامها فى البرنامج . مثل معظم لغات البرمجة الأخرى ، أيضا , تتطلب لغة Basicأن يتم إعلان جميع المعرفات قبل استخدامها فى البرنامج , وإلا ، فإن المترجم قد لا يكون قادرا على تفسيرها بشكل صحيح .

فيما يلى طريقة إعلان متغير يسمى distance :


كود:

dim distance as float ' Declare variable distance
كما ترى، المتغير بنقطة عائمة floating point (نقطة عشرية) ، أى عدد بعلامة عشرية اختيارية يتغير مكانها .
عناصر البرمجة بلغة Basic :

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-05-2013, 12:47 PM المشاركة 2   
افتراضي


عناصر البرمجة بلغة Basic :
1- المعرفات IDENTIFIERS :
المعرفات هى أسماء تسند (تخصص) إلى كائنات لغة Basicمثل الثوابت constants ، والمتغيرات variables ، والدوال functions, والإجراءات procedures الخ . شخص ما جاء بفكرة استخدام كلمة "المعرف" identifier بدلا من الاسم name ,هكذا وببساطة .

فيما يلى بعض القواعد التي يجب مراعاتها عند استخدام المعرفات:
يمكن أن تحتوى المعرفات على جميع الحروف الأبجدية (سواء العلوية أو السفلية) ، والأرقام (0-9) والشرطة السفلية (_) .
• لا يمكن أن يكون الحرف الأول من المعرف رقما.
لا يمكن أن تحتوى المعرفات على أحرف خاصة مثل! [{# $٪ & الخ .
• لغة
Basicليست حساسة لحالة الأحرف ، وهو ما يعني أن FIRST و first وFirstسوف تعتبر متطابقة .

• يستخدم
رمز (علامة) الإقحام ^ للدلالة على العامل الأسى exponentiation operator ، ويتم استخدام رمز النجمة * للدلالة على الضرب multiplication ، بينما غيرها من الرموز يكون لها المعانى المعتادة.
الكلمات المستخدمة بالفعل من قبل المترجم يجب ألا تستخدم كمعرفات . الجدول التالى يبين قائمة بالكلمات المخصصة للمترجم mikroBasic:





هذه القائمة بالمعرفات التى لا يجب أن تستخدم فى البرنامج .
2 - التعليقات COMMENTS :


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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-05-2013, 12:52 PM المشاركة 3   
افتراضي


2- التعليقات COMMENTS :
التعليقات هي جزء من البرنامج والتى تستخدم لتوفير مزيد من المعلومات عن البرنامج وجعله واضح للمستخدم . فى لغة Basic، يعتبر أى نص بعد علامة الاقتباس المفردة (') تعليقا comment. لا يتم ترجمة التعليقات فى الكود القابل للتنفيذ . المترجم قادر على التعرف على الحرف الخاص المستخدم فى وضع علامة مكان بداية التعليقات ويتجاهل النص التالى تماما أثناء الترجمة . على الرغم من أن التعليقات لا يمكن أن تؤثر على تنفيذ البرنامج ، إلا أنها لا تقل أهمية عن أى جزء آخر من البرنامج لأن كل برنامج تقريبا يحتاج إلى تحسين أو تعديل أو ترقية أو تبسيط فى بعض النقاط . بدون التعليقات ، فإنه يكاد يكون من المستحيل فهم حتى أبسط البرامج .







3- الملصقات (اللافتات أو العناوين) ) LABELS


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 24-05-2013 الساعة 12:56 PM

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-05-2013, 05:42 PM المشاركة 4   
افتراضي


3- الملصقات (اللافتات) LABELS
استخدام الملصقات labelsأسهل طريقة للسيطرة (التحكم) على تدفق البرنامج . فهى تستخدم فى "وضع علامة" على خطوط (سطور) خاصة فى البرنامج حيث يتم تنفيذ تعليمات القفز والروتينات الفرعية المناسبة . يجب أن يتم إنهاء جميع الملصقات بالنقطتين ':' حتى يتمكن المترجم من التعرف عليها بسهولة.








4- الثوابت CONSTANTS


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-05-2013, 05:44 PM المشاركة 5   
افتراضي



4- الثوابت CONSTANTS
الثابت هو عدد أو حرف والذى قيمته لا يمكن أن تتغير أثناء تنفيذ البرنامج . على عكس المتغيرات ، يتم تخزين الثوابت في ذاكرة ROM للميكروكونترولر من أجل توفير الكثير من مساحة ذاكرة RAMقدر الإمكان . يتعرف المترجم على الثوابت عن طريق أسمائها والبادئة بكلمة const. يتم إعلان كل ثابت باسم فريد من نوعه والذى يجب أن يكون معرفا صالحا.
الثوابت تكون متاحة فى الأشكال : العشرية , والسداسية عشر , والثنائية . يميز المترجم بينها وفقا للبادئات الخاصة بكل منها . إذا لم يكن للثابت بادئة فإنه يعتبر عشرى افتراضيا .








ملاحظات :
· يتم إعلان الثوابت في جزء الإعلان بالبرنامج أو بالروتين .
· بناء جملة الثوابت تكون كما يلى :
كود:
const constant_name [as type] = value

* عادة يتم كتابة أسماء الثوابت بالأحرف الكبيرة .
· يتم التعرف على نوع الثابت تلقائيا عن طريق حجمه .
فى المثال التالى ، يعتبر الثابت MINIMUMعدد صحيح بإشارة وسوف يتم تخزينه داخل 2 بايت 2-byte(16 بت) 16-bitمن ذاكرة الفلاش :


كود:

const MINIMUM = -1000 ' Declare constant MINIMUM


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


كود:
const MAX as longint = 10000 const MIN = 1000 ' Compiler will assume word type const SWITCH = "n" ' Compiler will assume char type

في المثال التالى ، يتم إعلان ثابت يسمى T_MAX بطريقتين . بعد ذلك يمكن , فى البرنامج , مقارنة درجة الحرارة المقاسة بهذا الثابت مع استخدام اسم ذات معنى T_MAX بدلا من العدد 32.60 .
كود:
const T_MAX = 32.60 ' Declare temperature T_MAX const T_MAX = 3.260E1 ' Another way of declaring constant T_MAX


"ثابت السلسلة النصية" string :
يتكون ثابت السلسلة النصية stringمن الأحرف ,ويتم إحاطته بعلامات اقتباس مزدوجة "…". كما يمكن أيضا تضمين مساحة فارغة فى ثابت السلسلة النصية كحرف . تستخدم ثوابت السلسلة النصية لتمثيل الكميات الغير عددية مثل الأسماء والعناوين والرسائل الخ .


كود:
const Message_1 = "Press the START button" ' Message 1 for LCD const Message_2 = "Press the RIGHT button" ' Message 2 for LCD const Message_3 = "Press the LEFT button" ' Message 3 for LCD

فى المثال السابق , إرسال الثابت Message_1 إلى وحدة العرض LCDسوف يتسبب فى عرض الرسالة ‘press the START button’.
5- المتغيرات VARIABLES :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-05-2013, 05:46 PM المشاركة 6   
افتراضي


5- المتغيرات VARIABLES :
المتغير هو كائن له اسم , وهو قادر على احتواء البيانات والتى يمكن تعديلها أثناء تنفيذ البرنامج . يتم إعلان كل متغير باسم فريد من نوعه والذى يجب أن يكون معرفا صالحا .
على سبيل المثال ، لجمع الرقمين (number1 + number2) فى البرنامج ، فمن الضرورى أن يكون هناك متغير لتمثيل ما نسميه بالمجموع sum. فى هذه الحالة تكون number1, number , sum متغيرات . بناء جملة إعلان متغير واحد تكون كما يلى:

كود:
dim variable_name as type


فى لغة Basic تكون المتغيرات "نوعية" , وهو ما يعنى أنه من الضرورى تحديد نوع typeبيانات المتغير المطلوب الحصول عليها . يتم تخزين المتغيرات في ذاكرة الوصول العشوائي RAMومساحة الذاكرة المحتلة (بالبايت) تعتمد على نوع المتغير .
بالإضافة إلى الإعلانات المفردة ، يمكن إعلان المتغيرات من نفس النوع على شكل قائمة.
فيما يلى قائمة لمتغيرات مفصولة بفواصل لمعرفات صالحة ، حيث النوع typeيمكن أن يكون أى نوع من البيانات .

كود:
dim i, j, k as byte 'Define variables i, j, k dim counter, temp as word 'Define variables counter and temp



6- الرموز SYMBOLS :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-05-2013, 05:47 PM المشاركة 7   
افتراضي


6 - الرموز SYMBOLS :
تسمح لك الرموز فى لغة Basicبإنشاء وحدات صغيرة (ماكرو macro) بسيطة بدون بارامترات . وهو ما يعنى أن أى سطر بالكود يمكن استبداله بمعرف واحد . عندما تستخدم الرموز على الوجه الصحيح ، يمكن أن تزيد وضوح الكود وإعادة استخدامه .
يتم إعلان الرموز في بداية الوحدة ، وبالضبط بعد اسم الوحدة والتوجيه الخيارى include . نطاق الرمز يقتصر دائما على الوحدة التى تم إعلانه بها .

كود:
symbol symbol_name = code

فى المثال السابق اسم الرمز symbol_name يجب أن يكون معرفا صالحا لاستخدامه خلال الكود . "الكود" code يمكن أن يكون أى سطر لكود ( قيمة حرفية ، تخصيص ، استدعاء دالة ، الخ).

كود:
symbol MAXALLOWED = 216 ' Symbol MAXALLOWED for numeric value symbol OUT = PORTA ' Symbol OUT for SFR symbol MYDELAY = Delay_ms(762) ' Symbol MYDELAY for procedure call dim cnt as byte ' Variable cnt main: if cnt > MAXALLOWED then ' Program checks whether cnt > 216 cnt = 0 ' If yes, OUT.1 = 0 ' the following three commands MYDELAY ' are to be executed end if ... ' If not, program continues here

لا يتم استخدام أى مساحة ذاكرة RAM لتخزين الرموز المستخدمة في البرنامج , لأن المترجم ببساطة يستبدل جميع الرموز بسطور الكود المناسبة والمخصصة لها عند الإعلان عنها .
أنواع البيانات الأساسية بلغة Basic :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-05-2013, 05:50 PM المشاركة 8   
افتراضي


أنواع البيانات الأساسية بلغة Basic :
هناك العديد من أنواع البيانات التي يمكن استخدامها فى البرمجة بلغة Basic. يبين الجدول أدناه نوع type البيانات , ووصفها , وحجمها size( عدد البتات bits) ومدى rangeالقيم التى يمكن أن تكون لها عند استخدامها في شكلها الأساسى .






التحويل التلقائى لنوع البيانات :
المترجم ينفذ تلقائيا التحويل الضمنى فى الحالات التالية:
• إذا كانت العبارة statement تتطلب التعبير expression عن نوع معين ، ولكن يتم استخدام تعبير من نوع مختلف .
• إذا كان العامل operator يتطلب معامل operand من نوع معين، ولكن يتم استخدام معامل من نوع مختلف .
• إذا كانت الدالة function تتطلب بارامترات رئيسية من نوع معين ، ولكن يتم تخصيص كائن من نوع مختلف .
• إذا كاننت نتيجة الدالة لا تتناسب مع نوع بيانات العودة المعلنة للدالة .

قطع (قص) البيانات DATA CLIPPING
في عبارات التخصيص والعبارات التى تتطلب تعبيرا عن نوع معين ، سوف يتم تخزين القيمة الصحيحة فى المكان المقصود فقط إذا كانت نتيجة التعبير لا تتجاوز نطاق المكان المقصود . وإلا ، إذا تم تقييم التعبير إلى نوع أكثر تعقيدا مما كان متوقعا ، فإن البيانات الزائدة ببساطة سوف يتم قطعها ، أى أن البايتات "الأعلى" سوف تفقد , كما فى المثال التالى :

كود:
dim i as byte ' Variable i occupies one byte of RAM dim j as word ' Variable j occupies two bytes of RAM ... j = $FF0F i = j ' i becomes $0F, higher byte $FF is lost


التحويل الصريح لنوع البيانات
قد يتم تنفيذالتحويل الصريح على أى تعبير في أى لحظة من خلال كتابة كلمة النوع المطلوب
(byte, word, short, integer, longint, float...) قبل التعبير ليتم تحويلها. يجب إحاطة التعبير بأقواس (…). لا يمكن تنفيذ التحويل الصريح على المعامل الموجود يسار عامل التخصيص .


كود:
a = word(b) ' Explicit conversion of expression b word(b) = a ' Compiler will report an error


العوامل (المؤثرات) OPERATORS :


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 24-05-2013 الساعة 05:54 PM
إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2024