به نام خدا:در این سری از اموزش ها قصد دارم برنامه نویسی  به زبانC با کامپایلر code vision avr رابه طور کامل اموزش دهم.
پس با ماهمراه باشید...

دلیل تشکیل این جلسات اموزش زبان Cچیست؟

همونطوری که میدونید و حتما دیدید اموزش میکروکنترلر های avrدرسایت های مختلف زیاده و خب بیشتر اون ها اموزش های مفیدی هستند ولی یک عیب در بیشتر اونها دیده می شه و اون این که اموزش زبان cندارند ، به همین دلیل افرادی که تازه کار با میکروکنترلرهای avr را شروع کرده اند چون برنامه نویسی قوی ای ندارند شروع سختی خواند داشت وهمچنین بنا برتجربه مهم ترین چیزی که افزار موفق و حرفه ای در زمینه میکروکنترلر ها را از افراد اماتور جدا میکنه توانایی در در برونامه نویسی است . از همین روی تصمیم گرفتم اموزش کاملی در این زمینه را قرار دهم تا کمکی به علاقه مندان

کرده باشم .

میدونم مختونا خوردم ولی ببخشید.



در این جلسه از سری اموزش های برنامه نویسی Cبا کامپایلر code vision avrقصد داریم به

معرفی انواع داده ها،متغیرها، ساختمان زبانCو... بپردازیم.

 از ساختمان زبان Cشروع می کنیم .

  • در ابتدای برنامه هدر فایل ها قرار میگیرند در واقع به دستوراتی که با پسوندh.ختم می شوند
  • و با include#شروع میشوند هدر فایل یا فایل سر امد گفته می شود این دستورات فایل هایی را به برنامه الحاق کنند .
#include  <mega16.h> //هدر فایل میکروکنترلر مگا16 
#include <stdio.h>//هدر فایل توبع ورودی و خروجی
#include <delay.h>//هدر فایل تاخیر
  • بعد از تعریف هدر فایل ها به تعاریف و دستورات کلی که با #شروع می شوند. می رسیم.
#define   led    PORTB.0 
#define sp PORTB.4

  • بعد نوبت تعریف متغیر ها می باشد.
int a; //aتعریف متغیر
unsigned int b;//
char c;
bit d;

  • اکنون نوبت تعریف توابع است.
void  led  (char a); //تعریف تابع 
void Oscillator (int c);
char seg7 ( unsigned int );
  • بعد از همه این کار ها برنامه اصلی شروع می شود که رد داخل mainقرار می گیرد البته درپستورات داخل main فقط یک بار انجام می شوند پس در داخلmainیک حلقه بی نهایتwhile(1)قرار می دهیم(حلقه های بینهایت در جلسه بعد توضیح داده می شود)

و در داخل mainمقدار دهی دهی ریجستر ها  و متغیر یها انجام می شود .که فقط یکبار بعد از resetشدن انجام می شوند .(بعد از بازنشانی میکرو)

#include  <mega16.h> //هدر فایل میکروکنترلر مگا16 
#include <delay.h> //هدر فایل تاخیر


#define led PORTB.0

int a;

void main (){
DDRB=0x01;
PORTB=0x01;

while(1){
a=1;
led=a;
delay_ms(100);
a=0;
led=a;
delay_ms(100);
}
}

برنامه بالا یک چشمک زن است که PORTB.0را هر 100میلی ثانیه یک بار صفر و یک یا به عبارتی نات می کندمثال با برای اشنایی با برنامه نویسی می باشد .

انواع داده ها

نوع مختلفی از داده ها که توسط کامپایلر code vision avr پشتیبانی می شود در جدول زیر امده است.

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

نکته: اگر متغیر ها را مقدار دهی نکنیم محدوده منفی ان از بین می رود

نحوه معرفی متغیر ها

1) نوع متغیر را می نویسیم

unsigned char
2) فاصله می گذاریم و نام متغیر را می نویسیم (فاصله ضروری است) و بعد علامت سیمی کالن را می گذاریم.
unsigned char  a1;
  •  می توانیم متغیر را در هنگام معرفی مقدار دهی کنیم.
unsigned char  a1=10;
  • می توانیم چندین نوع متغیر یکسان را در یک خط معرفی و مقدار دهی کنیم.و یک سیمی کالن گذاشت.
int a=0,b=1,c=10;

یک نکته بسیار بسیار مهمی که باید توجه داشت این است که در انتخاب نام متغیر نمی تونیم ابتدا عدد را بنویسیم و بعد حروف را بلکه برعکس باشد .

int  7micro  ;
int micro7 ;

شناسه چیست؟
شناسه نامی است که به یک متغیر ، تابع یا برچسبی داده می شود. که می تواند  شامل حروف انگلیسی a_zوA_zو0_9و خط زیر"_" باشند. نامها حتما باید با حروف اغاز شوند هرشناسه می تواند حد اکثر تا 32 کاراکتر باشد

فهرست منابع
*کتاب اموزش میکروکنترلر های avr به زبان c
* دانش نویسنده