با سلام
کسی می دونه دستورawitchتو کد ویزن چطوری کار می کنه؟؟؟
در صورت امکان با چند تا مثاله کامل توضیح بدین چون مبتدیم
با سلام
کسی می دونه دستورawitchتو کد ویزن چطوری کار می کنه؟؟؟
در صورت امکان با چند تا مثاله کامل توضیح بدین چون مبتدیم
با سلام.
بهتره یه مثال بزنم.
در مثال بالا ابتدا مقدار a با b مقایسه میشه اگه برابر بودن که دستوراتی که زیر مجموعه ی case اول اجرا میشه. و در نهایت break اجرا میشه و کلا از حلقه(switch) خارج میشه. و اگه a با c برابر باشد زیر مجموعه ی case دوم اجرا میشه.کد:int a = 1; int b = 2; int c = 3; switch ( a ) { case b: // Code break; case c: // Code break; default: // Code break; }
از این ساختار در مواقعی که بخواهیم تعداد زیادی عبارت رو با هم مقایسه کنیم استفاده میکنیم.
لازم بهذکر است که if رو هم میشه به جای این ساختار استفاده کرد.
سلام
منظور از زیر مجموعه ی caseهمان برنامه هایی است که بعد caseمی نویسیم
بله همون کد هایی که بعد از case مینویسیم.سلام
منظور از زیر مجموعه ی caseهمان برنامه هایی است که بعد caseمی نویسیم
می شه ثوابت رو هم توضیحی در بارش بدین؟؟؟
ثوابت مقاديري هستند كه در برنامه وجود دارند ولي قابل تغيير نيستند. براي تعريف ثوابت ب میتوان از دستور پیش پردازنده define یا دستور const استفاده کرد.
تعریف با استفاده define
با استفاده از constکد:#define name value#define m 5کد:const data_type const_name = value; const int m = 5;لازم به ذکر است که حالت اول باید کنار دستورات پیش پردازنده استفاده شود.کد:
ویرایش توسط amiray : 28-01-2014 در ساعت 22:56
ممنون
یه مشکل دیگه ,می شه درباره ی ریجیستر های کاری هم یه توضیحی بدین که چطوری کار میکنن و باهاشون چی کار می شه کرد؟؟
با سلام.ممنون
یه مشکل دیگه ,می شه درباره ی ریجیستر های کاری هم یه توضیحی بدین که چطوری کار میکنن و باهاشون چی کار می شه کرد؟؟
دوست عزیز شما میتوانید با سرچ در خور خود سایت یا اینترنت توضیحات کاملی رو در این باره بدست بیاورید.
بازماگه در هر جایی به مشکل برخوردید در انجمن مطرح کنید.
یه سری هم به منابع اموزشی avr بزنید.
بله دوست عزیز حق با شماست منم اول خوندم از کتاب اقای سپاس یارمتوجه نشدم الان دارم می پرسم
اگه می شه درباره ی رجیستر های کاری یه توضیحی بدین؟؟
ممنون
if (PIND.0)==0
DDRD.1=1;
PORTD.1=1
else
DDRD.1=0;
PORTD.1=0;
این ارورو می ده از چیشه Error: C:\Users\lovely emperor\Desktop\codevision\port\port.c(12): no matching if؟؟
دوست عزیز یه کوچولو دقت کن!
نوشته دستور if که استفاده کردی مشکل داره ! حالا به نظرت خودت مشکلی در اون خط نمی بینی ؟
کدوم ارور؟
در مورد برنامه تون باید توصیه کنم یه کتاب اموزش میکروبگیرید و با اون کار کنید .
خط اول درست
خط دوم به رجیستر DDR یه بار قبل از حلقه اصلی while مقدار بدی کافیه
پس برنامه ات میشه
این برنامه تا زمانی که پین صفرم پورت D صفر بشه ( قبلش با یه مقاومت 4.7 تا 10 کیلو پول آپ کن) خروجی 1 میشه و با برداشتن شدن سطح منطقی صفر از پین خروجی صفرکد:main(){ DDRD=0x02; if(PIND.0==0) PORTD.1=1; else PORTD.1=0;
این برنامه منه خوبکد:#include <mega8.h> #include <delay.h> void main () { while (1){ DDRD.0=1; DDRD.1=0;PORTD.1=1; if(PIND.1==0) { PORTD.0=1; else if(PIND.1==1){ PORTD.0=0; } } } }
این ارورو می دهError: C:\Users\lovely emperor\Desktop\codevision\port\port.c(12): no matching if
می خواستم ببینم از چشه که این ارور رو میده؟؟؟
دوست عزیز شما اصلا حوزه های حلقه هاتون درست نیستن.
ببینید شما یه if دارید و باید اون حلقه تموم بشه تا بتونید از else استفاده کنید. شما باید قبل از این که else رو بنویسید حلقه if رو ببندید.
البته دوتا آکولاد برای حلقه های if ضروری نیست چون فقط یه دستور داخل حلقه هست. و اگه بیش از یکی باشه حتما باید استفاده بشه.کد:#include <mega8.h> #include <delay.h> void main () { while (1){ DDRD.0=1; DDRD.1=0; PORTD.1=1; if(PIND.1==0) { PORTD.0=1;} else if(PIND.1==1){ PORTD.0=0; } } }
مگه تو این برنامه نباید ال ای دی که به PORTD.0وصله بعد ار 100میلی ثانیه که کلید زده شد بسته بشهکد:#include <mega8.h> #include <delay.h> void main () { while (1){ DDRD.0=1; DDRD.1=0; PORTD.1=1; if(PIND.1==0) { PORTD.0=1; delay_ms(100); PORTD.0=0; } else PORTD.0=0; } }
برنامه هاتون اشکالات پایه ای دارند !!!!
منبع یادگیری شما چیه؟
اشکالاشو می شه بگین؟؟
پست شماره 14 را شما مطالعه کردی؟
استاندارد برنامه تون به بیان دقیق تر و واضح تر میشه این
کد:#include <mega8.h> #include <delay.h> void main () { DDRD.0=1; //PIND.0 SET OUT DDRD.1=0; //PIND.1 SET IN PORTD.1=1;//PULL UP while (1){ if(PIND.1==0) { PORTD.0=1; delay_ms(100); } else PORTD.0=0; } }