میکرو لایب

ساختمان زبان C در کامپایلر codevision-avr

در برنامه نویسی به زبان C هدر فایلها در ابتدای برنامه قرار میگیرند در وافع به دستوراتی که پسوند آنها h. می باشد و با include# شروع شوند هدرفایل یا فایل سرآیند گفته میشود.

این دستورات قادر هستند فایهایی را به ابتدای برنامه الحاق کنند:

:بعد از تعریف هدر فایلها در صورت نیاز باید تعاریف و دستورات کلی که با # شروع می شوند قرار داده شود

:بعد نوبت تعریف متغیرها می باشد

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

بعد از همه این کار ها برنامه اصلی شروع می شود. در main یک حلقه بی نهایت while وجود دارد که برنامه اصلی در داخل این حلقه قرارمی گیرد و دستوراتی که قبل از این حلقه وجود دارد مبوط به مقدار دهی رجیستر ها و متغیر ها می باشند که فقط یکبار بعد از Reset شدن میکرو اجرا می شوند.

۱-انواع داده ها

نوعهای مختلف داده و محدوده آنها که توسط کامپایلر Code Vision AVR پشتیبانی می شود در جدول زیر نشان داده شده است.

نکته: در معرفی داده ها اگر از کلمات کلیدی unsigned استفاده شود محدوده منفی متغیر از بین می رود و بر محدوده مثبت اضافه خواهد شد.

۲-متغیر ها

متغیرهای برنامه میتوانند سراسری (قابل دسترسی در تمام توابع برنامه) یا محلی (قابل دسترسی فقط در داخل توابعی که در آن اعلان شده) باشند.

نکته: اگر متغیر ها را مقدار دهی اولیه نکنیم متغیر های سراسری به طور خودکار در شروع برنامه صفر میشوند.

*انواع متغیر ها

Static:

متغیرهای محلی که باید در طول فراخوان های مختلف به یک تابع مقدارشان را حفظ کنند باید با عنوان static اعلان شوند.

نکته: حافظه static فقط در برد همان تابع قابل دسترسی است و فقط  برای یک بار مقداردهی می شود.

Extern:

حافظه ای که در اول برنامه تشکیل می شود و تا آخر قابل دسترسی است.

برای اطلاع دادن به کامپایلر تا یک متغیر را به ریجستر ها اختصاص می دهد از دستور register استفاده می کنیم.

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

نکته: اگر یک متغیر را به ریجسترها اختصاص دهیم باعث می دشود که دسترسی CPU به این متغیر ها بیشتر شود.

 EEPROM:

تاکنون متغیرهایی که معرفی کردیم در حافظه RAM میکروکنترلر بودند یعنی با قطع تغذیه مقدار آنها از بین می رفت. اگر ما بخواهیم داده را در مکانی ذخیره کنیم که هم قابل نوشتن و خواندن بوده و هم با قطع تغذیه مقدار آنها از بین نرود باید از حافظه EEPROM داخلی میکروکنترلر استفاده کنیم. برای استفاده از EEPROM میکرو در هنگام تعریف متغیرها باید کلمه کلیدی eeprom استفاده شود.

این متغیرها دقیقآ مانند متغیرهایی که در RAM تعریف می شوند سراسری هستند و باید قبل main نوشته شود.

چنانچه در برنامه چنین متغیرهایی نوشته شوند باید در هنگام پروگرم کردن میکروکنترلر فایل با پسوند eep را نیز پروگرم کرد.

نکته:به عنوان مثال میکروکنترلر Atmega16 دارای ۵۱۲ بایت حافظه EEPROM با قابلیت خواندن و نوشتن تا صدهزار بار و یک کیلو بایت حافظه داخلی SRAM می باشد.

Flash:

متغیرهایی از جنس Flash و Const متغیرهایی فقط خواندنی هستند که فقط می توان آنها را خواند. مقدار دهی اولیه این متغیرها در زمان پروگرم شدن میکرو در حافظه Flash قرار می گیرد و ما فقط می توانیم آنها را بخوانیم. ابن متغیر ها زمانی که ما احتیاج به یک دیتای ثابت مرجع داشته باشیم کاربرد دارد. برای تعریف چنین متغیری از کلمه کلیدی flash یا  const قبل از تعریف استفاده میکنیم مقدار این متغیرها در هنگام قطع تغذیه از بین نمی رود.   

 

دیدگاه‌ها (0)

*
*

question