ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 9 از 9
  1. #1
    2010/06/23
    24
    0

    آدرس متغير چند بايتي در C ؟

    دوستان من ميخوام بدون فراخوني يه تابع تو C ، يه متغير 2 بايتي X تعريف کنم و مقدار دو تا رجيستر (1بايتي) رو بدون عمل شيفت داخل اين متغير بريزم.
    نتيجه اين کار اينه که مثلا اگه بخوايم ديتاي يه سخت افزار تو ميکرو رو که شامل دو يا چند بايته رو بخونيم ، بدون اينکه يه تابع رو فراخوني کنيم ، تو کمترين پالس کلاک متغير مون رو پديت کنيم. :nice:
    الگوريتم من اينه که متغير X رو موقعي که ميخوايم تعريف کنيم ، بايت اولشو تو آدرس رجيستر اول و بايت دومشو تو آدرس رجيستر دوم تعريف کنيم.حالا اگه متغير رو بخونيم يا بهش مقدار بديم ، ديتا ميره تو اون دو تا آدرس رجيستر ها نوشته ميشه يا از اونا خونده ميشه. :agree:

    حالا سینتکسش تو استاندارد C ؟؟
  2. #2
    2009/10/25
    تهران
    414
    24

    پاسخ : آدرس متغير چند بايتي در C ؟

    نقل قول نوشته اصلی توسط smart.scan
    دوستان من ميخوام بدون فراخوني يه تابع تو C ، يه متغير 2 بايتي X تعريف کنم و مقدار دو تا رجيستر (1بايتي) رو بدون عمل شيفت داخل اين متغير بريزم.
    نتيجه اين کار اينه که مثلا اگه بخوايم ديتاي يه سخت افزار تو ميکرو رو که شامل دو يا چند بايته رو بخونيم ، بدون اينکه يه تابع رو فراخوني کنيم ، تو کمترين پالس کلاک متغير مون رو پديت کنيم. :nice:
    الگوريتم من اينه که متغير X رو موقعي که ميخوايم تعريف کنيم ، بايت اولشو تو آدرس رجيستر اول و بايت دومشو تو آدرس رجيستر دوم تعريف کنيم.حالا اگه متغير رو بخونيم يا بهش مقدار بديم ، ديتا ميره تو اون دو تا آدرس رجيستر ها نوشته ميشه يا از اونا خونده ميشه. :agree:

    حالا سینتکسش تو استاندارد C ؟؟
    قبل از تعریف تابع این واژه رو بنویس
    inline
    این طوری دیگه فراخوانی نمیشه و داخل کد توسط خود کامپایلر پیاده سازی میشه. بنابراین هم سریعتر اجرا میشه هم فراخوانی حذف میشه.
  3. #3
    2010/04/10
    593
    5

    پاسخ : آدرس متغير چند بايتي در C ؟

    بهترین راه اینه :
    کد:
    #define  make_int(H,L)  ((int)(H)<<8)|L
    اما حالا که شما نمیخوای از شیفت استفاده کنی(که اصلا نمیفهمم برای چی) ، میتونی از union ساتفاده کنی.
    انسان موفق با آجرهایی که به سمتش پرتاب میشود بنایی مستحکم میسازد.
  4. #4
    2009/10/21
    تهران
    2,493
    194

    پاسخ : آدرس متغير چند بايتي در C ؟

    آدرس متغیر X در واقع آدرس بایت کم ارزش اون هست
    ولی قبل از استفاده باید با تغییر نوع؛ اشاره گر به X رو تبدیل کنی به نوع اشاره گر char یا همون یک بایتی
    مثلا در کد زیر دو بایت X توسط پورت سریال ارسال میشن

    chptr=(char*)&X;
    putchar(*chptr);
    chptr++;
    putchar(*chptr);
  5. #5
    2009/09/27
    1,128
    34

    پاسخ : آدرس متغير چند بايتي در C ؟

    من پست آخر رو ديدم يه سوالي بپرسم ازتون :biggrin:
    کد:
    float f;
    unsigned char a[4]={};
    .
    .
    .
    f=(float*)a;
    .
    .
    .
    توي اين مثال تو کارکتر a 4 بايت معادل يه عدد اعشاري ريخته شده، آيا با دستوري که تو ادامه نوشتم، ميشه اون عدد اعشاري رو از 4 بايت به دست آورد ؟
    ---------
    .
    .
    ...........
  6. #6
    2009/10/21
    تهران
    2,493
    194

    پاسخ : آدرس متغير چند بايتي در C ؟

    1- f یه متغیره ولی a اشاره گره . اون انتصاب آخرت درست نیست. شما آدرس a رو نوعش رو تغییر دادی ولی داری میریزیش داخل یه متغیر و نه اشاره گر
    2- کلا نفهمیدم میخوای چیکار کنی ولی شما اگه ترتیب چینش بایتهات داخل a درست باشه یعنی کم ارزشترین بایت در a[0] قرار گرفته باشه میتونی به کامپایلر بفهمونی از اون بایت و سه بایت بعدی بعنوان عدد float استفاده کنه
  7. #7
    2009/09/27
    1,128
    34

    پاسخ : آدرس متغير چند بايتي در C ؟

    نقل قول نوشته اصلی توسط mojalan
    1- f يه متغيره ولي a اشاره گره . اون انتصاب آخرت درست نيست. شما آدرس a رو نوعش رو تغيير دادي ولي داري ميريزيش داخل يه متغير و نه اشاره گر
    2- کلا نفهميدم ميخواي چيکار کني ولي شما اگه ترتيب چينش بايتهات داخل a درست باشه يعني کم ارزشترين بايت در a[0] قرار گرفته باشه ميتوني به کامپايلر بفهموني از اون بايت و سه بايت بعدي بعنوان عدد float استفاده کنه
    منم دقيقا ميخوام همين کارو کنم، با چه دستوري ميشه به کامپايلر فهموند از 4 بايت به عنوان عدد اعشاري استفاده کنه ؟
    ---------
    .
    .
    ...........
  8. #8
    2009/10/25
    تهران
    414
    24

    پاسخ : آدرس متغير چند بايتي در C ؟

    نقل قول نوشته اصلی توسط ajapyy
    منم دقيقا ميخوام همين کارو کنم، با چه دستوري ميشه به کامپايلر فهموند از 4 بايت به عنوان عدد اعشاري استفاده کنه ؟
    به نظرم cast ای که انجام دادید درسته همین طوری خودش از a به عنوان float استفاده میکنه.
    float* هم درسته چون آرایه هم نوعی اشاره گره.
  9. #9
    2009/10/25
    تهران
    414
    24

    پاسخ : آدرس متغير چند بايتي در C ؟

    نقل قول نوشته اصلی توسط ajapyy
    من پست آخر رو ديدم يه سوالي بپرسم ازتون :biggrin:
    کد:
    float f;
    unsigned char a[4]={};
    .
    .
    .
    f=(float*)a;
    .
    .
    .
    توي اين مثال تو کارکتر a 4 بايت معادل يه عدد اعشاري ريخته شده، آيا با دستوري که تو ادامه نوشتم، ميشه اون عدد اعشاري رو از 4 بايت به دست آورد ؟
    شما باید از این استفاده کنید

    f = *(float*) a

    فکر میکنم.
نمایش نتایج: از 1 به 9 از 9

موضوعات مشابه

  1. اتصال کوتاه پایه های تغذیه میکرو ؟؟؟
    توسط sma در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2015/02/14, 11:57
  2. یک مدار فلاشر ساده 4 آمپر اینطوری میشه ؟؟؟ آی
    توسط iranesabz در انجمن تابلو ثابت LED
    پاسخ: 17
    آخرين نوشته: 2014/11/07, 05:24
  3. معرفی مقاله در مورد شبکه عصبی؟؟؟
    توسط مهرداد الف در انجمن هوش مصنوعی و شبکه های عصبی
    پاسخ: 1
    آخرين نوشته: 2012/07/31, 06:56
  4. نحوه راه اندازي موتور سروو s03TXF ؟؟؟
    توسط shohadayehagh در انجمن میکروکنترلرهای AVR
    پاسخ: 41
    آخرين نوشته: 2012/05/05, 22:25
  5. بافر کردن سیگنال دیجیتال؟؟؟
    توسط smart.scan در انجمن مدار هاي ديجيتال
    پاسخ: 5
    آخرين نوشته: 2010/10/04, 16:22

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •