این مقاله به آموزش برنامه نویسی میکروکنترلرهای AVR به زبان C توسط نرم افزار CodeVision میپردازد. اگر علاقند به یادگیری برنامه نویسی میکروکنترلرهای AVR به زبان #سی در محیط کدویژن هستید این نوشته را از دست ندهید.
معرفی زبان C
زبان C یک زبان برنامه نویسی ساده و پر قدرت میباشد که در سال 1972توسط #دنیس_ریچی طراحی شده است.
دسته بندی زبانهای برنامه نویسی
- زبانهای سطح بالا: دستورالعملهای این زبانهای برنامه نویسی به زبان محاورهای انسان نزدیک است ولی دسترسی مستقیم به حافظه، ثباتهای پردازشگرو… ندارند، مانند… PASCAL ، BASIC
- زبانهای سطح پایین: بوسیله این زبانهای برنامه نویسی زبان اسمبلی
- زبانهای سطح میانی: زبان C
برنامهنویسی ساختیافته
زبانهای برنامه نویسی به دو دسته ساخت یافته و غیر ساخت یافته نیز تقسیم بندی میشوند. در زبان برنامه نویسی ساخت یافته با استفاده از حلقههای تکرار ( do…while ، while ، for ) میتوان برنامهای نوشت که قابلیت خوانایی بالایی داشته باشند.
خصوصیات زبان C
- یک زبان برنامه نویسی میانی است.
- یک زبان برنامه نویسی ساخت یافته است.
- یک زبان قابل انعطاف و قدرتمند است.
- ارتباط تنگاتنگی بین زبان Cو اسمبلی وجود دارد.
- تعداد کلمات کلیدی این برنامه کم (30کلمه کلیدي) میباشد.
- زبان برنامه نویسی Cنسبت به حروف کوچک و بزرگ حساس است .
- تمام کلمات کلیدی آن با حروف کوچک نوشته میشوند. براي مثال int یک کلمه کلیدی است اما INT کلمه کلیدی نیست.
در جدول زیر کلمات کلیدی زبان Cنمایش داده شده است:
Break | double | int | struct |
bit | else | long | switch |
case | enum | register | typedef |
char | extern | return | union |
const | float | short | unsigned |
continue | for | signed | void |
default | goto | sizeof | volatile |
do | if | static | while |
دستورالعملهای زبان C دارای خصوصیات زیر میباشد.
- هر دستور زبان C به ; ختم میشود.
مثال:
int a=1; float pi=3.14;
- حداکثر طول یک دستور . 255 کاراکتر است.
- هر دستور میتواند در یک یا چند سطر ادامه داشته باشد.
- در هر سطر میتوان چند دستور تایپ کرد.
توضیحات :
در یک برنامه نوشته شده با اضافه کردن توضیحات خوانایی و درك برنامه بالا میرود. توضیحات توسط مترجم (کامپایلر) نادیده گرفته میشود. در زبان Cتوضیحات میتوانند در بین /* و /* قرار بگیرند یا بعد از // نوشته شوند.
1 */ :مثالThis is a sample for command for C program language. */ 2 // :مثالThis lne is a sample.
ساختار برنامه C
برنامههای زبان C از مجموعهای از دستورات و تعدادی تابع تشکیل میشود. بدنه اصلی برنامه زبان، C تابع () main میباشد. هر برنامه باید دارای این تابع باشد. در شکل زیر ساختار یک برنامه C نمایش داده شده است که در آینده این ساختار با معرفی قسمتهای دیگر زبان C تکمیلتر میشود.
فایلهای سرآیند
void main(void)
{
اعلان متغیرها
دستورات اجرائی
}
فایلهای سرآیند: در برنامه نویسی زبان cتوابع و کتابخانههایی وجود دارند که قبلاَ نوشته شدهاند و در فایلهایی که معمولا در پوشه include یا inc محل نصب کامپایلر میباشند ذخیره شدهاند و قبل از نوشتن تابع اصلی برنامه cاین فایلها باید به تابع اصلی استفاده کننده از توابع این فایلها ضمیمه شوند. به این فایلها فایلهای سرآیند گفته میشود. براي ضمیمه کردن یک فایل بصورت زیر عمل میشود.
#include < نام فایل سرآیند >
مثال : توابع ورودی خروجی در فایل stdio.hذخیره شدهاند. در صورت استفاده از توابع ورودی خروجی در برنامه اصلی باید این فایل بصورت زیر به برنامه اصلی ضمیمه شود.
#include <stdio.h>
در زبان c برنامه نویس میتواند، فایلهای سرآیند تولید کند. حال برای ضمیمه کردن فایل تولید کرده و بصورت زیر عمل میکند:
#include ”نام فایل سرآیند“
با روش تولید فایل سرآیند بعدا آشنا میشوید.
انواع داده در زبان C
در زبان C پنج نوع داده وجود دارد که این انواع داده با پیشوندهای short )کوتاه) ، long (بلند ) ، signed (علامتدار) و unsigned(بدون علامت) همراه میشود.
- charکاراکتر: این نوع داده برای ذخیره کاراکترهایی مانند ’ ’x’، ‘2’ ، ‘aو… استفاده میشود.
- intا اعداد صحیح: برای ذخیره اعداد صحیح مانند 34-،12و… بکار میرود.
- float اعداد اعشاری: برای ذخیره اعداد اعشاری مانند 3.1415 ، 12,5استفاده میشود.
- double اعداد اعشاری بزرگ: برای ذخیره اعداد اعشاری بزرگتر از float بکار میرود.
داده نوع بیت در کدویژن
داده نوع بیت: براي تعریف متغیرهای بیتی استفاده میشود. محل ذخیره متغیرهای بیتی به ترتیب از بیت صفر ثبات
GPIOR1و سپس GPIOR2و سپس ثباتهای R2تا R14 میباشد.
مثال :
bit alfa=1; /* bit0 of GPIOR0 */
bit beta; /* bit1 of GPIOR0 */
تعریف متغیر در زبان C
متغیرها نامی برای محل ذخیره دادهها میباشند. تعریف متغیر در Cبصورت زیر است:
<نام متغیر > <نوع داده>;
مثال:
int A;
unsigned long int S;
اگر تعداد زیادی از یک متغیر یک نوع نیاز داشته باشیم:
float pi,E,i,j;
نکته: نام متغیر میتواند با حروف بزرگ نوشته شود. فقط کلمات کلیدی زبان C که در قبل گفته شد باید با حروف کوچک نوشته شود.
در CodeVision
تعریف متغر در حافظه: eeprom برای تعریف متغیر سراسري در آینده شرح داده میشوند بصورت زیر انجام میشود:
eeprom <نام متغیر> <نوع داده>
مثال:
eeprom char beta;
eeprom long array1[5];
تعیین محل ذخیره متغیرهای سراسري در آینده شرح داده میشوند در حافظه: SRAM این کار بصورت زیر انجام میشود.
متغیر عددی a در آدرس 80 حافظه SRAM ذخیره شده»
int a @0x80;
براي ذخیره متغیر در ثبات از دستور register استفاده میشود:
register <نام متغیر> <نوع داده>;
براي دستور دادن به کامپایلر که متغیری را درثبات ذخیره نکند از دستور volatile بصورت زیر استفاده میشود:
volatile <نام متغیر> <نوع داده> ;
مقداردهی متغیر در سی
مقداردهی به متغیر به دو صورت زیر انجام میشود:
1- هنگام تعریف متغیر یا مقدار دهی اولیه:
int j=0, a=24;
<har ch1=’a’;
float Pi=3.1415,e=2.71;
2- بعد از تعریف متغیر با علامت انتساب = .
int a,b;
a=23;
b=10;
تعریف ثوابت زبان C (مقدار ثابت):
ثوابت مقادیری هستند که در برنامه از آنها استفاده میشود و قابل تغییر نمیباشند. برای تعریف ثوابت در زبان C به روشهای زیر عمل میشود:
1- استفاده از دستور define
#define <مقدار> <نام ثابت>
مثال :
#define PI 3.14
نکته : دستور define از دستورات پیش پردازنده است و نیازی به ; ندارد.
2- استفاده از دستور const
const <مقدار> = <نام ثابت> <نوع داده>;
مثال :
const int a = 25;
ثوابت در کدویژن
ثوابتی که با const و flashتعریف میشوند در در حافظه flashذخیره میشوند.
مثال :
flash int integer_constant=1234+5;
flash char char_constant=’a’;
flash long long_int_constant1=99L;
flash long long_int_constant2=0x10000000;
flash int integer_array1[]={1,2,3};
flash int integer_array2[10]={1,2};
flash int multidim_array[2][3]={{1,2,3},{4,5,6}};
flash char string_constant1[]=”This is a string constant”;
const char string_constant2[]=”This is also a string constant”;
تا اینجای کار با مقدمات زبان C آشنا شدید برای اطلاعات کامل اول فایل PDF اول را از لینک زیر دانلود کنید و بعد از مطالعه فایل لینک دوم را دانلود و بترتیب مطالعه کنید.
لینکهای دانلود فایلهای ضمیمه:
#موفق_باشید.
منبع: میکرودیزاینرالکترونیک