Visits: 407
به نام خدا
در دور جدید آموزش های برنامه نویسی، می خواهیم به آموزش برنامه نویسی در محیط Atmel Studio 6 به پردازیم، خواهیم گفت که چگونه یک پروژه جدید ایجاد کنیم و یک برنامه ساده بنویسیم و در نهایت آن را کامپایل کنیم و از فایل هگز خروجی آن در شبیه سازی و … استفاده کنیم.
مراحل ایجاد یک پروژه جدید
ابتدا به منوی File رفته و از گزینه New مورد Project را انتخاب کنید، حال گزینه GCC C Executable Project انتخاب کرده و در انتها هم برای Name اسم پروژه مورد نظرتان را انتخاب کنید و در قسمت Location نیز می توانید محل ذخیره سازی پروژه را تعیین نمایید. در این مثال آموزشی ضمیمه شده ما ابتدا می خواهیم پورت A میکرو ATMEGA32 را به عنوان خروجی تعریف کنیم و 8 عدد LED به آن وصل کرده و حالت های مختلفی را ایجاد کنیم.
بعد از ساخت پروژه پیش فرض کدهای مربوطه برای شما آماده می شود که مطابق زیر مواری را اضافه می کنیم تا برنامه مورد نظر شکل گیرد.
#include#define F_CPU 1000000 #include
در قسمت F_CPU توسط دستور define ما فرکانس کاری میکروکنترلر را تعیین می کنیم که در اینجا 1MHZ انتخاب شده و در خط بعد نیز توابع تاخیری را فراخوانی می کنیم تا از تاخیر های میلی ثانیه یا میکرو ثانیه استفاده شود.
void mode1(){ unsigned char i; for (i=0; i<4; i++){ PORTA=0xff; _delay_ms(300); PORTA=0x00; _delay_ms(200); } }
در تابع تعریف شده به نام mode1 ما 4 مرتبه کل پورت A را روشن (یک) و 300 میلی ثانیه تاخیر ایجاد می کنیم و در ادامه کل پورت را خاموش (صفر) و تاخیر ایجاد می کنیم. کل این پروسه که 4 بار تکرار می شود را به صورت تابع نوشته ایم که در تابع اصلی main فراخوانی می کنیم. پس تا ایجا ما با نحوی نوشتن یک تابع Void تابع بدون برگشت نیز آشنا شدیم.
void mode2(){ unsigned char i; PORTA=0x01; for (i=0; i<8; i++){ _delay_ms(200); PORTA = PORTA<<1; } }
mode2 نیز به این صورت می باشد که ابتدا بیت اول (A.0) را یک کرده و توسط حلقه For هشت بار یکی یکی این بیت یک شده را به سمت چپ شیفت می دهیم و 200 میلی ثانیه در هر مرحله تاخیر ایجاد می شود تا حرکت LED به آرامی نمایان شود.
int main(void){ PORTA=0x00; DDRA=0xff; while(1) { mode1(); mode2(); } }
اکنون در تابع اصلی برنامه یعنی main پورت A را به صورت خروجی (DDRA) تعریف نموده و مقدار پیش فرض آن را نیز صفر قرار می دهیم، و در حلقه بینهایت تایع mode1 و mode2 را پشت سرهم فراخوانی می کنیم و این کار تا ابد ادامه می یابد.
انشاء الله در روزهای آتی با مثال ها و آموزش های بیشتری خواهیم آمد، امیدواریم دوستان نیز با ارائه مطالب همکاری کنند و همه صرفا خوانند مطالب نباشند.