اطلاعیه

Collapse
No announcement yet.

میشه بیت هارو تکی انتخاب کرد PORTD.x=0

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

    میشه بیت هارو تکی انتخاب کرد PORTD.x=0

    سلام دوستان امیدوارم حالتون خوب باشه .

    میخواستم بدونم آیا میشه بیت هارو تکی انتخاب کرد یعنی ایکس یه متغیر باشه .

    PORTD.x=0

    من این دستورو مینویسم اما کدویژن ازم خطا میگیره معادل کد برای این کاری که میخوام انجام بدم چی ؟

    من انتظار دام مثلا هر چی تو یه آرایه ریختم جلوی یه پرت قرار بگیره اما کدویژن ازم خطا میگیره چطور میتونم این کارو کنم ؟

    unsigned char xprim[8]={1,1,1,1,1,1,1,1};

    PORTD=xprim;

    با تشکر فراوان.

    @};- @};- @};-
    I'm going to
    RWTH Aachen
    University

    #2
    پاسخ : میشه بیت هارو تکی انتخاب کرد PORTD.x=0

    یک سوال دیگه هم این که چطور میشه ار طریق ریجستر بدون تغیر دادن مقدار بیت های دیگه مقدار یه بیت رو تغیر داد ؟

    مثلا برای 1 کردن بیت 7 پورت دی چی کار میتونیم کنیم که مقدار پایه های دیگه بهم نریزه .

    PORTD=0b10000000 من میخوام فقط اون بیتم روخاموش روشن کنم . اما از طریق ریجستر .

    آیا امکانش هست ؟
    I'm going to
    RWTH Aachen
    University

    دیدگاه


      #3
      پاسخ : میشه بیت هارو تکی انتخاب کرد PORTD.x=0

      نوشته اصلی توسط azadfalah
      سلام دوستان امیدوارم حالتون خوب باشه .

      میخواستم بدونم آیا میشه بیت هارو تکی انتخاب کرد یعنی ایکس یه متغیر باشه .

      PORTD.x=0

      من این دستورو مینویسم اما کدویژن ازم خطا میگیره معادل کد برای این کاری که میخوام انجام بدم چی ؟

      من انتظار دام مثلا هر چی تو یه آرایه ریختم جلوی یه پرت قرار بگیره اما کدویژن ازم خطا میگیره چطور میتونم این کارو کنم ؟

      unsigned char xprim[8]={1,1,1,1,1,1,1,1};

      PORTD=xprim;

      با تشکر فراوان.

      @};- @};- @};-
      سلام عزیزم
      بله باید خطا بگیره نمی تونی یک رشته بریزی روی یک پورت که ببین یک رشته هرعضوش 8بیته
      مثلا رشته زیر
      str[5] ={5,6,7,8,9,}; a
      این بعنی رشته ای که 5عضو دارد وهرعضوش 8بیتی است البته اگررشته ات را از نوع charتعریف کرده باشی
      پس اگرمی خواهی یک چیزی بریزی روی پورت باید به شکل زیر باشه
      PORTD=xprim[2]; v
      یعنی اینکه عضو 3 ام رشته ی xprim الان می ریزه روی پورت شما
      اگر برفرض عدد سه مین عضو شما 152 باشد ترتیب پایه ها می شه ازچپ بیت کم ارزش است
      10011000
      موفق باشید
      Ali Reza Tarkesh Esfahani

      Yahoo: amt_1390@yahoo.com

      دیدگاه


        #4
        پاسخ : پاسخ : میشه بیت هارو تکی انتخاب کرد PORTD.x=0

        نوشته اصلی توسط azadfalah
        یک سوال دیگه هم این که چطور میشه ار طریق ریجستر بدون تغیر دادن مقدار بیت های دیگه مقدار یه بیت رو تغیر داد ؟

        مثلا برای 1 کردن بیت 7 پورت دی چی کار میتونیم کنیم که مقدار پایه های دیگه بهم نریزه .

        PORTD=0b10000000 من میخوام فقط اون بیتم روخاموش روشن کنم . اما از طریق ریجستر .

        آیا امکانش هست ؟
        بله عزیزم اگه می خواهی باید برای صفر کردن اون بیت مورد نظر عملیات & را انجام بدی مثلا با (0b11110111) الان بیت چهارم صفر می شود
        برای یک کردن هم عملیات | (or) انجام بدی مثلا(0b00001000) به همین راحتی بیت چهارم یک می شود
        Ali Reza Tarkesh Esfahani

        Yahoo: amt_1390@yahoo.com

        دیدگاه


          #5
          پاسخ : پاسخ : میشه بیت هارو تکی انتخاب کرد PORTD.x=0

          نوشته اصلی توسط Ali Chiefer
          بله عزیزم اگه می خواهی باید برای صفر کردن اون بیت مورد نظر عملیات & را انجام بدی مثلا با (0b11110111) الان بیت چهارم صفر می شود
          برای یک کردن هم عملیات | (or) انجام بدی مثلا(0b00001000) به همین راحتی بیت چهارم یک می شود

          lمرسی دوست عزیز من دقیقا متوجه نمشدم ممکنه یه مثال بزنید ؟

          من میدونم بیت چارم یک و صفر میشه . اما تمام بیت های دیگه هم صفر میشن . درسته ؟
          I'm going to
          RWTH Aachen
          University

          دیدگاه


            #6
            پاسخ : پاسخ : میشه بیت هارو تکی انتخاب کرد PORTD.x=0

            نوشته اصلی توسط azadfalah

            lمرسی دوست عزیز من دقیقا متوجه نمشدم ممکنه یه مثال بزنید ؟

            من میدونم بیت چارم یک و صفر میشه . اما تمام بیت های دیگه هم صفر میشن . درسته ؟
            نه عزیزم نمی شوند توی and بقیه بیت ها می مونه همون مقدار قبلی
            برای اینکه یک بیت را صفرکنید از and استفاده کنید
            برای اینکه یک بیت را یک کنید از orتست کنید بقیه بیت ها به حالت خود باقی می مونند شما کدش بنویس قرار بده تامشکلت حل کنم گلم :rolleyes:
            Ali Reza Tarkesh Esfahani

            Yahoo: amt_1390@yahoo.com

            دیدگاه


              #7
              پاسخ : میشه بیت هارو تکی انتخاب کرد PORTD.x=0

              اگر یک مثال بزنید که چطور با اند اور رجیستر رو تغیر میدین عالی میشه .


              با تشکر
              I'm going to
              RWTH Aachen
              University

              دیدگاه


                #8
                پاسخ : پاسخ : میشه بیت هارو تکی انتخاب کرد PORTD.x=0

                نوشته اصلی توسط Ali Chiefer
                نه عزیزم نمی شوند توی and بقیه بیت ها می مونه همون مقدار قبلی
                برای اینکه یک بیت را صفرکنید از and استفاده کنید
                برای اینکه یک بیت را یک کنید از orتست کنید بقیه بیت ها به حالت خود باقی می مونند شما کدش بنویس قرار بده تامشکلت حل کنم گلم :rolleyes:
                اگ اطلاعات دارید خیلی ممنون میشم جواب بدین لطفا به صورت کامل جواب بدین و دورا دور اشاره نکنید . من برای رسیدن به جواب قطعی پست زدم .

                دوستان دیگه لطفا کمک کنید من سردر گمم
                I'm going to
                RWTH Aachen
                University

                دیدگاه


                  #9
                  پاسخ : میشه بیت هارو تکی انتخاب کرد PORTD.x=0

                  دوست عزیز اول باید شما در مورد عمل OR کامل مطلع باشی. عملگر OR عملگری هست که اگر یکی از بیت ها یک باشه نتیجه یک میشه.حالا با این پیش زمینه به عبارت زیر توجه کن:
                  PORTB= PORTB | 0b00001000

                  در این مثال فقط یک بیت یعنی بیت سوم یک هست و ما بقی صفر هستند. با توجه به عملکرد OR در این حالت بدون توجه به مقدار قبلی متغیر بیت سوم یک میشه و مابقی هر چی باشن تغییری نمیکنن چون اگر یک باشن دوباره با صفر OR میشن و یک میشن و اگر هم صفر باشن که با صفر OR بشه نتیجه صفر میشه.
                  برای Toggle کردن یک بیت هم از XOR استفاده میشه. مثل زیر:
                  PORTB = PORTB ^ 0b00001000

                  در این حالت با هر بار اجرای این دستور مقدار قبلی Not میشه.
                  در کل برای درک مباحث دیجیتال باید شما از زیربنا یعنی گیت های دیجیتال مطلع باشین تا بعدا دچار مشکل نشین.
                  موفق باشین
                  Aristar Group - Always And Forever

                  دیدگاه


                    #10
                    پاسخ : میشه بیت هارو تکی انتخاب کرد PORTD.x=0

                    مرسی دوست عزیز من تا حدودی دیجیتال بلدم و اند اور رو میدونم .

                    اما چیزی که نمیدونستم دستورات زبان سی بود که برای رجیستر این کارو میکرد .

                    تشکر .
                    I'm going to
                    RWTH Aachen
                    University

                    دیدگاه

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