جلسه 31
رباتیک والکترونیک روبواچ پیRoboHp
رباتیک والکترونیک
جمعه 27 بهمن 1391 :: 19:43 :: نويسنده : robohp

به نام خدا

با سلام خدمت همه‌ي دوستاي خوبم. اميدوارم خوب و خوش و سلامت باشيد.

اين جلسه قراره در ابتدا نحوه‌ي تنظيم CodeVision را براي پروگرامري كه در جلسه‌ي پيش ساختيم مطرح كنيم و بعد از اون، كمي هم آموزش زبان C را دنبال كنيم.

در جلسات پيش با بخش پروگرامر(Programmer) در CodeVision آشنا شديم. براي استفاده از نرم افزار پروگرامر، ابتدا بايد آن را با توجه به سخت‌افزاري كه براي پروگرام كردن در اختيار داريم تنظيم كنيم. براي اين كار CodeVision را باز كنيد و از منوي بالا گزينه‌ي "Setting" را انتخاب كنيد. سپس گزينه‌ي "Programmer" را انتخاب كنيد. پنجره‌اي به شكل زير باز مي‌شود.



به نام خدا

با سلام خدمت همه‌ي دوستاي خوبم. اميدوارم خوب و خوش و سلامت باشيد.

اين جلسه قراره در ابتدا نحوه‌ي تنظيم CodeVision را براي پروگرامري كه در جلسه‌ي پيش ساختيم مطرح كنيم و بعد از اون، كمي هم آموزش زبان C را دنبال كنيم.

در جلسات پيش با بخش پروگرامر(Programmer) در CodeVision آشنا شديم. براي استفاده از نرم افزار پروگرامر، ابتدا بايد آن را با توجه به سخت‌افزاري كه براي پروگرام كردن در اختيار داريم تنظيم كنيم. براي اين كار CodeVision را باز كنيد و از منوي بالا گزينه‌ي "Setting" را انتخاب كنيد. سپس گزينه‌ي "Programmer" را انتخاب كنيد. پنجره‌اي به شكل زير باز مي‌شود.



در اين پنجره بايد نوع سخت افزار پروگرامري را كه در اختيار داريد را انتخاب كنيد.

پروگرامري كه ما جلسه‌ي پيش آموزش داديم همين STK200+/300 است كه معمولاً به صورت پيش فرض انتخاب شده است.

قسمت Delay Multiplier هم نياز به تنظيم خاصي ندارد. با استفاده از اين قسمت مي‌توان كمي وقفه‌ در عمليات پروگرام شدن به وجود آورد كه اين كار ممكن است برخي مشكلات احتمالي را در هنگام پروگرام كردن برطرف كند.

در اين قسمت نياز به تنظيم بخش ديگري نيست و پروگرامر آماده‌ي استفاده است.

تا به اينجا ما مقدمات كار با ميكروكنترلر‌هاي خانواده‌ي AVR را ياد گرفتيم و الان مي‌تونيم در حد آماتور از ميكروكنترلر در مدار‌هايي كه طراحي مي‌كنيم، استفاده كنيم.

اما كار با ميكروكنترلر‌هاي AVR به همين جا ختم نمي‌شود، از اينجا به بعد ما سعي مي‌كنيم مبحث ميكروكنترلر را به صورت حرفه‌اي تر دنبال كنيم.

در ادامه‌ي اين جلسه برمي‌گرديم به بحث برنامه نويسي در زبان C تا كمي بيشتر با اين زبان آشنا شويم.

يك نكته را بايد قبل از شروع بحث متذكر شوم، در ميكروكنترلر، همه‌ي ورودي‌ها منطقي مي‌شوند. يعني اگر سطح ولتاژ پايه‌ي ورودي (كه مثلاً يك سنسور نوري به آن متصل شده است) بين 0 تا 2.5 ولت باشد، آي‌سي آن را 0 منطقي در نظر مي‌گيرد و اگر بين 2.5 تا 5 ولت باشد، آن را 1 منطقي در نظر مي‌گيرد.


ساختارهاي كنترلي

در حالت عادي، دستورات داخل برنامه‌ي ما، از اولين دستور تا آخرين دستور به ترتيب اجرا مي‌شوند. اما اگر بخواهيم بعضي از دستورات فقط تحت شرايط خاصي اجرا شوند يا مثلاً بخش‌هاي ديگري از برنامه چندين بار تكرار شوند، بايد بتوانيم روند اجراي دستورات برنامه را كنترل كنيم. براي اين منظور دستوراتي در زبان C وجود دارند كه به آن‌ها دستورات يا ساختار‌هاي كنترلي مي‌گوييم.
اولين ساختار كنترلي كه با آن آشنا مي‌شويم دستور if است.


if _ else:


به كمك اين دستور، ما مي‌توانيم براي اجراي هر بخش از برنامه شرط يا شروطي بگذاريم كه اگر اين شروط برقرار نباشند، ميكروكنترلربدون اجراي آن دستورات از روي آن‌ها رد شود و روند اجراي برنامه به بعد از اين دستورات منتقل شود. اين دستور در برنامه به شكل زير استفاده مي‌شود.

if (شرط يا شروط)

    {

        دستوراتي كه فقط اگر شروط بالا برقرار باشند اجرا مي‌شوند

    }

else

    {

        دستوراتي كه فقط اگر شروط بالا برقرار نباشند اجرا مي‌شوند

    }

 نكات مهم در مورد اين ساختار:

1- بعد از هر كدام از دستورات در داخل if و else بايد حتماً ";" گذاشته شود.

2- دقت كنيد كه بعد از خود if و else نيازي به ";" نيست.

3- اگر بخواهيم چند شرط براي if بگذاريم ، به نحوي كه فقط اگر همه‌ي شروط برقرار بودند دستورات اجرا شوند، بايد به شكل زير عمل كنيم:

if (شرط1 && شرط2 && شرط3)

4- اگر بخواهيم چند شرط براي if بگذاريم ، به نحوي اگر هركدام ازشروط برقرار بودند، دستورات مربوطه اجرا شوند بايد به شكل زير عمل كنيم:

if (شرط1 || شرط2 || شرط 3 )

5- اگر بخواهيم تساوي 2 عبارت، يا يك عبارت با يك مقدار را چك كنيم به شكل زير عمل مي كنيم:

if (a == b && f == 20)

اين عبارت 2 شرط دارد كه اگر متغير a برابر با متغير b باشد و اگر متغير f هم برابر با مقدار 20 باشد، دستورات مربوط به if اجرا مي‌شوند.

6- اگر بخواهيم مقدار خروجي مثلاً يك سنسور نوري را چك كنيم كه 1 منطقي است يا نه، به صورت زير عمل مي‌كنيم:

if ( PORTB.1== 1 )
يا
if (PORTB.1 !== 0 )

اين 2 عبارت دقيقاً يك كار را انجام مي‌دهند. همانطور كه مي‌بينيد، "==!" به معناي عدم  تساوي است.در حالت كلي "!"در اين زبان به معناي نقيض است.

منتظر سولات و نظرات دوستان عزيزم هستم

تا جلسه‌ي آينده خدا نگه دار

 



درباره سایت


به فروشگاه رباتیک والکترونیک RoboHpخوش آمدید
پيوندها
نويسندگان
💬 نظرات کاربران
💬ثبت نام کاربران
💬ورود کاربران