أساسيات برمجة السلسلة PIC16 بلغة السى مع المترجم CCS C :
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS - C
صفحة 1 من اصل 1
أساسيات برمجة السلسلة PIC16 بلغة السى مع المترجم CCS C :
أساسيات برمجة السلسلة PIC16 بلغة السى مع المترجم CCS C :
• المتغيرات Variables .
• الحلقة Looping .
• القرارات Decisions .
الغرض من البرنامج هو قراءة البيانات من مداخل التحكم ، وعلاجها ، وتشغيل المخارج كما هو مطلوب . المدخلات من المنافذ المتوازية والتسلسلية والتماثلية يتم الاحتفاظ بها فى سجلات للتخزين المؤقت والمعالجة ، ويتم إخراج النتائج فى وقت لاحق ، كبيانات أو إشارات . برنامج معالجة البيانات عادة ما يحتوى على حلقات تكرار وتفرع مشروط ، والذى يعتمد على المدخلات أو القيم المحسوبة .
المتغيرات Variables :
تحتاج معظم البرامج إلى معالجة البيانات بطريقة ما ، وهناك حاجة لما يسمى المتغيرات لحفظ قيم البيانات . اسم المتغير هو لافتة (تسمية) label تعلق على موقع ذاكرة حيث يتم تخزين قيمة المتغير . عند العمل فى لغة التجميع (الأسمبلى) ، تعمل تسمية السجل كاسم للمتغير ويجب تعيينه (تخصيصه) صراحة . فى لغة السى ، يتم تعيين (تخصيص) تسمية المتغير تلقائيا إلى الموقع أو المواقع التالية المتاحة ( العديد من أنواع المتغير تحتاج إلى أكثر من بايت واحد من الذاكرة) . يجب أن يعلن اسم ونوع المتغير فى بداية كتلة البرنامج ، حتى يمكن للمترجم تخصيص مجموعة مماثلة من المواقع . يفترض أن قيم المتغيرات تكون بالنظام العشرى بشكل افتراضى ، ولذلك إذا تم إعطاء قيمة بالنظام الستة عشر فى كود المصدر ، يجب أن تكون مكتوبة بالبادئة (0x) ، لذلك فإن 0xFF يمثل 255 عشرى ، على سبيل المثال .
فى البرنامج أدناه ، يتم استخدام متغير يسمى (x) . التسميات الأطول هى الأفضل فى بعض الأحيان ، مثل "output_value" ولكن لايسمح بالمسافات الفارغة . يمكن فقط استخدام الأحرف الأبجدية
(a–z, A–Z, 0–9) والشرطة السفلية ، بدلا من المسافة الفارغة .
فى الوضع الافتراضى يكون المترجم CCS غير حساس لحالة الحرف ، لذلك فإن الحرف 'a' هو نفسه الحرف 'A' ( على الرغم من أن كود أسكى يكون مختلف) . يجب عدم استخدام عدد محدود من الكلمات الخاصة بلغة السى , مثل main و include ، كاسماء للمتغيرات .
المتغير (x) هو عدد صحيح integer 8-bit ، يقع بين قيم الأعداد العشرية 0-255 . يمكن رؤية القيمة بالنظام الثنائى عندما يتم إخراجها على منفذ 8 بت .
عموما ، يتم تخزين الأعداد الصحيحة (int) فى لغة السى كقيم 16 بت ، ولكن لغة السى للميكروكونترولر 8 بت تستخدم فى الوضع الافتراضى شكل عدد صحيح 8 بت . فى البرنامج أعلاه ، يتم تخصيص (تعيين) قيمة ابتدائية للمتغير (القيمة 99) ، والذى بعد ذلك فى دالة الإخراج . النقطة هنا هى أن قيمة المتغير يمكن الآن تعديلها دون الحاجة إلى تغيير استدعاء دالة الخرج نفسها .
فى البرنامج ، تم إعلان المتغير (x) 8 بت ، وتخصيص القيمة (99) له باستخدام عامل التساوى. ومن ثم تم إخراجه إلى المنفذ Port D باستخدام دالة الإخراج القياسية .
رابط الملف :
http://www.mediafire.com/download/98a33ww5fb7u5i6/Lesson1-EX2.zip
• المتغيرات Variables .
• الحلقة Looping .
• القرارات Decisions .
الغرض من البرنامج هو قراءة البيانات من مداخل التحكم ، وعلاجها ، وتشغيل المخارج كما هو مطلوب . المدخلات من المنافذ المتوازية والتسلسلية والتماثلية يتم الاحتفاظ بها فى سجلات للتخزين المؤقت والمعالجة ، ويتم إخراج النتائج فى وقت لاحق ، كبيانات أو إشارات . برنامج معالجة البيانات عادة ما يحتوى على حلقات تكرار وتفرع مشروط ، والذى يعتمد على المدخلات أو القيم المحسوبة .
المتغيرات Variables :
تحتاج معظم البرامج إلى معالجة البيانات بطريقة ما ، وهناك حاجة لما يسمى المتغيرات لحفظ قيم البيانات . اسم المتغير هو لافتة (تسمية) label تعلق على موقع ذاكرة حيث يتم تخزين قيمة المتغير . عند العمل فى لغة التجميع (الأسمبلى) ، تعمل تسمية السجل كاسم للمتغير ويجب تعيينه (تخصيصه) صراحة . فى لغة السى ، يتم تعيين (تخصيص) تسمية المتغير تلقائيا إلى الموقع أو المواقع التالية المتاحة ( العديد من أنواع المتغير تحتاج إلى أكثر من بايت واحد من الذاكرة) . يجب أن يعلن اسم ونوع المتغير فى بداية كتلة البرنامج ، حتى يمكن للمترجم تخصيص مجموعة مماثلة من المواقع . يفترض أن قيم المتغيرات تكون بالنظام العشرى بشكل افتراضى ، ولذلك إذا تم إعطاء قيمة بالنظام الستة عشر فى كود المصدر ، يجب أن تكون مكتوبة بالبادئة (0x) ، لذلك فإن 0xFF يمثل 255 عشرى ، على سبيل المثال .
فى البرنامج أدناه ، يتم استخدام متغير يسمى (x) . التسميات الأطول هى الأفضل فى بعض الأحيان ، مثل "output_value" ولكن لايسمح بالمسافات الفارغة . يمكن فقط استخدام الأحرف الأبجدية
(a–z, A–Z, 0–9) والشرطة السفلية ، بدلا من المسافة الفارغة .
فى الوضع الافتراضى يكون المترجم CCS غير حساس لحالة الحرف ، لذلك فإن الحرف 'a' هو نفسه الحرف 'A' ( على الرغم من أن كود أسكى يكون مختلف) . يجب عدم استخدام عدد محدود من الكلمات الخاصة بلغة السى , مثل main و include ، كاسماء للمتغيرات .
- الكود:
/*Lesson1-EX2
Program function: Outputs an 8-bit variable
*************************************************/
#include <16F877A.h>
void main()
{
Int8 x; // Declare variable and type
x = 99; // Assign variable value
While(true)
{
output_D(x) ; // Display the value in binary
}
}
المتغير (x) هو عدد صحيح integer 8-bit ، يقع بين قيم الأعداد العشرية 0-255 . يمكن رؤية القيمة بالنظام الثنائى عندما يتم إخراجها على منفذ 8 بت .
عموما ، يتم تخزين الأعداد الصحيحة (int) فى لغة السى كقيم 16 بت ، ولكن لغة السى للميكروكونترولر 8 بت تستخدم فى الوضع الافتراضى شكل عدد صحيح 8 بت . فى البرنامج أعلاه ، يتم تخصيص (تعيين) قيمة ابتدائية للمتغير (القيمة 99) ، والذى بعد ذلك فى دالة الإخراج . النقطة هنا هى أن قيمة المتغير يمكن الآن تعديلها دون الحاجة إلى تغيير استدعاء دالة الخرج نفسها .
فى البرنامج ، تم إعلان المتغير (x) 8 بت ، وتخصيص القيمة (99) له باستخدام عامل التساوى. ومن ثم تم إخراجه إلى المنفذ Port D باستخدام دالة الإخراج القياسية .
رابط الملف :
http://www.mediafire.com/download/98a33ww5fb7u5i6/Lesson1-EX2.zip
الحلقات Looping
الحلقات Looping
تحتاج معظم تطبيقات الوقت الحقيقى إلى التنفيذ المستمر حتى يتم إيقاف المعالج أو إعادة تشغيله reset . لذلك ، فإن البرنامج بشكل عام يقفز إلى الوراء عند النهاية لتكرار حلقة التحكم الرئيسية . فى لغة السى يمكن تنفيذ باستخدام حلقة "while" كما هو مبين أعلاه .
شرط استمرار تكرار كتلة الكود بين أقواس while المجعدة "{}" يتم حصرها بين الأقواس "( )" التى تأتى بعد الكلمة الخاصة while"" . يتم تنفيذ هذه الكتلة إذا كانت قيمة ، أو نتيجة التعبير ، فى الأقواس "( )" ليست صفرا . فى هذه الحالة ، تكون بواحد , مما يعنى أن الشرط صحيح true دائما ، وتتكرر الحلقة إلى ما لا نهاية .
البرنامج التالى يمثل بشكل مبسط الهيكل العام للتطبيقات المدمجة ، حيث مرحلة التهيئة initialization تكون متبوعة بحلقة تحكم لتكرار لا نهاية له . داخل الحلقة ، يتم تزايد قيمة المتغير "x" ( باستخدام عامل التزايد x++) . . وبالتالى ، عند تنفيذ البرنامج ، يظهر الخرج لعد تصاعدى فى النظام الثنائى . عندما يصل العد للحد الأقصى لقيمة 8 بت (11111111 = 255) ، فإن العد يدور وينتقل إلى الصفر ليبدأ من جديد .
ملحوظة :
عند تجربة البرنامج سوف تلاحظ أنه يعمل بسرعة ولن تلاحظه ، لكى تستطيع ملاحظته يجب أن نستخدم دالة تأخير زمنى وهو ما سوف نتعرض له لاحقا .
رابط الملف :
http://www.mediafire.com/download/x31m8uu7j56lqq7/Lesson1-EX3.zip
تحتاج معظم تطبيقات الوقت الحقيقى إلى التنفيذ المستمر حتى يتم إيقاف المعالج أو إعادة تشغيله reset . لذلك ، فإن البرنامج بشكل عام يقفز إلى الوراء عند النهاية لتكرار حلقة التحكم الرئيسية . فى لغة السى يمكن تنفيذ باستخدام حلقة "while" كما هو مبين أعلاه .
شرط استمرار تكرار كتلة الكود بين أقواس while المجعدة "{}" يتم حصرها بين الأقواس "( )" التى تأتى بعد الكلمة الخاصة while"" . يتم تنفيذ هذه الكتلة إذا كانت قيمة ، أو نتيجة التعبير ، فى الأقواس "( )" ليست صفرا . فى هذه الحالة ، تكون بواحد , مما يعنى أن الشرط صحيح true دائما ، وتتكرر الحلقة إلى ما لا نهاية .
البرنامج التالى يمثل بشكل مبسط الهيكل العام للتطبيقات المدمجة ، حيث مرحلة التهيئة initialization تكون متبوعة بحلقة تحكم لتكرار لا نهاية له . داخل الحلقة ، يتم تزايد قيمة المتغير "x" ( باستخدام عامل التزايد x++) . . وبالتالى ، عند تنفيذ البرنامج ، يظهر الخرج لعد تصاعدى فى النظام الثنائى . عندما يصل العد للحد الأقصى لقيمة 8 بت (11111111 = 255) ، فإن العد يدور وينتقل إلى الصفر ليبدأ من جديد .
- الكود:
//Lesson1-EX3 Endless Loop
// Program function: Outputs variable count
#include <16F877A.h>
void main()
{
int x; // Declare variable
while(TRUE) // Loop endlessly
{
output_D(x); // Display value
x ++ ; // Increment value
}
}
ملحوظة :
عند تجربة البرنامج سوف تلاحظ أنه يعمل بسرعة ولن تلاحظه ، لكى تستطيع ملاحظته يجب أن نستخدم دالة تأخير زمنى وهو ما سوف نتعرض له لاحقا .
رابط الملف :
http://www.mediafire.com/download/x31m8uu7j56lqq7/Lesson1-EX3.zip
مواضيع مماثلة
» البداية وبرمجة السلسلة PIC16 بلغة السى :
» برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS C : المفاهيم الأساسية للغة السى :
» برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS C برنامجك الأول :
» ترجمة الفصل الأول والفصل الثانى من كتاب برمجة الميكروكونترولر PIC بلغة السى مع المترجم ميكروسى برو
» التدريب الأساسى : عملية المسح والعرض لحرف واحد غير متحرك :
» برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS C : المفاهيم الأساسية للغة السى :
» برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS C برنامجك الأول :
» ترجمة الفصل الأول والفصل الثانى من كتاب برمجة الميكروكونترولر PIC بلغة السى مع المترجم ميكروسى برو
» التدريب الأساسى : عملية المسح والعرض لحرف واحد غير متحرك :
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS - C
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى