اطلاعیه

Collapse
No announcement yet.

تعریف تابع

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تعریف تابع

    با سلام من یک متغییر را اینطوری تعریف کردم
    کد:
    unsigned int   data_7seg[3][6];
    این را میخوام ورودی تابع زیر قرار بدم اما ارور میده باید چه جوری تعریف کنم
    کد:
    [left]
    void Shift(unsigned int data_shift)
    { int i;
      for (i=0;i<8;i++)
      {
       if(data_shift & 0x01) //bit_is_set doesn’t work on unsigned int so we do this instead
         DS_high();
       else 
         DS_low(); 
             
       SH_CP_low(); 
       SH_CP_high();
       data_shift=data_shift>>1; //Now bring next bit at MSB position
      }
    }
    [/left]
    کامپایلر کدویژن

    #2
    پاسخ : تعریف تابع

    چجوری تابع را فراخوانی میکنید؟

    البته کاملا مشخصه که اون آرایه دوبعدی با نوع آرگومان تابع ناسازگاری دارد:
    آریه 18 تا unsigned int است ولی آرگومان تایع فقط 1 unsigned int است

    برمیگردم روش ارسال آرایه چندبعدی به عنوان پارامتر به تابع را توضیح میدم.

    راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
    کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
    نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
    http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
    انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

    دیدگاه


      #3
      پاسخ : تعریف تابع

      با سلام .ممنون اینطوری فراخوانی میکنم
      کد:
      shift(data_7seg[0][0]);

      دیدگاه


        #4
        پاسخ : تعریف تابع

        در رابطه با نحوه ی رد کردن یک آرایه چند بعدی به عنوان پارامتر به یک تابع میتونید کد زیر را ببینید.(اگر سوالی بود در خدمتم (البته روشهای دیگر از جمله اشاره گر هم هست )) :

        کد:
        void f(int v[][2])
        {
        	int x , y , z;
        	x=v[0][0];
        	y=v[1][0];
        	z=v[2][0];
        }
        void main()
        {
        	int x[3][2]={0};
        	x[0][0]=10;
        	x[1][0]=20;
        	x[2][0]=30;
        	f(x);
        	while(1);
        }
        فکر میکنم این کدی که گذاشتم کاملا گویا باشه ولی باز هم اگه دوست داشتید دربارش توضیح میدم( ولی راستش الان نمیرسم ، میفته بعد از ساعت 1 )
        راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
        کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
        نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
        http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
        انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

        دیدگاه


          #5
          پاسخ : تعریف تابع

          ممنون از پاسخ RubeuS

          این لینک هم میتونه کمکت کنه
          چندتا مثال داره داخلش
          http://www.macs.hw.ac.uk/~pjbk/pathw...1/node182.html

          در اینجا هم به سه روش مختلف اشاره کرده:
          http://www.tutorialspoint.com/cplusp..._functions.htm

          :read:
          1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
          2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
          3: دلا معاش چنان کن که گر بلغزد پای *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

          دیدگاه


            #6
            پاسخ : تعریف تابع

            من توابع را طبق گفته شما اصلاح کردم اما ارور میده
            کد:
            [left]
            void Shift(int data_shift[][6])
            { 
              static unsigned int i,x;
              x= data_shift[0][0];
              for (i=0;i<8;i++)
              {  
             
               if(x & 0x01) 
                 DS_high();
               else 
                 DS_low(); 
                     
               SH_CP_low(); 
               SH_CP_high();
               x=x>>1; //Now bring next bit at MSB position
              }
            } 
            
            [/left]
            کد:
            [left]
            shift(data_7seg); 
            [/left]
            کد:
            void Shift(int data_shift[][6]);
            به نحوه فراخوانی ارور میده این خط shift(data_7seg)


            دیدگاه


              #7
              پاسخ : تعریف تابع

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

              شما همون کدی که من گذاشتم را کامپایل کنید ، ببینید بدون ارور کامپایل میشه.

              باید متن ارور را بزارید:

              لطفا فقط نگید که آرایه تون از نوع unsigned int است . به تابع دادید که پارامترش از نوع int است، که ناراحت میشم :biggrin: :icon_razz:
              راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
              کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
              نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
              http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
              انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

              دیدگاه


                #8
                پاسخ : تعریف تابع

                این متن ارور Error: C:\Documents and Settings\mohammad-pc\Desktop\Software\Software\Software\Software\7SE G.c(56): undefined symbol 'shift'
                متغییر هم int تعریف شده

                دیدگاه


                  #9
                  پاسخ : تعریف تابع

                  تابعی که تعریف کردی اسمش اینه:
                  Shift
                  اما در زمان استفاده نوشتی:
                  shift
                  :eek:
                  گرفتی چی شد؟
                  با حرف بزرگ تعریف کردی
                  با حرف کوچیک استفاده کردی!
                  خب باید هم گیر بده دیگه!
                  1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
                  2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
                  3: دلا معاش چنان کن که گر بلغزد پای *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

                  دیدگاه


                    #10
                    پاسخ : تعریف تابع

                    دمت گرم حل شد

                    دیدگاه

                    لطفا صبر کنید...
                    X