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

   

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



فهم بناء الدليل JALPack :
فى البداية إلقة نظرة على محتويات الدليل JALPack بالكومبيوتر حيث قمت بالتثبيت :




المجلد : المترجم compiler
يحفظ برمجيات المترجم لتحويل كود لغة JAL إلى كود HEX لتحميله على الميكروكونترولر .
المجلد : المحرر jaledit
محرر نصوص لغة JAL حيث سوف تكتب كود برنامجك .
المجلد : المكتبة lib
يحتوى على مجموعة من المكتبات ضرورية لجعل الأشياء تعمل .
المجلد : عينة sample
يحتوى على أمثلة للعمل .
· قم بإنشاء مجلد باسم workspace , وفى هذا المجلد قم بإنشاء مجلد باسم blink_a_led ( على سبيل المثال يكون المسار C: \ JALPack \workspace\blink_a_led\ .

اعلانات

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


إعداد المحرر وملف المشروع ذات الامتداد .jal :

· تشغيل برمجيات المحرر JALEdit .
· بدء وثيقة جديدة وحفظها فى المسار C: \ JALPack \workspace\blink_a_led\ بالاسم blink_a_led.jal .




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

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


كتابة التعليمات البرمجية (الكود) :
سوف نكتب برنامج لوميض ليد . الكود بكامله ذات نص مميز بألوان محددة .
1- الجزء الأول : (بلوك) العنوان والكاتب Title & Author Block :
نبدأ بكتابة بلوك العنوان حتى يتعرف أى شخص على من قام بإنشائه .



كود:
-- ------------------------------------------------------ -- Title: Blink-a-led of the Microchip pic16f877a -- -- Author: Rob Hamerling, Copyright (c) 2008..2009, all rights reserved. -- -- Adapted-by: -- -- Compiler: 2.4l -- -- This file is part of jallib (http://jallib.googlecode.com) -- Released under the BSD license (http://www.opensource.org/licenses/bsdlicense.php) -- -- Description: -- Sample blink-a-led program for Microchip PIC16f877a. -- -- Sources: -- -- Notes: -- - File creation date/time: 14 Oct 2009 20:24:20. -- -- ------------------------------------------------------
يمكنك رؤية "شرطتان "-" للإعلان عن "تعليق" comment حتى يتم تجاهله من قبل المترجم . أيضا يمكن استخدام الفاصلة المنقوطة “;” للتعليقات .
ونحن نمضى , سوف نقوم بالتعليق على طول البرنامج حتى يصبح من السهل علينا قراءة برنامجنا .

تذكر :
التعليقات Comments :
الأسطر التى تتضمن تعليقات يسبقها "شرطتين" أو "فاصلة منقوطة" . يجب عمل ذلك فى كل سطر حيث لا يوجد تعبيير لمجموعة من التعليقات "بلوك تعليقات".
الصيغة :
;this is a comment
-- and this too
يستخدم سطر التعليق لتوضيح السبب من البرنامج أو سبب فعل الأشياء وطريقة عملها . التعليق مفيد جدا فى المستقبل كمرجع أو عندما تريد مشاركة الأخرين بالبرامج .
من المفضل عمليا بيان إصدار لغة JAL فى أو سطر بالبرنامج وهذا يزيل الكثير من التساؤلات .
التعليقات الجيدة تكون حول سبب استخدام عبارة ما . إذا استخدمت مكتبة يجب أن تستخدم أسطر تعليقات لشرح تفاصيل سبب وطريقة استخدام المكتبة . المكتبات بدون هذه التعليقات تكون غير مفيدة على الإطلاق .


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



2- الجزء الثانى : إختيار نوع الميكروكونترولر PIC :
فى الكود التالى يتم اختيار الميكروكونترولر 16F877A ( يمكنك استخدام أى نوع آخر) :

كود:
include 16f877a -- target PICmicro
تذكر :
نموذج برنامج لغة JAL يجب أن يبدأ باستدعاء المكتبة التى تتضمن تفاصيل الميكروكونترولر PIC المستهدف بكتابة البرنامج عن طريق التعليمة include 16f877a -- target PICmicro


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


3- الجزء الثالث :إختيار سرعة (تردد) الكريستال :
فى الكود التالى يتم استخدام كريستال بتردد 20 MHz :

4- الجزء الرابع : تهيئة إعدادات الميكروكونترولر PIC
فى الكود التالى بعض الإعدادات الداخلية للميكروكونترولر PIC , والتى تسمى المصهرات fuses .
تحديد (ضبط) المذبذب OSC ليكون "سرعة عالية" HS يخبر الميكروكونترولر بنوع المصدر الخارجى للساعة (مذبذب الكريستال) .
يجب أن تقوم بإيقاف تمكين disable الأطراف التناظرية بالتعليمة enable_digital_io() " تفعيل المداخل / المخارج الرقمية" .
لا داعى للقلق بشأن التحديدات الأخرى .
كود:
-- This program assumes a 20 MHz resonator or crystal -- is connected to pins OSC1 and OSC2. pragma target clock 20_000_000 -- oscillator frequency -- configuration memory settings (fuses) pragma target OSC HS -- HS crystal or resonator pragma target WDT disabled -- no watchdog pragma target LVP disabled -- no Low Voltage Programming --
تذكر :
الأمر Pragma :
الأمر Pragma خاص بالمترجم . هذا الأمر قوى جدا ولكنه معقد وسوف نذكر استخداماته المتعددة كل فى حينه .
أمثلة :





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


1- إختيار طرف خرج Choose an output pin
دعونا نختار طرف خرج للتحكم فى الليد . كما ترى من الدائرة الكهربية , الييد متصل بالطرف رقم #2 .




كما ترة الطرف #2 هو الطرف RA0/ANO . اسم الطرف هو RA0 , بينما AN0 هو اسم آخر لنفس الطرف ( يستخدم كمدخل تناظرى كما سنرى فيما بعد ) . فى لغة JAL يعبر عن الطرفRA0بالصيغة pin_A0 .
الطرف RA0 هو طرف دخل/خرج رقمى من النوع TTL وليس من النوع "خرج مصب مفتوح". خرج المصب المفتوح ( مثل الطرف RA4 ) يحتاج لمقاومة جذب لأعلى توصل بين الطرف والجهد الموجب V+ .




الآن نكتب كود الطرف A0 . سوف نستخدم "اسم مستعار" “alias” فقط حتى يتثنى لنا فى المستقبل الإشارة إلى الطرف (A0) بالاسم المستعار “led” . بهذه الطريقة لم نعد بحاجة لتذكر اسم الطرف (فيما عدا سجل الاتجاه فى السطر التالى من الكود ) .

كود:
-- -- You may want to change the selected pin: alias led is pin_A0


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


6- الجزء السادس : تهيئة (إعداد) الطرف كمدخل أو كمخرج "إتجاه البيانات" :
الآن يجب علينا أن نخبر الميكروكونترولر PIC عما إذا كان هذا الطرف كمدخل أو كمخرج . تحديد الاتجاه دائما تكون بالصيغة (pin_ + pinname_ + direction) " , وحيث أننا نكتب بيانات إلى المنفذ بغرض توصيل الليد فيكون الطرف مخرج وتكون الصيغة :



كود:
pin_A0_direction = output

كما يمكننا عمل اسم مستعار alias بالصيغة :
alias led_direction is pin_A0_direction
عندئذ يمكننا كتابة الكود :

led_direction =output
بهذه الطريقة يمكننا تغييره من مخرج إلى مدخل فى منتصف البرنامج بدون معرفة اسم الطرف . لكن فى حالتنا هذه سوف نستخدمه مرة واحدة لذلك فلا حاجة لعمل اسم مستعار .

تذكر :
الأسماء المستعارة Alias names :

عندما يكون للطرف الواحد عدد من الوظائف تبعا لسجلات التحكم أو أعدادات بتات التهيئة , يتم إعلان أسماء مستعارة للوصول إلى الطرف باسم يعبر عن وظيفته .


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


1- الجزء السابع : كتابة البرنامج الرئيسى
الآن لدينا ليد تحت سيطرتنا , دعنا نخبرها عما تفعله .
نريد أن تستمر الليد فى فعل ما نريده بصفة مستمرة "إلى الأبد" forever لذلك سوف نقوم بعمل حلقة غير منتهية :
من المفضل عمليا وضع مسافة بادئة قبل كل سطر داخل الحلقة من أجل تحسين قابلية القراءة . ثلاثة فراغات قبل كل سطر هى المعيار للمكتبة Jallib .
فى هذه الحلقة سوف :
· نخبر الليد بالقيام بالتوصيل on .
· الآن تأخير (إنتظار) لربع ثانية (250ms) حتى يتثنى لنا رؤية الليد وهى فى حالة التوصيل :





· ثم فصل الليد off :



· ثم إنتظار آخر قبل العودة للتوصيل مرة أخرى :

· غلق (إنهاء) الحلقة , عندما يصل الميكروكونترولر لهذا الموقع يعود مرة أخرى إلى بداية الحلقة :
وهذا كل ما لدينا فى البرنامج . إحفظ الملف , وسوف يكون بالشكل التالى :



كود:
-- ------------------------------------------------------
-- Title: Blink-a-led of the Microchip pic16f877a
--
-- Author: Rob Hamerling, Copyright (c) 2008..2009, all rights reserved.
--
-- Adapted-by:
--
-- Compiler: 2.4l
--
-- This file is part of jallib (http://jallib.googlecode.com)
-- Released under the BSD license (http://www.opensource.org/licenses/bsdlicense.php)
--
-- Description:
-- Sample blink-a-led program for Microchip PIC16f877a.
--
-- Sources:
--
-- Notes:
-- - File creation date/time: 14 Oct 2009 20:24:20.
--
-- ------------------------------------------------------
include 16f877a -- target PICmicro
-- This program assumes a 20 MHz resonator or crystal
-- is connected to pins OSC1 and OSC2.
pragma target clock 20_000_000 -- oscillator frequency
-- configuration memory settings (fuses)
pragma target OSC HS -- HS crystal or resonator
pragma target WDT disabled -- no watchdog
pragma target LVP disabled -- no Low Voltage Programming
--
enable_digital_io() -- disable analog I/O (if any)
--
--
-- You may want to change the selected pin:
alias led is pin_A0
pin_A0_direction = output
forever loop
led = ON
_usec_delay(250000)
led = OFF
_usec_delay(250000)
end loop
--



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