NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3692 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 20 از 38

موضوع: دستوره switch

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2014
    نوشته ها
    47
    تشکر
    7
    تشکر شده 0 بار در 0 پست

    پیش فرض دستوره switch

    با سلام
    کسی می دونه دستورawitchتو کد ویزن چطوری کار می کنه؟؟؟
    در صورت امکان با چند تا مثاله کامل توضیح بدین چون مبتدیم

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر فعال amiray آواتار ها
    تاریخ عضویت
    Jul 2010
    نام
    عباس یکانلو
    نوشته ها
    351
    تشکر
    187
    تشکر شده 360 بار در 187 پست

    پیش فرض

    با سلام.
    بهتره یه مثال بزنم.
    کد:
    int a = 1;
    int b = 2;
    int c = 3;
    
    switch ( a ) {
    case b:
      // Code
      break;
    case c:
      // Code
      break;
    default:
      // Code
      break;
    }
    در مثال بالا ابتدا مقدار a با b مقایسه میشه اگه برابر بودن که دستوراتی که زیر مجموعه ی case اول اجرا میشه. و در نهایت break اجرا میشه و کلا از حلقه(switch) خارج میشه. و اگه a با c برابر باشد زیر مجموعه ی case دوم اجرا میشه.
    از این ساختار در مواقعی که بخواهیم تعداد زیادی عبارت رو با هم مقایسه کنیم استفاده میکنیم.
    لازم بهذکر است که if رو هم میشه به جای این ساختار استفاده کرد.

  4. تشکرها از این نوشته :


  5. #3
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2014
    نوشته ها
    47
    تشکر
    7
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام
    منظور از زیر مجموعه ی caseهمان برنامه هایی است که بعد caseمی نویسیم

  6. #4
    کاربر فعال amiray آواتار ها
    تاریخ عضویت
    Jul 2010
    نام
    عباس یکانلو
    نوشته ها
    351
    تشکر
    187
    تشکر شده 360 بار در 187 پست

    پیش فرض

    سلام
    منظور از زیر مجموعه ی caseهمان برنامه هایی است که بعد caseمی نویسیم
    بله همون کد هایی که بعد از case مینویسیم.

  7. #5
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2014
    نوشته ها
    47
    تشکر
    7
    تشکر شده 0 بار در 0 پست

    پیش فرض

    می شه ثوابت رو هم توضیحی در بارش بدین؟؟؟

  8. #6
    کاربر فعال amiray آواتار ها
    تاریخ عضویت
    Jul 2010
    نام
    عباس یکانلو
    نوشته ها
    351
    تشکر
    187
    تشکر شده 360 بار در 187 پست

    پیش فرض

    ثوابت مقاديري هستند كه در برنامه وجود دارند ولي قابل تغيير نيستند. براي تعريف ثوابت ب میتوان از دستور پیش پردازنده define یا دستور const استفاده کرد.
    تعریف با استفاده define
    کد:
    #define name value
    #define m 5
    با استفاده از const
    کد:
    const  data_type  const_name = value;
    
    const  int  m = 5;
    کد:
    
    
    لازم به ذکر است که حالت اول باید کنار دستورات پیش پردازنده استفاده شود.
    ویرایش توسط amiray : 28-01-2014 در ساعت 22:56

  9. تشکرها از این نوشته :


  10. #7
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2014
    نوشته ها
    47
    تشکر
    7
    تشکر شده 0 بار در 0 پست

    پیش فرض

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

  11. #8
    کاربر فعال amiray آواتار ها
    تاریخ عضویت
    Jul 2010
    نام
    عباس یکانلو
    نوشته ها
    351
    تشکر
    187
    تشکر شده 360 بار در 187 پست

    پیش فرض

    ممنون
    یه مشکل دیگه ,می شه درباره ی ریجیستر های کاری هم یه توضیحی بدین که چطوری کار میکنن و باهاشون چی کار می شه کرد؟؟
    با سلام.
    دوست عزیز شما میتوانید با سرچ در خور خود سایت یا اینترنت توضیحات کاملی رو در این باره بدست بیاورید.
    بازماگه در هر جایی به مشکل برخوردید در انجمن مطرح کنید.
    یه سری هم به منابع اموزشی avr بزنید.

  12. #9
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2014
    نوشته ها
    47
    تشکر
    7
    تشکر شده 0 بار در 0 پست

    پیش فرض

    بله دوست عزیز حق با شماست منم اول خوندم از کتاب اقای سپاس یارمتوجه نشدم الان دارم می پرسم
    اگه می شه درباره ی رجیستر های کاری یه توضیحی بدین؟؟
    ممنون

  13. #10
    کاربر فعال amiray آواتار ها
    تاریخ عضویت
    Jul 2010
    نام
    عباس یکانلو
    نوشته ها
    351
    تشکر
    187
    تشکر شده 360 بار در 187 پست

    پیش فرض

    دوست عزیز لطفا به این لینک سر بزنید. توضیحاتی در این باره داره به خاطر زیاد بودن توضیح نمیتونم مطلب رو بنویسم برا همین لینک میدم اگه هم مشکلی داشتید اینجا بیان کنید که دقیقا کجاش مشکل دارین.
    قسمت 1
    قسمت 2

  14. #11
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2014
    نوشته ها
    47
    تشکر
    7
    تشکر شده 0 بار در 0 پست

    پیش فرض

    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؟؟

  15. #12
    ناظم انجمن Ma3ood آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    مسعود
    نوشته ها
    2,248
    تشکر
    1,912
    تشکر شده 3,087 بار در 1,509 پست

    پیش فرض

    دوست عزیز یه کوچولو دقت کن!
    نوشته دستور if که استفاده کردی مشکل داره ! حالا به نظرت خودت مشکلی در اون خط نمی بینی ؟

  16. #13
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2014
    نوشته ها
    47
    تشکر
    7
    تشکر شده 0 بار در 0 پست

    پیش فرض

    نقل قول نوشته اصلی توسط Ma3ood نمایش پست ها
    دوست عزیز یه کوچولو دقت کن!
    نوشته دستور if که استفاده کردی مشکل داره ! حالا به نظرت خودت مشکلی در اون خط نمی بینی ؟
    ابته تو برنامه درست نوشتم که اینجوریه
    کد:
     if(PIND.0==0)
    DDRD.1=1;
    PORTD.1=1;
    else
    DDRD.1=0;
    PORTD.1=0

    این ارور واسه چیه؟؟

  17. #14
    ناظم انجمن Ma3ood آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    مسعود
    نوشته ها
    2,248
    تشکر
    1,912
    تشکر شده 3,087 بار در 1,509 پست

    پیش فرض

    کدوم ارور؟
    در مورد برنامه تون باید توصیه کنم یه کتاب اموزش میکروبگیرید و با اون کار کنید .
    خط اول درست
    خط دوم به رجیستر DDR یه بار قبل از حلقه اصلی while مقدار بدی کافیه
    پس برنامه ات میشه
    کد:
    main(){
    DDRD=0x02;
    
    if(PIND.0==0)
    PORTD.1=1;
    else
    PORTD.1=0;
    این برنامه تا زمانی که پین صفرم پورت D صفر بشه ( قبلش با یه مقاومت 4.7 تا 10 کیلو پول آپ کن) خروجی 1 میشه و با برداشتن شدن سطح منطقی صفر از پین خروجی صفر

  18. #15
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2014
    نوشته ها
    47
    تشکر
    7
    تشکر شده 0 بار در 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
    می خواستم ببینم از چشه که این ارور رو میده؟؟؟

  19. #16
    کاربر فعال amiray آواتار ها
    تاریخ عضویت
    Jul 2010
    نام
    عباس یکانلو
    نوشته ها
    351
    تشکر
    187
    تشکر شده 360 بار در 187 پست

    پیش فرض

    نقل قول نوشته اصلی توسط m.tahere نمایش پست ها
    کد:
    #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 رو ببندید.
    کد:
    #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;
         }
    
       }
    }
    البته دوتا آکولاد برای حلقه های if ضروری نیست چون فقط یه دستور داخل حلقه هست. و اگه بیش از یکی باشه حتما باید استفاده بشه.

  20. #17
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2014
    نوشته ها
    47
    تشکر
    7
    تشکر شده 0 بار در 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;
     delay_ms(100);
     PORTD.0=0; }
     else
     PORTD.0=0;
      
    }
    }
    مگه تو این برنامه نباید ال ای دی که به PORTD.0وصله بعد ار 100میلی ثانیه که کلید زده شد بسته بشه

  21. #18
    ناظم انجمن Ma3ood آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    مسعود
    نوشته ها
    2,248
    تشکر
    1,912
    تشکر شده 3,087 بار در 1,509 پست

    پیش فرض

    برنامه هاتون اشکالات پایه ای دارند !!!!
    منبع یادگیری شما چیه؟

  22. #19
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2014
    نوشته ها
    47
    تشکر
    7
    تشکر شده 0 بار در 0 پست

    پیش فرض

    اشکالاشو می شه بگین؟؟

  23. #20
    ناظم انجمن Ma3ood آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    مسعود
    نوشته ها
    2,248
    تشکر
    1,912
    تشکر شده 3,087 بار در 1,509 پست

    پیش فرض

    پست شماره 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;
      
    }
    }

صفحه 1 از 2 12 آخرینآخرین

موضوعات مشابه

  1. دستور ارسال کاراکتر در spi با میکرو arm
    توسط Niloufar.Male در انجمن AT91 series (ATMEL)
    پاسخ: 6
    آخرين نوشته: 25-10-2013, 23:20
  2. analog audio switch
    توسط abolfazld در انجمن الکترونیک
    پاسخ: 8
    آخرين نوشته: 05-11-2012, 10:49
  3. پاسخ: 2
    آخرين نوشته: 29-04-2010, 21:23
  4. Touch Switch
    توسط arsalan681 در انجمن طراحی و ساخت و آزمایش مدارت الکترونیک
    پاسخ: 1
    آخرين نوشته: 26-01-2010, 00:42
  5. کمک در مورد دستورات lcd
    توسط imported_oraghi در انجمن AVR
    پاسخ: 0
    آخرين نوشته: 25-07-2009, 15:06

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •