کدویژن نوشتن اولین برنامه

saalek110

Well-Known Member
در این پروژه ساده, دو led از طریق دو مقاومت به پایه های PC0 و PC1 (پین های 22 و 23) میکرو وصل شده اند. در صورتی که با پین های مگا 16 اشنا نیستید, حتما پست “اشنایی با پین های میکروکنترلر ATmega16/32” را مطالعه کنید. در ابتدا led متصل به پین PC0 روشن شده و پس از یک ثانیه این led خاموش, و led متصل به PC1 روشن می شود. پس از یک ثانیه led متصل به PC1 خاموش و led متصل به PC0 روشن می شود و این روند ادامه دارد… که به این پروژه ساده LED چشمک زن می گویند (البته اینجا دو ال ای دی استفاده شده) .
شماتیک به صورت زیر می باشد :

LEDF_EMIC.IR_-1.jpg


توجه : در شماتیک بالا بدلیل اینکه در برنامه پروتئوس پایه های تغذیه برای این میکرو وجود ندارد وصل نشده, ولی در عمل پایه های تغذیه میکرو(پایه 10 و 11) را به 5 ولت وصل کنید




ابتدا یک پروژه ایجاد کنید و میکرو را ATmega16 انتخاب کنید. فرکانس را روی یک مگاهرتز تنظیم کنید و در قسمت port پین های 0 و 1 از پورت C را خروجی تنظیم کنید. در برنامه زیر کدهای اضافی ایجاد شده و توضیحات حذف شده است (می تونید حذف نکنید من برای ساده تر شدن برنامه حذف کردم)





کد:
#include <mega16.h>  /* معرفي کتابخانه مگا16 */
#include <delay.h>  /* delay معرفي کتابخانه */
 
void main(void) 
{
 
DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (1<<DDC1) | (1<<DDC0);  /* C خروجي کردن پين هاي 0 و 1 از پورت */
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);  /*مقاومت بالاکش نداشته باشد C هيچ کدام از پين هاي پورت */
 
while (1)       /* حلقه تکرار بينهايت */
      {
      PORTC.0=1;   /* يک شود C پين 0 از پورت */
      PORTC.1=0;   /* صفر شود C پين 1 از پورت */
    
      delay_ms(1000);  /* تاخير زماني به مدت يک ثانيه */
 
      PORTC.0=0;   /* صفر شود C پين 0 از پورت */
      PORTC.1=1;   /* يک شود C پين 1 از پورت */
    
      delay_ms(1000);  /* تاخير زماني به مدت يک ثانيه */
 
      }
}

  • توجه کنید که از هر میکرویی که استفاده می کنید در ابتدای برنامه باید کتابخانه ان را فراخوانی کنید

  • تمام کدها بجز کدهای داخل حلقه while توسط خود کدویژن ایجاد شده است
  • تابع DDRC برای تعیین خروجی یا ورودی بودن پین های پورت C استفاده می شود هر کدام از پین های 0 تا 7 در صورتی که صفر باشد به معنی ورودی و در صورت یک کردن به معنی خروجی بودن ان پین می باشد(برای بقیه پورت ها هم بجای C اخر تابع, پورت مورد نظر را می گذاریم)
  • تابع PORTC برای مشخص کردن این است که پین های پورت مورد نظر مقاومت بالا کش داشته باشند یا نه



 
آخرین ویرایش:

saalek110

Well-Known Member
شما به تماشای ویدیوی "آموزش AVR برنامه نویسی آی سی mega8 در کدویژن (قسمت اول)" در آپارات دعوت شده اید.

در فیلم بالا هم ، ابتدا یک پروژه ساخته و سیو کرده و کد led را نوشته.

و بعد در پروتئوس پیاده کرده.

میکروکنترلر ایشان atmega8 است و اینکلودش هم atmega8 ولی پست قبلی میروکنترلر atmega16 را اینکلود کرده بود در کدها.
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا