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

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 06-10-2011, 02:09 PM المشاركة 129   
افتراضي



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

شكرا جزيلا لك

بارك الله فيك

اللهم يسر لى ولك وللجميع

مع تمنياتى بدوام التوفيق

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 06-10-2011, 02:11 PM المشاركة 130   
افتراضي


3-1-8 الثوابت Constants

الثوابت تمثل قيم "ثابتة" (عدد أو حرف) فى البرؤنامج والتى لا يمكن تغييرها .يتم تخزين الثوابت فى ذاكرة البرنامج الفلاش للميكروكونترولر PIC وبالتالى فلا إهدار لذاكرة RAM "المحدودة" و "القيمة" . فى الميكروسى يمكن أن تكون الثوابت من النوع : أعداد صحيحة أو أعداد حقيقية أو حروف أو سلاسل نصية أو أحصائية (تعداد) .

1- الثوابت من نوع العدد الحقيقى Integer Constants
ثوابت العدد الحقيقى يمكن أن تكون أعداد "عشرية" أو "سداسى عشرية" أو "ثمانية" أو "ثنائية" . يتم اشتقاق نوع بيانات الثابت بواسطة المترجم "من قيمته" . ولكن يمكن استخدام "لاحقات" لتغيير نوع الثابت .
رأينا فى الجدول 3-2 أن الثوابت العشرية اها القيم من ( -2147483648 ) إلى (4294967295 ). على سبيل المثال العدد الثابت 210 يتم تخزينه بالنوع " حرف بدون إشارة" unsigned char (أو كعدد صحيح بدون إشارة unsigned short int ) . بالمثل العدد الثابت (-200) يتم تخزينه بالنوع " عدد صحيح بإشارة" signed int .
استخدام اللاحقة "u" أو "U" "تجبر" الثابت على أن يكون "بدون إشارة unsigned . استخدام اللاحقة "l" أو "L"تجبر الثابت على أن يكون "طويل بدون إشارة" unsigned long .
يتم تعريف الثوابت باستخدام كلمة const ويتم تخزينها فى ذاكرة البرنامج الوميضية للميكروكونترولر PIC :

const MAX =100;







الثوابت السداسى عشرية تبدأ بالحروف 0x أو 0X وقد تحتوى على بيانات عددية (من 0 إلى 9 ) و حروف سداسية عشر (من A إلى F) . المثال التالى يبين الثابت TOTAL معطى بالقيمة السداسى عشرية FF :

const TOTAL = 0xFF;







الثوابت الثمانى عشرية بها "صفر" فى بداية العدد وقد تحتوى على بيانات عددية ( من 0 إلى 7) . المثال التالى يبين الثابت CNT معطى بالقيم بالثمانى عشرية 17 :
const CNT =017;







ثوابت الأعداد الثنائية تبدأ بالحروف 0b أو 0B وقد تحتوى فقط على 0 أو 1 . المثال التالى يبين ثابت يسمى Min يتم تعريفه وتخصيص القيمة الثنائية 11110000 له :
const Min = 0b11110000;






2- ثوابت الأعداد الحقيقية Floating Point Constants

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 06-10-2011, 02:12 PM المشاركة 131   
افتراضي


2- ثوابت الأعداد الحقيقية Floating Point Constants

أعداد ثوابت الأعداد الحقيقية بها "عدد صحيح" و "نقطة" والجزء الكسرى و الخيار "الحرف e أو E متبوع بعدد صحيح بإشارة هو الأس " . المثال التالى يبين تعريف ثابت يسمى TEMP وإسناد القيمة الكسرية 37.50 له :


const TEMP = 37.50;
or

const TEMP 3.750E1;




3- ثوابت الحروف Character Constants
ثابت الحرف هو حرف "محاط بعلامتى تنصيص مفردة " . المثال التالى يبين تعريف ثابت يسمى First_Alpha وتخصيص قيمة الحرف “A” له :

const First_Alpha - ‘A’;









4- ثوابت السلسلة النصية
السلسلة النصية هى "تتابع ثابت من الحروف " يخزن فى الذاكرة الوميضية للميكروكونترولر . يحب أن تبدأ وتنتهى السلسلة النصية بعلامة التنصيص المزدوجة (“) . يقوم المترج تلقائيا بإدراج حرف "الصفر null" كإنتهاء . المثال التالى يبين ثابت لسلسلة نصية :
“This is an example string constant”









يمكن تمديد ثابت السلسلة النصية عبر حدود السطر باستخدام الشرطة المائلة (“ \”) :

“This is first part of the string \
and this is the continuation of the string”








هذا التعريف هو نفسه التعريف التالى :

