اطلاعیه

Collapse
No announcement yet.

ریختن یک آراایه در پورت (KEIL)

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

    ریختن یک آراایه در پورت (KEIL)

    سلام
    من میخوام یه آرایه رو در پورت بریزم مثلا آرایه ی :
    int str1 [8] = {0x01 , 0x03 , 0x02 , 0x06 , 0x04 , 0x0c , 0x08 , 0x09};
    را در ثبات :
    *AT91C_PIOA_SODR = (str1);
    بریزم
    کامپایلر به اینجور نوشتن من ایراد میگیره اگه میشه کمکم کنید
    لینک پروژه:
    http://s3.picofile.com/file/8203995950/AT91SAM7X256.zip.html

    #2
    پاسخ : ریختن یک آراایه در پورت (KEIL)

    سلام
    OR کنید بایت های ارایه رو!
    بطور نمونه:
    کد:
    AT91C_PIOA_SODR = str1[0] | (str1[1]<<4) | (str1[2]<<8) | ...
    هر انسانی که احساس بی نیازی کند سرکش و طغیان گر می شود...

    دیدگاه


      #3
      پاسخ : ریختن یک آراایه در پورت (KEIL)

      سلام
      مرسی از لطفت .
      میگم منظور از <<8 و <<4 چیه ؟
      میشه بیشتر توضیح بدبد؟؟؟
      با تشکر

      دیدگاه


        #4
        پاسخ : ریختن یک آراایه در پورت (KEIL)

        فرض کنید:
        str1[0]= 00000011
        str1[1]= 00001011
        عدد های بالا رو برحسب باینری نوشتم،
        شما روی پورت می خواین نشون بدین:
        port : 10110011
        کدش میشه:
        کد:
        port : str1[0] | (str1[1] <<4)
        یعنی این که str1[0] رو هیچ تغییر نده و OR کنش با str1[1] که 4 تا به چپ شیفت خورده!
        واضح گفتم؟ :read:
        هر انسانی که احساس بی نیازی کند سرکش و طغیان گر می شود...

        دیدگاه


          #5
          پاسخ : ریختن یک آراایه در پورت (KEIL)

          سلام
          دستتون درد نکنه
          میگم اگه یک متغیر باشه و این شیفت و نذارم :
          *at91c_piob_sodr = str[0] | str[1] | str[2] | ...
          درسته؟؟؟؟

          دیدگاه


            #6
            پاسخ : ریختن یک آراایه در پورت (KEIL)

            بستگی به کاربردتون داره!
            اگر می خواین 32بیت درست کنید اشتباهه!
            به این مثال دقت کنید:
            str[0]= 11100011
            str[1]= 00111100
            str[0] | str[1] = 11111111
            یعنی هر متغییر 8 بیت بود، جوابشم 8 بیت موند!
            اما:
            str[0] | (str[1]<<8) = 0011110011100011
            یعنی حاصل 16 بیتی می شود!
            هر انسانی که احساس بی نیازی کند سرکش و طغیان گر می شود...

            دیدگاه

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