اطلاعیه

Collapse
No announcement yet.

سوال در مورد چگونگی ذخیره کردن بیت های یک بایت در متغیرهای جداگانه

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

    سوال در مورد چگونگی ذخیره کردن بیت های یک بایت در متغیرهای جداگانه

    سلام دوستان
    من یک عدد 8 بیتی به عنوان ورودی دریافت میکنم حالا میخوام هرکدام از این بیتها برطبق ارزشش آن ورودی و خروجی ها را HIGH یا LOW کند.
    بطور مثال عدد 11001010 اگر وارد شود از راست به چپ بیت اول مربوط به پین دو و آن را LOW کند، بیت بعدی مربوط به پین 3 و آن را HIGH کند بیت سوم مربوط به پین چهارم و آن را صفر کند والی اخر.. باید از دستورات شیفت استفاده کنم؟؟ توی آردینو به چه صورت هست این دستورات؟
    شما چه روشی پیشنهاد میدید؟
    ممنون میشم راهنمایی کنید یا بگید چه مبحثی رو باید مطالعه کنم تازه برنامه نویسی رو شروع کردم
    جدیدترین ویرایش توسط rezayazdanish; ۱۴:۳۶ ۱۳۹۶/۰۵/۱۷.

    #2
    پاسخ : سوال در مورد چگونگی ذخیره کردن بیت های یک بایت در متغیرهای جداگانه

    خیلی ساده، توان های دو رو در نظر بگیر:
    1
    10
    100
    1000
    .
    .
    .
    کافیه عددی رو که دریافت می کنی با توان های مختلف 2 AND (&) کنی، اگر حاصل صفر شد یعنی اون بیت صفر بوده، اگر حاصل یک شد یعنی اون بیت خاص یک بوده.

    دیدگاه


      #3
      پاسخ : سوال در مورد چگونگی ذخیره کردن بیت های یک بایت در متغیرهای جداگانه

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

      دیدگاه


        #4
        پاسخ : سوال در مورد چگونگی ذخیره کردن بیت های یک بایت در متغیرهای جداگانه

        این تکه کد برای زبان C هست و در کد ویژن قابل کامپایل چرا پستم پاک شد؟؟؟؟؟؟ دوباره می نویسم.


        unsigned int i, j;

        j=1;

        for(i=0;i<8;i++) {

        if(j& target_register ==1) {

        // here
        }

        j =*2 ;

        }



        این حلقه ی ساده، دونه دونه ی بیت های متغیر مورد نظرت (فرض کردم هشت بیتیه، میتونه بیشتر باشه ) رو بررسی می کنه، و اگر یکیشون 1 بود، وارد اون if میشه


        خب ، حالا دوباره می رسیم به مقدار دادن به یک پورت که کار خیلی ساده ای هست.


        DDRC=0xFF;

        PORTC=17;
        //0b00010001

        PORTC=0x0a;
        //0b00001010

        PORTC=0b00110011;

        PORTC=0b11001010;

        PORTC=c;


        اینا هم انواع و اقسام مقدار دادن به پورت C با اعداد در مبنای 10 و 16 و 2 که معمولا دو راحت تره.

        در اخر هم یک متغیر به اسم سی رو ریختم توی پورت سی
        جدیدترین ویرایش توسط dark star; ۱۵:۲۰ ۱۳۹۶/۰۵/۱۷.

        دیدگاه


          #5
          پاسخ : سوال در مورد چگونگی ذخیره کردن بیت های یک بایت در متغیرهای جداگانه

          سلام میشه لطفا چند مثال دیگه با ورودی انالوگ و خروج 8بیت تایپ کنید برای درک موضوع ممنون

          دیدگاه


            #6
            پاسخ : سوال در مورد چگونگی ذخیره کردن بیت های یک بایت در متغیرهای جداگانه

            شیفت به چپ و راست << >>

            این شیفتها علامت عدد رو حفظ می کنند اما شیفت پایین به علامت رو خراب می کنه، (فقط صفر میریزه)

            <<<
            جدیدترین ویرایش توسط dark star; ۱۵:۵۱ ۱۳۹۶/۰۵/۱۷. دلیل: ادیتور اینجا داغونم کرد

            دیدگاه


              #7
              پاسخ : سوال در مورد چگونگی ذخیره کردن بیت های یک بایت در متغیرهای جداگانه

              ممنون از باسخهای دوستان اما منظور من در آردینو بود یکم سرچ زدم با دستور bitRead میشه تمامی بیتهای یک عدد رو خیلی راحت خوند
              int b= bitRead(a,i); که a عدد و i شماره بیت مورد نظر هست حالا موندم چجوری به خروجیهام فرمان بدم شرط if میزارم که اگه برابر یک بود پین رو یک کن ولی نمیشه

              دیدگاه

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