“This is first part of the string and this is the continuation of the string”







5- ثوابت الإحصاء أو التعداد Enumerated Constants
ثوابت الإحصاء هى من نوع الأعداد الحقيقية وتستخدم فى جعل البرنامج أسهل فى السريان . المثال التالى يبين تعريف ثابت أحصائى يسمى colors يخزن أسماء الألوان . العنصر الأول يعطى القيمة 0 :

enum colors {black, brown, red, orange, yellow, green, blue, gray,white};





3-1-9 تتابع الهروب Escape Sequences


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 06-10-2011, 02:14 PM المشاركة 132   
افتراضي


تتابع الهروب Escape Sequences
يطلق على المجموعة المكونة من "الشرطة المائلة" (\) المتبوعة بحرف أو مجموعة أحرف "تتابع الهروب" Escape Sequences .
يستخدم تتابع الهروب لتمثيل حروف أسكى الغير قابلة للطباعة . الجدول 3-3 يبين بعض تتابعات الهروب الشائعة وتمثيلها فى لغة السى .
على سبيل المثال المجموعة “ \ n” تمثل حرف "سطر جديد" newline character .






يمكن تمثيل حروف أسكى أيضا بتحديد كودها السداسى عشر بعد الشرطة المائلة . على سبيل المثال يمكن تمثيل حرف "سطر جديد" أيضا بالشكل “\x0A” .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 06-10-2011, 02:15 PM المشاركة 133   
افتراضي


المتغيرات الساكنة (الاستاتيكية) Static Variables
المتغيرات الساكنة هى متغيرات "محلية" local تستخدم فى الدوال عندما يتعين الحفاظ على القيمة الأخيرة للمتغير بين الاستدعاءات المتتالية للدالة . المثال التالى يبين تعريف المتغيرات الساكنة باستخدام الكلمة static :
static unsigned int count;






3-1-11 المتغيرات الخارجية External Variables
استخدام الكلمة extern قبل اسم المتغير يعلن أن هذا المتغير خارجى . هذا المتغير "يخبر" المترجم أن المتغير تم تعريفه فى مكان آخر فى موديول كود مصدر منفصل . المثال التالى يبين تعريف المتغيرات sum1 و sum2 كمتغيرات خارجية من نوع الأعداد الصحيحة بدون إشارة " .

extern int sum1, sum2;



3-1-12 المتغيرات المتبخرة (المتطايرة) Volatile Variables
المتغيرات المتبخرة ذات أهمية خاصة فى البرامج المستندة إلى المقاطعة وروتيتات المداخل –المخارج . استخدام الكلمة volatile يشير إلى أن قيمة المتغير قد تتغير خلال فترة حياة (عمر) هذا البرنامج غير معتمدا على السريان الطبيعة للبرنامج .
تعريف المتغير على أنه "متبخر" لا يتم جعلة فى الوضع الأمثل بواسطة المترجم لأن قيمه يمكن أن تتغير بشكل غير متوقع . المثال التالى يبين تعريف المتغير المسى Led كمتغير " حرف بدون إشارة متبخر"

volatile unsigned char Led;






3-1-13 المتغيرات الإحصائية (التعدادية – المسرودة ) Enumerated Variables


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 06-10-2011, 02:16 PM المشاركة 134   
افتراضي


13 المتغيرات الإحصائية (التعدادية – المسرودة ) Enumerated Variables
تستخدم هذه المتغيرات لجعل البرنامج أكثر قابلية للقراءة . فى المتغيرات الإحصائية يتم تحديد "قائمة من البنود أو العناصر " ويم تعيين قيمة "أول عنصر بالصفر" والثانى بواحد وهكذا . المثال التالى يبين تعريف المتغير الإحصائى المسمى Week كقائمة "سرد" MON = 0, TUE = 1, WED = 2, وهكذا

enum Week {MON, TUE, WED, THU, FRI, SAT, SUN};





من الممكن وضع قيم العناصر فى قائمة السرد . فى المثال التالى black = 2, blue = 3, red = 4, وهكذا

enum colors {black = 2, blue, red, white, gray};







بالمثل فى المثال التالى black = 2, blue = 3, red = 8, and gray = 9



enum colors {black = 2, blue, red = 8, gray};







يمكن تعريف المتغيرات من النوع الإحصائى بتحديدها بعد قائمة العناصر . على سبيل المثال لتعريف المتغير My_Week بالنوع الإحصائى المسمى Week نستخدم العبارة التالية :

enum Week {MON, TUE, WED, THU, FRI, SAT, SUN} My_Week;







الآن يمكننا استخدام المتغير My_Week فى البرنامج كما يلى :

