برنامه نویسی و طریقه انتقال برنامه به آیسی میکرو (جلسه دوم)
برنامه زیر برای یک Led نوشته شده که به portc.5 آیسی atmega8 ,وصل شده و در 300 میلی ثانیه 1 (روشن) و در 200 میلی ثانیه خاموش (0) و چون درون حلقه do , loop قرار دارد دایما تکرار میشود اگر میخواهید این عمل یکبار تکرار شود حلقه do, loop قرار ندهید.

دستور زیر سرعت اجرار کردن دستورات توسط میکرو رو تنظیم میکند و بسته به نوع آیسی میتواند بین 1مگاهرتز تا 16 مگاهرتز باشد >>اگر نخواستید دستور آن را بنویسید از مسیر زیر آن را تنظیم میکنید.
option>compiler>communcation وارد این پنجره میشوید.

در بالا هر چی فرکانس پایین تر تنظیم کنیم سرعت اجرای برنامه تند تر میشه یا میتوانیم به جای این کار دستور زیر را بنویسیم البته در خط دوم برنامه بعد از اینکه آیسی رو معرفی کردیم.

در اینجا فرکانس را بر حسب هرتز باید بنویسیم الان فرکانس کار میکرو را 4مگاهرتز قرار دادیم.
-----------------------------------------------------------------------------
حالا یه برنامه برای چشمک زدن LED ولی ایندفعه بصورت سنگرون (یعنی زمان خاموش و روشن led یکسان )

دستور toggle چه کار میکنه؟
>>>>میکرو میرسه به toggle پورتی که بهش معرفی کردیم برعکس میکنه یعنی اگه روشنه (1) خاموشش میکنه و اگه خاموش (0) باشه روشنش میکنه بعد میرسه به وقفه 500 میلی ثانیه صبر میکنه و دوباره میخوره به در بسته loop و میاد برنامه رو بعد از do تکرار میکنه.
حالا اگه بخواهیم همین روند هر چند بار که خواستیم تکرار بشه از حلقه do,loop استفاده نمیکنیم از یه حلقه دیگه به اسم for و next استفاده میکنیم به صورت زیر

حلقه بالا 10 بار تکرار میشه <<<(a) چیه ؟>>a یه متغییره که هر اسمی که دوست دارین میتونه باشه >از نوع بایت معرفی کردیم یعنی از 0 تا 255 میتونه باشه <واسه چی نوشتیمش چون حلقه for , next باید یه متغییر بهش معرفی کنیم >یعنی با این دستوری که نوشتیم حداکثر تکرار حلقه 255 بار بیشتر نمیتونه باشه >> حالا اگه بخواهیم بیشتر باشه چی >خوب متغییر از نوع word قرار میدیم که 0 تا 65535 حالا اگه بخواهیم بیشتر باشه چی؟>>>متغییر از نوع long تعریف کن که از -2147483648 تا 2147483647 فکر نکنم از این بیشتر بخوای تکرار بشه اگه خواستی همون do,loop بزار چه کاریه:)
برنامه بالا بعد از 10 بار تکرار به پایان میرسه:(
اگه بخوایم حلقه ما بیشتر یا کمتر از 10 بار تکرار بشه فقط عدد جلوی to رو تغییر میدیم .
اینم یه نمونه از معرفی یه متغییر بزرگتر و تغییر دفعات تکرار حلقه

برنامه بالا بعد از 800بار تکرار (800 بار led خاموش و روشن میشه با وقفه 500 میلی ثانیه) به پایان میرسه
اگر خواستید led تندتر یا کندتر چشمک بزند زمان وقفه(500) تغییر دهید.
بعد از نوشتن این برنامه ساده نوبت به compile میرسه با رفتن به مسیر program>compile یا کلید میانبر F7 برنامه شما کامپایل میشه .
چه جوری این برنامه رو انتقال بدیم به حافظه آیسی میکرو
---------------------------------------------------------------------
1.اول باید مشخص کنیم پروگرمر ما از چه نوع است برای این کار به این مسیر رفته
option>programmer تا این پنجره باز شده و شما نوع پروگرمر خودتون رو معرفی کنید اگر پروگرمر شما از نوع LPT هست به صورت زیر تنظیم کنید.

بعد بروی ok کلیک کنید (اگر پروگرمر شما از نوع پورت سریال بود stk500 تنظیم کنید)
حالا از وصل بودن پروگرمر و آیسی اطمینان حاصل کرده
به این مسیر بروید program>send to chip>program یا کلید میانبر F4 رو بزنید اگر همه چیز ok باشد وارد پنجره زیر میشوید

همونطور که میبینید آیسی atmega8 شناسایی شده اگر مشکلی در پروگرمر یا عدم وصل بودن پروگرمر به کامپیوتر یا قطع بودن تغذیه پروگرمر باشد با پیغام زیر مواجه میشوید و آیسی شما شناسایی نمیشود.

اگه همه چیز درست بود <<<<<<<<<<<<<
بروی Auto program کلیک کنید تا برنامه به آیسی میکرو انتقال داده بشه حالا برو مدارتو درست کن:)حالشو ببر

امیدوارم موفق باشد مشکلی تا اینجا داشتید خبر بدید