PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشكل دربرنامه نويسي



منصوره$
06-09-2010, 16:43
سلام ،من قبلا سوالمو فرستاده بودم ولي الان مي بينم كه نيست براي همين دوباره ميفرستم من يه برنامه نوشتم به اين صورت كه 48 رديف داشته باشه و سه تا ستون به اين ترتيب كه ستون اول زمان نشون بده ستون دوم مربوط به كانال هاي adc از كانال 0 تا كانال 8 باشه ة وبرنامه من اين طور كار ميكنه كه هر نيم ساعت يكبار مقدار خروجي اين كانال ها رو ميخونه و مقدارشونو روي lcd نشون بده ولي برنامه اي كه نوشتم error هاي زيرو ميده در ضمن برنامه رو هم پيوست مي كنم ،خواهش مي كنم كه كمكم كنيد . ممنون
project.c(17): error: #65: expected a ";"
project.c(17): error: #29: expected an expression
project.c(17): error: #65: expected a ";"
project.c(19): error: #65: expected a ";"
project.c(19): error: #29: expected an expression
project.c(19): error: #65: expected a ";"
project.c(54): error: #29: expected an expression

farzadsw
07-09-2010, 04:06
یه اشتباه کوچیک کردید .همون طور که خود ارور هم گفته ، تو تعریف حلقه های for باید از ; (سمی کلن) استفاده کنید نه , .

منصوره$
07-09-2010, 12:32
خيلي خيلي ممنون از كمكتون ،يه سوال ديگه من تابع time كه تعريف كردم مي خوام ساعت،دقيقه،ثانيه براي من برگردونه براي همين داخل پرانتز return بايد چي بزارم چون كه براي اون ديگه فقط error ميده.
project.c(54): error: #29: expected an expression
بازم ممنون

farzadsw
08-09-2010, 03:06
تو برنامه ای که گذاشتید تابع time نباید چیزی رو برگردونه. برگدونه تا کجا استفاده بشه ؟
اون ارور هم برای این هست که داخل پرانتز return باید متغییر با عدد بگذارید نه کلمه کلیدی int ، مثلا بگذارید return(1) ارور نمیده.

منصوره$
15-09-2010, 17:33
سلام
من توي اين برنامه اي كه نوشتم مي خوام زمان هم ببينم ولي وقتي برنامه رو پروگرام مي كنم ساعت من كار نمي كنه(فقط همون زماني كه اول تنظيم كردم نشون ميده) ، اشكال توي برنامه اي كه نوشتتم نمي دونم چطوري بايد از تابع time و در كجا استفاده كنم تا مشكل حل بشه.اگه منو راهنمايي كنيد خيلي ممنون ميشم.به كمكتون خيلي نياز دارم.

منصوره$
15-09-2010, 23:47
سلام
كسي به من كمك نمي كنه؟خيلي به راهنماييتون احتياج دارم:unh:

1nafar
26-09-2010, 12:52
سلام
اگه مقدار به برنامه ای که نوشتید دقت کنید ، مشاهده میکنید که :

while(1)
{
int time();
قبل از این دستورات مواردی مثل adc و lcd پیکربندی شده که من پیشنهاد میکنیم از آخرین ورژن های هدر ارائه شده در مجلات 2 و3 ( ویرایش دوم ) استفاده کنید . ( البته در اینجا این بخش مشکلی نداره )
بعد از این دستورات چند تا دستور دیگه وجود داره که مقدار یک کانال از adc رو میخونه و ...
اما دستور int time() :
با این دستور تابعی به نام int time فراخوانی میشه . در این تابع یک حلقه ی بینهایت while وجود داره که cpu به اون میره و دستورات زیر رو اجرا میکنه و با دستور return از اون خارح میشه و به حلقه ی اصلی برمیگره :

int time(void)
{
while(1)
{
delay_ms(999);
sec++;
if (sec==60)
{
min++,sec=0;
}
if (min==60)
{
hur++,min=0;
}
if (hur==24)
{
hur=0;
}
lcd_gotoxy(1,1);
lcd_putsf(" : : ");
lcd_puts(hur);
lcd_gotoxy(1,4);
lcd_puts(min);
lcd_gotoxy(1,7);
lcd_puts(sec);
return(1);
}
}

در برنامه بالا نیازی به حلقه ی while نبود و... . با برگشتن cpu به حلقه ی اصلی دستور start_adc(); اجرا میشه تا adc فعال بشه و در نهایت cpu برای 1800 ثانیه در حلقه ی زیر گیر میکنه و دیگه به تابع int time شما نمیره تا زمان رو تغییر بده و اینجاست که :

وقتي برنامه رو پروگرام مي كنم ساعت من كار نمي كنه(فقط همون زماني كه اول تنظيم كردم نشون ميده)

for(j=0 ;j<48 ;j++);
{
for (i=0 ;i<8;i++);
{
a=read_adc(i);
lcd_gotoxy(2,i);
lcd_puts(a);
delay_s(60);
}
delay_s(1800);
}
برای رفع کردن اشکال فوق کافیه دستور int time(); را از مکان قعلیش کات کنید و به زیر دستور lcd_puts(a); منتقل نمایید . در این حالت مشکل رفرش زمان حل میشه .