My_Week = WED // assign 2 to My_Week
or
My_Week = 2 // same as above




بعد تعريف المتغير الإحصائى Week يمكننا تعريف المتغيرات This_Week و Next_Week من نوع Week كما يلى :
enum Week This_Week, Next_Week;





3-1-14 المصفوفات Arrays


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 06-10-2011, 02:17 PM المشاركة 135   
افتراضي


المصفوفات Arrays
تستخدم المصفوفات لتخزين " العناصر ذات الصلة" فى نفس الكتلة من الذاكرة وتحت "اسم محدد" . يتم تعريف المصفوفة عن طريق تحديد "نوعها" و "اسمها" و "عدد العناصر" التى سيتم تخزينها . على سبيل المثال :
unsigned int Total[5];








هذه المصفوفة من النوع "عدد صحيح بدون إشارة " unsigned int واسمها Total وبها خمس عناصر . "دليل" أو "فهرس" أو "مؤشر" index العنصر الأول بالمصفوفة هو الصفر 0 .وهكذا ,فى هذا المثال التعبير Total[0] تشير إلى العنصر بالمصفوفة و التعبير Total[4] يشير إلى العنصر الأخير . يتم تخزين المصفوفة Total فى الذاكرة فى خمس مواقع متتابعة كما يلى :



يمكن تخزين البيانات فى المصفوفة عن طريق تحديد "اسم المصفوفة" و "الدليل" . على سبيل المثال , لتخزين القيمة 25 فى العنصر الثانى بالمصفوفة نكتب :


Total[1] = 25;







بالمثل , يمكن قراءة محتويات المصفوفة بتحديد اسم المصفوفة والدليل . على سبيل المثال , لنسخ العنصر الثالث بالمصفوفة إلى متغير يسمى Temp نكتب :



Temp = Total[2];






يمكن تهيئة (إعدادات البدء) محتويات المصفوفة أثناء تعريف المصفوفة عن طريق تخصيص تتابع من القيم التى يفصل بينها "فاصلة" للمصفوفة . المثال التالى يمثل تعريف المصفوفة months وبها 12 عنصر و العناصر هى months[0] = 31, months[1] = 28, وهكذا :



unsigned char months[12] ={31,28,31,30,31,30,31,31,30,31,30,31};



نفس المصفوفة يمكن تعريفها أيضا بدون تحديد حجمها :


unsigned char months[ ] = {31,28,31,30,31,30,31,31,30,31,30,31};






الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 06-10-2011, 02:18 PM المشاركة 136   
افتراضي


يمكن تعريف مصفوفات الحروف بنفس الطريقة . المثال التالى يمثل تعريف مصفوفة تسمى Hex_Letters بها 6 عناصر :


unsigned char Hex_Letters[ ] = {‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’};







السلاسل النصية strings هى مصفوفات تنتهى بالصفر . يمكن الإعلان عن السلاسل النصية إما بوضع السلسلة النصية بين أواس تنصيص مزدوجة أو بتحديد كل حرف من المصفوفة بوضعه بين علامتى تنصيص مفردة ثم إنهاء السلسلة النصية بحرف الصفر . المثال التالى يبين تعريفى السلسلة النصية وهما متطابقين وكل منهما يحتل 6 مواقع بالذاكرة :



unsigned char Mystring[ ] = “COMP”;

and

unsigned char Mystring[ ] = {‘C’, ‘O’, ‘M’, ‘P’, ‘\0’};







فى البرمجة بلغة السى يمكننا إيضا تعريف مصفوفات ذات أبعاد متعددة . المصفوفات ذات البعد الواحد عادة تسمى "متجه" vector والمصفوفات ذات البعدين تسمى "ماتريكس" matrix . يتم تعريف المصفوفة ذات البعدين عن طريق تحديد نوع بيانات المصفوفة واسم المصفوفة وحجم "كل بعد" . فى المثال التالى يتم إنشاء مصفوفة ذات بعدين تسمى P بها "ثلاثة صفوف" و "أربعة أعمدة" . جميعها ينتج مصفوفة بها 12 عنصر . العنصر الأول بالمصفوفة هو P[0][0] والعنصر الأخير هو P[2][3] . الشكل التالى يبين بناء هذه المصفوفة :




يمكن تحديد عناصر المصفوفة متعددة الأبعاد أثناء تعريف المصفوفة . المثال التالى يبين مصفوفة ذات بعدين تسمى Q بها 2 صف و 2 عامود , العناصر القطرية محددة بالقيمة 1set والعناصر الغير قطرية بالصفر clear .

unsigned char Q[2][2] = { {1,0}, {0,1} };





3-1-15 المؤشرات Pointers



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