Welcome
به انجمن نخصصی رباتیک خوش امدید

مهندسی رباتیک مکاترونیک الکترونیک مکانیک
اگر برای اولین بار از این سایت دیدن می فرمایید لطفا عضو شوید
و اگر کاربر این سایت می باشید لطفا با نام کاربری خود وارد شوید

آموزش code vision

Basic - C - Pascal - Assembly

آموزش code vision

پستتوسط ROBOTIC در 0:36 شنبه 04 Aug 2007

در این بخش آموزش برنامه نویسی سی کد ویژن قرار می گیرد
avr-->c-->code vision
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

شکل کلی برنامه

پستتوسط ROBOTIC در 0:38 شنبه 04 Aug 2007

اولین قدم شناخت شکل کلی برنامه نویسی سی است

سرامد
متغیر های عمومی
تعریف توابع
تابع اصلی
{
متغیر محلی
تعریف سخت افراری
برنامه اصلی
}
تشریح توابع
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

سرامد

پستتوسط ROBOTIC در 10:16 شنبه 04 Aug 2007

سرامد ها برنامه هایی از پیش نوشته شده اند که برای جلوگیری از نوشتن چند باره ی آن ها در برنامه متعدد ایجاد شده اند
شکل کلی سرامد به صورت زیر می باشد
#include < نام سرایند . h >
از سرامد های پرکاربرد می توان به سرامد میکروکنترلر اشاره کرد که در هر برنامه ای ضروری است و کار شناسایی سخت افزار های داخلی میکرو کنترلر را بر عهده دارد
و از دیگر سرامد ها می توان به سرامد کیبرد موشواره ال سی دی ها ی گرافیکی دوربین ها و ... اشاره کرد
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

متغیر ها قسمت اول

پستتوسط ROBOTIC در 23:50 شنبه 04 Aug 2007

متغیر ها مکان هایی از حافظه اند که مقادیری می گیرند .
متغیر ها به صورت زیر تعریف میشوند
نام متغییر نوع متغیر
- در کد ویژن متغیر ها یکی از صورت های زیر است
bit :
اعداد بولی 0 یا 1 که یک بیت حافظه اشغال می کند
char :
اعداد صحیح بین -128 و 127 که یک بایت حافظه اشغال می کنند
int :
اعداد صحیح بین -32768 و 32767 که دو بایت حافظه اشغال می کنند
long :
اعداد صحیح بین -2^31 و 2^31-1 که چهار بایت حافظه اشغال می کنند
float :
اعداد اعشاری بین +_ 1/175*10^-38- و +_ 3/402*10^38 که چهار بایت حافظه اشغال می کند
double :
اعداد اعشاری با دقت مضاعف که هشت بایت اشغال می کند
اگر قبل از نوع متغیر صحیح از کلمه ی
unsigned
استفاده شود منفی آن متغییر از بین رفته و حداکثر مقادیر آن دو برابر می شود
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

متغیر ها قسمت دوم

پستتوسط ROBOTIC در 16:59 سه شنبه 14 Aug 2007

متغیر ها در سه جا می توانند ذخیره شوند

در ram برای این کار هیچ پییشوندی لازم نیست

در rom برای این کار از پیشوند eeorom استفاده می شود

در flash برای این کار از پیشوند flash استفاده می شود

متغیر های که در رم ذخیره می شوند پس از ریست از بین می روند

متغیر هایی که در فلش ذخیره می شوند ثابت می باشند و امکان مقدار دادن در ادامه برنامه به آن موچود نمی باشد

همچنین استفاده از پیشوند باعث ثابت شدن متغیذ می شود

متغیر ها یا محلی اند و یا عمومی اند

اگر در اول برنامه قبل از تابع main تعریف شده یاشند متغیر عمومی و اگر در داخل یک تابع تعربف شده باشند متغیر محلی اند

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

ولی از متغیر محلی فقط در داخل همان تابع استفاده می شود و با اتمام اجرای تابع آن ها ازبین می روند
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

آرایه ها

پستتوسط ROBOTIC در 14:26 چهارشنبه 15 Aug 2007

آرایه ها n بعدی ماتریس های n بعدی هستند که به صورت زیر تعیریف می شوند
کد: انتخاب همه
جنس اعضا نام آرایه [تعداد اعضای بعد اول] [تعداد اعضای بعد دوم] [تعداد اعضای بعد سوم] ...

کد: انتخاب همه
int robot [23][245][24][4]

اگر جنس اعضا از نوع char باشد به آرایه ؛ رشته نیز می گویند
کد: انتخاب همه
char string [10][15]

آرایه ها نیز مانند متغیر ها داری دو نوع محلی عمومی می باشد
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

ساختمان

پستتوسط ROBOTIC در 11:05 پنج شنبه 16 Aug 2007

ساختمان ها مجموعه هایی از متغیر ها ثابت ها رشته ها آرایه ها و ساختمان های دیگر هستند
اگر شما از یک شی مشخصاتی دارید بهترین وسیله برای بیان ساختمان می باشد وبه صورت زیر تعریف می شود

کد: انتخاب همه
stract نام ساختمان
{
اعضا
}
شی هایی از نوع ساختمان;


کد: انتخاب همه

struct avr
{
type
name
pin
vcc
{
atmega32,tiny11,atmega5660;

برای استفاده از ساختمان از کل به جز حرکت کرده و وسط آن نقطه می گذاریم

کد: انتخاب همه
ali.dars.omumi.farsi=13
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

اشاره گر ها

پستتوسط ROBOTIC در 9:45 يکشنبه 19 Aug 2007

اشاره گر ها مکان هایی از حافظاه اند که به آدرس متغییر دیگری اشاره می کنند و به صورت زیر تعریف می شوند
کد: انتخاب همه
جنس اشاره گر * نام اشاره گر

کد: انتخاب همه
int a;
int *b;
b = &a;

اشاره گر ها فقط آدرس متغیر ها از جنس خود را نگه می دارند و دادن آدرس دیگر متغیر ها غلط است
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

عملگرها قسمت اول

پستتوسط ROBOTIC در 12:36 دوشنبه 20 Aug 2007

عملگر ها قسمت اول

+ جمع
- تفریق
* ضرب
/ تقسیم
++ افزایش یک واحدی
-- کاهش یک واحدی
% باقی مانده ی تقسیم
= انتساب
>> شیفت به چپ
<< شیفت به راست
~ not منطقی
& and منطقی
| or منطقی
! not بولی
&& and بولی
|| or بولی
=+ اول جمع سپس انتساب
=- اول تفریق سپس انتساب
=* اول ضرب سپس انتساب
=/ اول تقسیم سپس انتساب
=% اول باقی مانده سپس انتساب
== شرط برابری
=! شرط نابرابری
< شرط بزرگتر بودن
> شرط کوچکتر بودن
=> شرط کوچکتر یا مساوی بودن
=< شرط بزرگتر یا مساوی بودن
& استخراج آدرس
* روجوع به آدرس
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

عملگر ها قسمت دوم

پستتوسط ROBOTIC در 15:44 سه شنبه 21 Aug 2007

عملگر ها قسمت دوم

کدهای دوگانه ی زیر برابرند
کد: انتخاب همه
c =a + c ;
-------------------------
c + = a ;


کد: انتخاب همه
d = a - d;
-------------------------
d - = a ;


کد: انتخاب همه
e = a * e ;
---------------------
e * = a ;


کد: انتخاب همه
f = a + f ;
--------------------
f * = a ;


کد: انتخاب همه
g = a / g ;
-----------------
g / = a ;


کد: انتخاب همه
h = a % h ;
-----------------------
h % = a;


کد: انتخاب همه
a = b ;
------------
k = & a ;
b = * k ;

نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

توابع

پستتوسط ROBOTIC در 15:06 چهارشنبه 22 Aug 2007

توابع

تابع ها قسنت هایی در برنامه هستند که کد ها در داخل آن ها اجرا می شود هر تابع اول باید تعریف شوند سپس استفاده شوند و در آخر تشریح شوند

تعریف توابع
تعزیف ها در اول برنامه نوشته شود

کد: انتخاب همه
جنس خروجی نام تابع ( جیس وروذی اول , جنس وروذی دوم , ... )


مانند
کد: انتخاب همه
float ave (int , float [16] );

void chap (void);

int rotbe (void) ;

bit and (bit , bit ) ;

استفاده از توابع

توابع برای این که شروع به کار کنند کافی است اسم آن ها آورده شود به همراه مقدار ورودی ها
الین تابعی که بدون فراخوانی و تعربف در اول شروع برنامه اجرا می شود تابع main است
پس توابع را باید در توابع دیگر صدا زد

برای مثال فراخوانی توابع بالا
کد: انتخاب همه
y = ave ( 6 , stdudent) ;

chap( ) ;

z= rotbe ( ) ;

a = and ( 1 , k ) ;

تشریح توابع

در پایان برنامه باید توابع تشریح شوند که به صورت زیر به کار می روند
کد: انتخاب همه
جنس خروجی نام تابع ( جنس ورودی اول نام وردی اول , ... )
}
دستورات تابع
بازگشت خروجی
{



مانند
کد: انتخاب همه
float ave (int tedad , float nomre [16] );
{
for ( i=1  ; i<tede ; i++ )
{
sum+=nomre[i-1] ;
}
return (sum/tedad) ;
}
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

پستتوسط ROBOTIC در 10:44 پنج شنبه 23 Aug 2007

if

در برنامه نویسی از این دستور زیاد استفاده می شود
و برای گذاشتن شرط بدون حلقه به کار می رود
کد: انتخاب همه
اگر ( شرط )
{
دستورات
}
در غیر این صورت
{
دستورات
}




مانند
کد: انتخاب همه
if (a<=b)
{
a = 10 ;
b = 20 ;
}
else
{
a = 1 ;
b = a ;
}

نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

for

پستتوسط ROBOTIC در 10:18 جمعه 24 Aug 2007

حلقه شرطی شمارشی for

از دستور for برای ایجاد یک حلقه استفاده می شود که اگر شرط برقرار بود آن دستورات تکرار می شود وبه صورت زیر استفاده می شود
کد: انتخاب همه
برای (دستور اولیه ؛ شرط ؛ دستور پایان حلقه )
{
دستورات
}


مانند
کد: انتخاب همه
for ( i=0 ; i<100 ; i=i+2)
{
PORTA=i;
}
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

while

پستتوسط ROBOTIC در 18:59 جمعه 24 Aug 2007

حلقه ی while

وقتی می خواهیم یک سری دستور تا وقتی شرطی برقرار است تکرار شوند از این دستور استفاده می شود
کد: انتخاب همه
تا وقتی که ( شرط )
{
دستورات
}


یا

کد: انتخاب همه
انجام بده
{
دستورات
}
تا وقتی که ( شرط ) ؛


فرق اولی با دومی آن است که در دومی اول یک بار دستورات انجام می شود وسپس مانند اولی می گردد

برای ایجاد حلقه بی نهایت کافیست شرط را برابر عدد مثبتی قرار دهیم

مانند
کد: انتخاب همه
while(a==b)
{
{ PORTA=0x12;
}

کد: انتخاب همه
do
{
PORTB=0x00 ;
}
while (b<h) ;

کد: انتخاب همه
while ( 1)
{
PORTC=PIND ;
}
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

درگاه

پستتوسط ROBOTIC در 13:03 شنبه 25 Aug 2007

درگاه

هر پایه avr قبل از استفاده باید تعریف شود
هر درگاه از 3 ثبات تشکیل شده که با مقدار دادن به آن ها خاصیت آن درگاه را می توان تغییر داد

ثبات DDR

از این ثبات برای تعیین ورودی خروجی استفاده می شود و اگر به آن مقدار صفر بدهیم ورودی و اگر مقدار یک بدهیم خروجی می شود
کد: انتخاب همه
DDRA.4=1 ;

DDRC.2=0 ;


اگر بخواهیم کل یک پورت را یکجا مقدار دهیم باید مقدار آن را به صورت مبنای 16 در آوریم
کد: انتخاب همه
DDRA=0x00 ;

DDRB=0xBE ;

DDRC=0xFF ;


ثبات PORT

اگر درگاه خروجی بتشد با مقدار صفر دادن به آن درگاه ولتاژ زمین و با یک دادن به آن درگاه ولتاز VCC به خود می گیرد
کد: انتخاب همه
PORTA=0x16 ;

PORTD.5=1 ;

ثبات PIN

از این ثبات برای خواندن مقدار درگاه های ورودی استفاده می شود
کد: انتخاب همه
A = PINA ;

MEQ = PIND.2 ;
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

delay

پستتوسط ROBOTIC در 11:16 يکشنبه 26 Aug 2007

سرامد delay

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

کد: انتخاب همه
#include <delay>


انگاه قادر به استفاده از دو تابغ زیر هستید

کد: انتخاب همه
delay_us( عدد ) ;


که باعث می شود به اندازه آن عدد میکروثانیه ادامه برنامه متوقف بشود

کد: انتخاب همه
delay_ms(  عدد ) ;


که باعث می شود به مقدار عدد میلی ثانیه ادامه برنامه متوقف شود
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

اولین برنامه

پستتوسط ROBOTIC در 19:44 چهارشنبه 29 Aug 2007

اولین برنامه
چشمک زن


اگر به هر یک از پایه های پورت a یک led با مقاومت 220 اهم وصل نمایید شروع به چشمک زدن می نماید

کد: انتخاب همه
//strat program
// http://robot.freeforums.org
#include <mega32>
#include <delay>
void main(void)
{
   // port a khoroji
   DDRA=0xFF;
        while (1)
   {
      PORTA=0x00;
      delay_ms(500);
      PORTA=0xFF;
      delay_ms(500);
   }
}//end program
نماد کاربر
ROBOTIC
مدیر کل
مدیر کل
 
پست ها : 959
تاريخ عضويت: 11:23 جمعه 27 Jul 2007
محل سکونت: ایران

Re: اولین برنامه

پستتوسط pro'bot-zd در 17:12 سه شنبه 03 Jun 2008

پیشنهاد:

اگه اموزشتون همراه با شبیه سازی هم باشه خیلی بهتره مثلا با پروتئوس ،تو همین بخش هم بذارید و دیگه این که اموزش خود نرم افزار هم با عکس هایی که از محیطش میذارین خیلی بهتر میشه.یا حتی فیلم کار با نرم افزار رو که حالا با مثلا snagit یا برنامه دیگه تهیه میشه رو هم ضمیمه کنیدعالی میشه. :wink: موفق باشید
بیچاره شاگردی که از استاد بهتر نشود

بیچاره تر استادی که از شاگرد بهتر نباشد
نماد کاربر
pro'bot-zd
کاربر
کاربر
 
پست ها : 19
تاريخ عضويت: 14:51 سه شنبه 03 Jun 2008

پستتوسط i-am در 17:24 شنبه 07 Jun 2008

و بیچاره تر از همه كسی كه گرفتار عجب شده.[quote]
:wink:
نماد کاربر
i-am
کاربر تازه وارد
کاربر تازه وارد
 
پست ها : 1
تاريخ عضويت: 16:25 شنبه 07 Jun 2008

Re: اولین برنامه

پستتوسط aiborobot98 در 19:29 دوشنبه 30 Jun 2008

سلام کسی تو این فروم هست که تا حالا ربات مسیر یاب حرفه ای ساخته باشه ؟ اگه آره میشه نمونه برنامه یا کدش رو بذاره واسه دانلود؟
aiborobot98
کاربر تازه وارد
کاربر تازه وارد
 
پست ها : 1
تاريخ عضويت: 19:23 دوشنبه 30 Jun 2008


بازگشت به برنامه نویسی میکروکنترلر ها و برنامه نویسی دیجیتال سیگنال کنترلر ها

چه کسي حاضر است ؟

کاربران حاضر در اين انجمن: - و 1 مهمان

cron