PDA

نسخه کامل مشاهده نسخه کامل : کسی این برنامه رو می تونه تضیح بده "ربات مسیریاب با زبان سی "



mehdi_RM
11-06-2006, 13:27
برنامه ربات مسیر یاب با میکرو 8051 در c


بی زحمت اول بگید محیط برنامه نویسیش اسمش چیه؟
keil یا چیزی دیگه ای ؟؟؟؟؟؟


[code]
#include d:\mc51\8051io.h
#include d:\mc51\8051reg.h
بعد این دو خط پایینی چرا اینطوری تعریف شدن؟؟؟ //
extern register unsigned char speedleft,speedright;
register unsigned char high,low,flag,time;

main()
{
P1=0x40;
P3=0xff;
high = 80;
low = 30;
flag = 0;
time = 50;
Start();
while(1) {
P3|= 0x0f;
Run();
}
}
//***********************************************
این تابه استارت برا چی هست و چی کار می کنه؟//
نا مفهوم بود برا من //
حلقش چی کار می کنه؟//
Start()
{
char exit,key;
exit =1;
while(exit)
{
key = P1;
if((key & 0x40)==0) exit=0;
}
}
//***********************************************
تو این تابه چرا سنسور ها رو and می کنه به مقایسه ؟؟؟؟؟؟//
Run()
{
char sensors;
sensors = (P3 &=0x0f);

if((sensors & 0x01)==0) {
TurnRight();
flag = 1; }

else if((sensors & 0x08)==0) {
TurnLeft();
flag = 2; }
else if(sensors == 0x09) {
Forward(high);
flag = 0; }

else if(((sensors==0x0b)||(sensors==0x0d))&&(flag==0))
Forward(low);

}
تو این تاب های زیر اسپید رایت و اسپید لفت برا چی هستن//
اگه برا سرعتن چجوری به l298 می فهمونید اینا که فقط مقدارشون عوض می شه//
با چه دستوری به موتور می رسن //
Forward(char speed)
{
P1=0x64;
speedright = speed+10;
speedleft = speed;
delay(time);
}

TurnRight()
{
P1=0x68;
speedright = low+5;
speedleft = low;
delay(time);
}

TurnLeft()
{
P1=0x54;
speedright = low+5;
speedleft = low;
delay(time);
}
//این تابع فکر کنم الکی باشه چون تو برنامه اصلی اصلا فراخوانی نشده تابع زیرو می گم: رورس //

Reverse(char speed)
{
P1=0x58;
speedright = speed;
speedleft = speed+5;
delay(time);
}


[/cdoe[

در مورد توضیح دستوراتش هم از کجا می تونم مطلب گیر بیارم تو helpesh که نبود؟///////

mehdi_RM
11-06-2006, 13:29
برنامه ربات مسیر یاب با میکرو 8051 در c


بی زحمت اول بگید محیط برنامه نویسیش اسمش چیه؟
keil یا چیزی دیگه ای ؟؟؟؟؟؟


[code]
#include d:\mc51\8051io.h
#include d:\mc51\8051reg.h
بعد این دو خط پایینی چرا اینطوری تعریف شدن؟؟؟ //
extern register unsigned char speedleft,speedright;
register unsigned char high,low,flag,time;

main()
{
P1=0x40;
P3=0xff;
high = 80;
low = 30;
flag = 0;
time = 50;
Start();
while(1) {
P3|= 0x0f;
Run();
}
}
//***********************************************
این تابه استارت برا چی هست و چی کار می کنه؟//
نا مفهوم بود برا من //
حلقش چی کار می کنه؟//
Start()
{
char exit,key;
exit =1;
while(exit)
{
key = P1;
if((key & 0x40)==0) exit=0;
}
}
//***********************************************
تو این تابه چرا سنسور ها رو and می کنه به مقایسه ؟؟؟؟؟؟//
Run()
{
char sensors;
sensors = (P3 &=0x0f);

if((sensors & 0x01)==0) {
TurnRight();
flag = 1; }

else if((sensors & 0x08)==0) {
TurnLeft();
flag = 2; }
else if(sensors == 0x09) {
Forward(high);
flag = 0; }

else if(((sensors==0x0b)||(sensors==0x0d))&&(flag==0))
Forward(low);

}
تو این تاب های زیر اسپید رایت و اسپید لفت برا چی هستن//
اگه برا سرعتن چجوری به l298 می فهمونید اینا که فقط مقدارشون عوض می شه//
با چه دستوری به موتور می رسن //
Forward(char speed)
{
P1=0x64;
speedright = speed+10;
speedleft = speed;
delay(time);
}

TurnRight()
{
P1=0x68;
speedright = low+5;
speedleft = low;
delay(time);
}

TurnLeft()
{
P1=0x54;
speedright = low+5;
speedleft = low;
delay(time);
}
//این تابع فکر کنم الکی باشه چون تو برنامه اصلی اصلا فراخوانی نشده تابع زیرو می گم: رورس //

Reverse(char speed)
{
P1=0x58;
speedright = speed;
speedleft = speed+5;
delay(time);
}


[/cdoe[

در مورد توضیح دستوراتش هم از کجا می تونم مطلب گیر بیارم تو helpesh که نبود؟///////
__