برنامه های کدویژن و بسکام مرتبط با بخش سوم
در قسمت قبلی درباره آموزش سخت افزار میکروکنترلر Pinout و کار با رجیسترهای AVR صحبت کردیم و در این قسمت از آموزش AVR قصد داریم بیشتر وارد محیط برنامه نویسی شویم و نکاتی که در جلسه قبل گفته شد را کدنویسی کنیم.
شاید برای شما مفید باشد: آموزش AVR از 0 تا 100 بصورت کاملا رایگان
همانطور که گفته شد، میخواهیم در ابتدا پین PB0 خروجی تعریف شود و در مرحلهی بعد مقدار High در آن قرار بگیرد.
به کد زیر که به زبان C در محیط کدویژن نوشته شده است دقت کنید:
در ابتدا در خط 2 فایلی که در کامپایلر موجود است یعنی فایل mega32.h داخل برنامه include میشود. در این تعریف رجیسترهای ATMEGA32 قراردارد که با include کردن آن کامپایلر متوجه میشود که چیپ موردنظر ما ATMEGA32 است.
در خط 5 پین PB0 خروجی، و در خط 6 همان پین High میشود. اگر خط 6 وجود نداشته باشد، چون بصورت پیش فرض مقدار PORTB برای PB0 صفراست، خروجی این پین low میشود.
در خط 5 در شکل 2 مقدار 1 به اندازه صفربیت به چپ شیفت پیدا کرده است. خوانایی این کد بهتر از کد نوشته شده در شکل 1 است.
حال کد قبلی را به زبان بسکام مینویسیم:
در خط 1 مشابه کد نوشته شده در شکل1 کامپایلر متوجه میشود که چیپ موردنظر ATMEGA32 است.
در دستور خط 2 مقدار فرکانس نوسان برای نرم افزار روشن میشود. البته توجه کنید که از طریق برنامه نمیتوانید فرکانس را تعیین کنید و نوسان فقط با فیوزبیت ها و پروگرامر مشخص میشود.
ولی حسن این دستور در کدنویسی این است که اگر تاخیری در عملیات برنامه وجود داشته باشد، بااطلاع از فرکانس اسیلاتور سیستم است. اگر در بسکام بخواهیم پین خاصی از یک پورت را تغییر بدهیم از این دستور خط 3 استفاده میکنیم.
در بسکام با نوشتن خط 4 مقدار PB0 ، Set یا همان 1 خواهد شد و هم چنین با نوشتن reset این پین را می توان صفر و یا با نوشتن toggle مقدار پین را not کرد.
خطوط 5 و 6 همان حلقه بی نهایت while را برای برنامه تعریف میکنند.
- آموزش کاربردی AVR – بخش اول – میکروکنترلر و میکروپروسسور
- آموزش کاربردی AVR – قسمت دوم-آشنایی با معماری داخلی AVR
- آموزش کاربردی AVR – قسمت سوم-آموزش سخت افزار میکروکنترلر Pinout و کار با رجیسترهای AVR
- آموزش کاربردی AVR – قسمت پنجم – خلاصهای از کلیه امکانات موجود در AVR
- آموزش کاربردی AVR – قسمت ششم- نوشتن برنامههایی با کامپایلرهای کدویژن به منظور پیاده سازی یک دیکدر BCD to 7segment