دستورات تاخیری و تعریف زیر برنامه به زبان C در میکرو ARM

دستورات تاخیری و تعریف زیر برنامه

گاهی موقع لازم است برنامه برای مدت زمانی اجرا نشود، برای این کار از دستورات تاخیر استفاده می شود. در نرم افزار Keil تابع برای تاخیر (در برنامه نویسی) وجود ندارد. و شما باید برای انجام تاخیر CPU را به کار دیگری مشغول کنید. یکی از این کارها شمردن اعداد می باشد! پس با ما همراه باشید تا در این پست از مبحث آموزش برنامه نویسی و راه اندازی میکروکنترلرهای ARM نحوه ایجاد زمان های دلخواه برای تاخیر و چگونگی ایجاد زیر برنامه و نحوه پرش به آن ها را به زبان C در میکروکنترلرهای ARM را به صورت کامل فراگیرید.

دستورات تاخیری و تعریف زیر برنامه به زبان C در میکرو ARM

ایجاد تاخیر در برنامه میکروکنترلرهای ARM

ابتدا طبق آموزش های قبلی برنامه زیر را توسط نرم افزار Keil شبیه سازی کنید

مشاهده می کنید که در هر نیم میلی ثانیه پایه b19 روشن و خاموش می شود. در این برنامه برای ایجاد تاخیر از فراخوانی تابع استفاده شده است.

تحلیل برنامه

توسط دستور زیر در اولین خط برنامه میکروکنترلر معرفی شده است. میکرو مورد استفاده ما at91sam7x256 می باشد که قبلا در مورد نحوه ی انتخاب میکرو توضیح داده شد.

در خط بعدی توسط دستور زیر، فایل هدر (کتابخانه) فراخوانی می شود.

در خط سوم با استفاده از دستور زیر مقداری از فضای حافظه برای توابع فراخوانی رزرو شده است.

با استفاده از دستور زیر در خط چهارم برنامه یک متغیر از نوع int معرفی شده است. (متغیر n می تواند از 0 تا 2 بتوان 32 یعنی 4294967296 تغییر کند.)

به کمک دستور زیر در خط پنجم یک حلقه اصلی ایجاد می کنیم و شروع حلقه اصلی برنامه می باشد.

در خط ششم به کمک دستور زیر پایه شماره 19 از پورت B میکروکنترلر at91sam7x256 از خانواده میکروکنترلرهای ARM را به عنوان خروجی پیکربندی می کنیم.

در خط هفتم به کمک دستور زیر پایه شماره 19 از پورت B میکروکنترلر at91sam7x256 از خانواده میکروکنترلرهای ARM را در سطح منطقی صفر 0 قرار می دهیم.

در خط هشتم تابع تاخیر wait فراخوانی می شود با رسیدن CPU به این خط به میکروکنترلر at91sam7x256 به تابع زیر در خط دوازدهم برنامه پرش می کند.

در زیر برنامه wait یک حلقه for وجود دارد در این حلقه مقدار اولیه متغیر n برابر 0 در نظر گرفته شده است. با دستور ++n مدام به متغیر n یک واحد اضافه می شود. هنگامی که n به 1843200 رسید CPU به خط بعد از شرط پرش می کند در آنجا یک آکولاد وجود دارد که CPU را به حلقه اصلی بر می گرداند و CPU برنامه را از خط بعد از wait ادامه می دهد.

سپس میکروکنترلر در خط نهم برنامه توسط دستور زیر پایه شماره 19 از پورت B میکروکنترلر at91sam7x256 از خانواده میکروکنترلرهای ARM را در سطح منطقی یک 1 قرار می دهد.

در خط نهم دوباره تابع تاخیر wait فراخوانی می شود با رسیدن CPU به این خط به میکروکنترلر at91sam7x256 به تابع زیر در خط دوازدهم برنامه پرش می کند.

همانند دفعه قبل مقدار اولیه متغیر n برابر 0 در نظر می شود. با دستور ++n مدام به متغیر n یک واحد اضافه می شود. هنگامی که n به 1843200 رسید CPU به خط بعد از شرط پرش می کند در آنجا یک آکولاد وجود دارد که CPU را به حلقه اصلی بر می گرداند و CPU برنامه را از خط بعد از wait ادامه می دهد.

با رسیدن CPU به آکولاد { در خظ آخر برنامه، مجدادا برنامه دوباره از اول اجرا می شود و کلیه اعمال بالا از ابتدا انجام می شود.

نتیجه گیری

برای ایجاد تاخیر در برنامه شما باید یک تابع ایجاد کنید تا در هنگام تاخیر فراخوانی شود. برای ایجاد تابع باید ایتدا آن را توسط دستور زیر معرفی کنید:

wait (نام تابع) : در قسمت نام تابع شما باید یک نام مناسب بنویسید که در برنامه تابع با همین نام فراخوانی می شود. مثلا در این برنامه ما نام تابع زیر برنامه رو wait در نظر گرفته ایم در نتیجه هر گاه بخواهیم زیر برنامه wait را فراخوانی کنیم از نام wait استفاده می کنیم.

(void) یا نوع فضا : در قسمت نوع فضا، نوع ذخیره سازی تابع مشخص می شود شما می توانید از عناوین void (فضای خالی) یا جای خالی استفاده کنید.

با این حساب می توان گفت قالب کلی یک برنامه در زبان C به شکل زیر خواهد بود.

:: معرفی چیپ

:: فراخوانی فایل های هدر یا کتابخانه

:: معرفی متغیرها

:: معرفی زیر برنامه (توابعی که قرار است در برنامه فراخوانی شوند)

:: تابع اصلی برنامه

:: ورودی یا خروجی قرار دادن پورت ها

:: شروع حلقه اصلی

:: برنامه اصلی

:: فراخوانی توابع یا همان زیر برنامه

:: پایان حلقه

:: پایان تابع اصلی برنامه

:: نام تابعی که قرار است فراخوانی شود

:: شروع حلقه ی تابع فراخوانی شده

:: برنامه ای که فراخوانی می شود

:: پایان حلقه ی فراخوانی شده (با رسیدن برنامه به این خط به برنامه اصلی پرش می شود)

نکته : مقدار زمانی که می خواهید توسط شمارش ایجاد می شود از رابطه ی زیر به دست می آید:

X مقدار رقمی است که در حلقه ی for شمرده می شود و f مقدار فرکانس کریستال بر حسب هرتز می باشد.

مثال :

برنامه ای بنویسید که پایه b.19 میکروکنترلر at91sam7x256 از خانواده میکروکنترلرهای ARM را به مدت 20 ثانیه 0 کند. بعد به مدت 1/5 ثانیه 1 کند و سپس به مدت 2/5 ثانیه 0 کند و این حلقه مدام تکرار شود.

برنامه بالا شاید ساده ترین برنامه برای سوال ذکر شده باشد در این برنامه ما زمان اصلی 500 میلی ثانیه را به وجود آورده ایم و در مکان مناسب به تعداد دفعات مناسب آن را فراخوانی کرده ایم.

چند نکته

واسط SAM-BA فقط از میکروکنترلرهای ARM زیر پشتیبانی می کند:

برای استفاده از واسط SAM-BA برای میکرو کنترلرهای at91sam7s مراحل زیرا انجام دهید:

 اطلاعات پروژه

 رمز فایل : www.electronics98.com (این مطلب فاقد فایل جهت دانلود است)

 نویسنده : فرهاد اکبری

 تاریخ انتشار : 24 نوامبر 2014

یک دیدگاه

  1. ممنونم از همه کسانیکه که برای تهیه این مطالب تلاش می کنند

 شرایط و قوانین ثبت دیدگاه

 فارسی بنویسید و از کیبورد فارسی استفاده کنید.

 لطفاً بیش‌از‌حدِ معمول، شکلک یا ایموجی استفاده نکنید و از کشیدن حروف یا کلمات با صفحه‌کلید بپرهیزید.

 به کاربران و سایر اشخاص احترام بگذارید. پیام‌هایی که شامل محتوای توهین‌آمیز و کلمات نامناسب باشند، حذف می‌شوند.

 از ارسال لینک‌های سایت‌های دیگر و ارایه‌ی اطلاعات شخصی خودتان مثل شماره تماس، ایمیل و آی‌دی شبکه‌های اجتماعی پرهیز کنید.