اطلاعیه

Collapse
No announcement yet.

چند سوال ساده در کامپایلر keill

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

    چند سوال ساده در کامپایلر keill

    سلام

    1- منظور از 2ul در کد زیر چیه؟؟
    کد:
    LPC_PINCON->PINSEL0 |= (2UL<<4);
    2- آیا تفاوت کد
    کد:
    LPC_ADC->ADCR    = (1<< 7)
    با

    کد:
    LPC_ADC->ADCR    |= (1<< 7)
    در اینه که اولی ممکنه بیتهای دیگر هم دستکاری بشند ولی در دومی نمیشه؟ درسته؟؟

    3- منظور از
    کد:
    LPC_ADC->ADCR &= ~(7<<24);
    چیه؟ مخصوصا ~؟؟؟ و چرا &= انجام داده؟ چه تاثیری داره؟؟

    4- توی عبارت
    کد:
    (LPC_ADC->ADGDR>>4 & 0xfff)
    اول عبارت سمت ADGDR>>4 اتفاق میفته بعدش با 0xfff اند میشه؟؟؟

    ممنون از کمکتون. :nerd:
    ask One Question

    #2
    پاسخ : چند سوال ساده در کامپایلر keill

    1. یعنی عدد 2 که در یک حافظه unsigned long قرار گرفته
    2. در اولی همه بیتها برابر صفر میشن به جز بیت هفتم که یک میشه. در دومی فقط بیت هفتم یک میشه و به بقیه کار نداره.
    3. ~ علامت ناته. در این عبارت اول عدد هفت یا 00000111 به اندازه 24 بیت به سمت چپ شیفت پیدا میکنه. یعنی میشه
    00000111000000000000000000000000
    بعد نات میشه. یعنی میشه 11111000111111111111111111111111
    بعد مقدار رجیستر ADCR با این عدد AND میشه که در نتیجه اون سه تا بیت خاص صفر میشن

    4. بله. ولی وقتی کد مینویسی بهتره از پرانتز استفاده کنی که هم خواناتر باشه هم احتمال اشتباه صفر بشه

    دیدگاه


      #3
      پاسخ : چند سوال ساده در کامپایلر keill

      سلام
      میشه مورد 1 (1- منظور از 2ul در کد زیر چیه؟؟) را کمی بیشتر توضیح بدید :(
      اگه بجای 2ul از 2 به تنهایی استفاده کنیم چه فرقی می کنه ؟!

      دیدگاه


        #4
        پاسخ : چند سوال ساده در کامپایلر keill

        سلام
        ممنون از توضیحاتتون!
        من مورد 1 را درست متوجه نشدم! میشه بیشتر توضیح دهید!
        و اینکه دقیقا & یعنی AND چه کاری انجام میده؟
        [glow=red,2,300]برنامه هاي آموزشي تست شده براي NXP LPC1768 با توابع CMSIS[/glow]
        http://www.eca.ir/forum2/index.php?topic=76623.0

        دیدگاه


          #5
          پاسخ : چند سوال ساده در کامپایلر keill

          علیک سلام
          در مورد 1 به نظرم به خاطر این UL رو میزاره که محاسباتی که قراره با این عدد انجام بشه در قالب یک حافظه 32 بیتی انجام بشه تا اطلاعات بیتهای پر ارزش تر از بین نره
          مثلا فرض کن اگر بخواد عدد 0x3 رو با 0x5221 اور کنه (OR کنه) و این محاسبه رو در یک حافظه 8 بیتی انجام بده حاصل میشه 0x23 در حالی که اگر این عمل رو در یک حافظه 16 بیتی یا 32 بیتی انجام بده میشه 0x5223

          AND یعنی بیتها رو یکی یکی مقایسه کنه و اگر هر دو یک بود حاصل بیت متناظر 1 بشه
          مثلا اعداد باینری زیر رو می خوایم اند کنیم
          11000101
          01011011
          حاصل میشه
          01000001

          دیدگاه

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