اطلاعیه

Collapse
No announcement yet.

مشکل در مورد ایجاد آرایه

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

    مشکل در مورد ایجاد آرایه

    سلام
    من به زبان c در کامپایلر کدویژن یک برنامه ای برای یک پروژه ای دارم مینویسم ! اما به مشکل خوردم !
    من تعدادی سنسور مادون قرمز دارم ! یا تعدادی ورودی 0 و 1 به میکرو دارم , میخوام هر موقع هر کدوم از این ورودی ها 1 شدند ریخته شه توی یک متغیر یک بیتی نظری خودش ! مثلا پورت اول ریخته شه تو متغیر یک بیتی اول !
    و البته باید از آرایه استفاده کنم , من اومدم یک آرایه از جنس bit به طور عمومی درست کردم ! اما برنامه رو ک کامپایل میکنم خطا میده ! خطاش هم اینه که من ; نزاشتم و میره رو خط همین آرایه ! اما وقتی یک به صورت یک متغیر معمولی از جنس بیت تعریف میکنم خطا نمیده ! یا همون آرایه از جنس char یا int تعریف میکنم خطا نمیده !
    بعد اومدم تعدادی متغیر از جنس bit به جای همون آرایه تعریف کردم اما بازم خطا میده ! و خطای این دفه اینه :

    Error: 2.c(66): too many global/static 'bit' variables

    این دفعه به 2 تا static bit که توی تابع اورفلو تایمر 0 و 2 میکروی mega32 که تعریف کردم همین خطا رو میده ! به bit معمولی و عمومی ک تعریف کردم هم همسن خطا رو میده !

    احتمالا یک سوتی بسیار تابلویی دادم ک خودم متوجه نیستم ! دوستان کمک کنید

    ممنون
    « با هر دستی بدی , با همان دست پس خواهی گرفت »
    این جمله رو فراموش نکن

    #2
    پاسخ : مشکل در مورد ایجاد آرایه

    سلام.
    دوست عزیز شما با تعریف bit مثل :
    کد:
    bit a;
    فقط یک متغییر از جنس bit را تعریف کرده اید که توانایی پذیرفتن دو حالت 0 و یا 1 را دارد.اما در مورد موضوع آرایه شما می توانید یک آرایه به صورت زیر تعریف کنید:
    کد:
    char salam[20]={12,21,....,32};
    امیدوارم مشکل تون حل بشه ولی بازم اگر سوالی بود بگید تا کمک تون کنم.

    دیدگاه


      #3
      پاسخ : مشکل در مورد ایجاد آرایه

      نوشته اصلی توسط mansoor zahedipour
      سلام.
      دوست عزیز شما با تعریف bit مثل :
      کد:
      bit a;
      فقط یک متغییر از جنس bit را تعریف کرده اید که توانایی پذیرفتن دو حالت 0 و یا 1 را دارد.اما در مورد موضوع آرایه شما می توانید یک آرایه به صورت زیر تعریف کنید:
      کد:
      char salam[20]={12,21,....,32};
      امیدوارم مشکل تون حل بشه ولی بازم اگر سوالی بود بگید تا کمک تون کنم.
      میدونم
      من میخوام یک آرایه از جنس bit درست کنم !
      یعنی یک آرایه 10 تایی از جنس یک متغیر یک بیتی درست کنم ! که تو هر آرگومان آرایه یک مقدار سنسور رو بریزم ! مقدار سنسورم هم یا 0 هست یا 1 ! برای همین یک میخوام هر سنسورو تو یک متغیر یک بیتی بریزم ! و نیاز به آرایه دارم ! و کد ویژن به این خط ارور میده :
      کد:
      bit Sen[];  or  bit AB[10];
      « با هر دستی بدی , با همان دست پس خواهی گرفت »
      این جمله رو فراموش نکن

      دیدگاه


        #4
        پاسخ : مشکل در مورد ایجاد آرایه

        نوشته اصلی توسط Amir_Eshraghi
        میدونم
        من میخوام یک آرایه از جنس bit درست کنم !
        یعنی یک آرایه 10 تایی از جنس یک متغیر یک بیتی درست کنم ! که تو هر آرگومان آرایه یک مقدار سنسور رو بریزم ! مقدار سنسورم هم یا 0 هست یا 1 ! برای همین یک میخوام هر سنسورو تو یک متغیر یک بیتی بریزم ! و نیاز به آرایه دارم ! و کد ویژن به این خط ارور میده :
        کد:
        bit Sen[];  or  bit AB[10];
        دوست عزیز شما به نوشته من دقت نکردید.bit ماهیت تکی دارد و شما نمی توانید عنصری از جنس بیت به شکل آرایه ای تعریف کنید.شما می توانید به این صورت عمل کنیدکه یک متغیر آرایه ای از جنس char تعریف کنید و اون مقدار صفر یا یک بودن رو داخل خونه های اون بریزید و هر وقت که می خواهید آن را بخوانید.کد شما می تواند به این صورت باشد.
        تعریف متغییر:
        کد:
        char sensors[10];
        نحوه ریختن دیتای یک سنسور داخل آرایه.مثلا سنسور 1 کار کرده و شما می خواهید که آرایه مربوط به این سنسور مقدارش یک شود.
        کد:
        sensors[1]=1;
        نحوه صفر کردن این آرایه که مربوط به همان سنسور 1 است:
        کد:
        sensors[1]=0;
        وهمین طور برای سنسور های دیگر می توانید از خانه های دیگر همین آرایه استفاده کنید.مثلا برای 1 و 0 شدن سنسور 2 از خانه شماره 2 این آرایه استفاده کنید:
        کد:
        sensors[2]=1;
        حال مثلا می خواهید با 1 شدن سنسور 1 خروجی PORTA.0 برابر 1 شود.
        کد:
        if(sensors[1]==1){PORTA.0=1;}
        ولی اگر می خواهید که حتما به صورت بیت کار کنید می توانید 10 بیت را جداگانه تعریف کنید که روش آرایه ای نیست:
        کد:
        bit sen1,sen2,......,sen10;
        لطفا در تحلیل برنامه دقت کنید

        دیدگاه


          #5
          پاسخ : مشکل در مورد ایجاد آرایه

          نوشته اصلی توسط mansoor zahedipour
          دوست عزیز شما به نوشته من دقت نکردید.bit ماهیت تکی دارد و شما نمی توانید عنصری از جنس بیت به شکل آرایه ای تعریف کنید.شما می توانید به این صورت عمل کنیدکه یک متغیر آرایه ای از جنس char تعریف کنید و اون مقدار صفر یا یک بودن رو داخل خونه های اون بریزید و هر وقت که می خواهید آن را بخوانید.کد شما می تواند به این صورت باشد.
          تعریف متغییر:
          کد:
          char sensors[10];
          نحوه ریختن دیتای یک سنسور داخل آرایه.مثلا سنسور 1 کار کرده و شما می خواهید که آرایه مربوط به این سنسور مقدارش یک شود.
          کد:
          sensors[1]=1;
          نحوه صفر کردن این آرایه که مربوط به همان سنسور 1 است:
          کد:
          sensors[1]=0;
          وهمین طور برای سنسور های دیگر می توانید از خانه های دیگر همین آرایه استفاده کنید.مثلا برای 1 و 0 شدن سنسور 2 از خانه شماره 2 این آرایه استفاده کنید:
          کد:
          sensors[2]=1;
          حال مثلا می خواهید با 1 شدن سنسور 1 خروجی PORTA.0 برابر 1 شود.
          کد:
          if(sensors[1]==1){PORTA.0=1;}
          ولی اگر می خواهید که حتما به صورت بیت کار کنید می توانید 10 بیت را جداگانه تعریف کنید که روش آرایه ای نیست:
          کد:
          bit sen1,sen2,......,sen10;
          لطفا در تحلیل برنامه دقت کنید
          آها
          ممنون بابت راهنمایی ! از خیر متغیره گذشتم !
          من ب 22 بیت نیزا دارم و 22 بیت جداپانه ک تعریف میکنم ارور میده ! نمیدونم چرا !
          البته فعلا از CHAR استفاده میکنم ! تا ببینم باز کارم گیر میکنه یا نه
          ممنون
          « با هر دستی بدی , با همان دست پس خواهی گرفت »
          این جمله رو فراموش نکن

          دیدگاه


            #6
            پاسخ : مشکل در مورد ایجاد آرایه

            برنامه را قرار دهید . :smile:
            باد می وزد ...
            میتوانی در مقابلش هم دیوار بسازی ، هم آسیاب بادی
            تصمیم با تو است ...

            دیدگاه


              #7
              پاسخ : مشکل در مورد ایجاد آرایه

              نوشته اصلی توسط ATROBOT
              برنامه را قرار دهید . :smile:
              ب زودی
              « با هر دستی بدی , با همان دست پس خواهی گرفت »
              این جمله رو فراموش نکن

              دیدگاه

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