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





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









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





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

نمایش نتایج: از 1 به 4 از 4
  1. #1
    2008/06/01
    tehran
    103
    14

    یه مشکل در برنامه نویسی

    دوستان سلام
    من تازه دارم lpc رو یاد میگیرم لطفا کمک کنید
    تو این دستور
    LPC_PINCON->PINSEL3|=(3UL<<30) //p1.31 is adc0.5
    3UL چه معنی میده و برای چی از ,UL استفاده شده?
  2. #2
    2018/07/30
    اهواز
    143
    78

    پاسخ : یه مشکل در برنامه نویسی

    نقل قول نوشته اصلی توسط sarlak74

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    دوستان سلام
    من تازه دارم lpc رو یاد میگیرم لطفا کمک کنید
    تو این دستور
    LPC_PINCON->PINSEL3|=(3UL<<30) //p1.31 is adc0.5
    3UL چه معنی میده و برای چی از ,UL استفاده شده?
    اجبار به کامپایلر برای اینکه عدد 3 رو بصورت پیش فرض تو کوچیکترین قالبش قرار نده و تو متغییری/رجیستری به اندازه ی UL یا unsigned long یا یه متغییر 32 بیتی قرار بده.
    این اشکال زمانی پیش میاد که نیاز به انجام محاسباتی مث ضرب و تقسیم روی این مقدار کوچیک و چند مقدار بزرگ دیگه باشه و کامپایلر به اشتباه، اینو تو کوچیکترین متغییری که جا بشه قرار بده. اونوقت ممکنه اشکال بگیره که سایز متغییرها یکی نیست.

    برای این خط کد، استفاده از این بسیار ابلهانه س و نویسنده کد، احتمالا بخاطر چند مورد نمونه دستش عادت کرده که دیگه هر عددی نوشت تهش اینو بچسبونه. قطعا هم از دنیای 8 بیتی ها اینو همراه خودش آورده چون بصورت پیش فرض کامپایلرهای 32 بیت، (در مورد کایل مایکروویژن و ام دی ک اطلاع ندارم ولی احتمال زیاد همینطوره) متغییر پیش فرضشونو همون 32 بیت میذارن. خیلی وقت ها تو همون 8 بیتی ها، استفاده بیخودی از این روش اشتباه هم هست.

    تحت شرایط خاص و بسیار دور از ذهنی، وجودش لازم میشه که هیچ برنامه نویس درست حسابی ای تو اون شرایط نمیره. اگر میخواید بدونید میتونید بگید که توضیح بدم وگرنه پاسخ سوالتون داده شده.

    به عنوان یه توصیه شخصی و نامربوط به بحث، از LPC ها کم کم دور بشید. سعی کنید سویچ کنید به STM32. دلایل خوب برای این کار فراوان و منطقین.
    ویرایش توسط tiranoid : 2019/12/07 در ساعت 11:03
  3. #3
    2017/06/13
    724
    371

    پاسخ : یه مشکل در برنامه نویسی

    نقل قول نوشته اصلی توسط tiranoid

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    اجبار به کامپایلر برای اینکه عدد 3 رو بصورت پیش فرض تو کوچیکترین قالبش قرار نده و تو متغییری/رجیستری به اندازه ی UL یا unsigned long یا یه متغییر 32 بیتی قرار بده.
    این اشکال زمانی پیش میاد که نیاز به انجام محاسباتی مث ضرب و تقسیم روی این مقدار کوچیک و چند مقدار بزرگ دیگه باشه و کامپایلر به اشتباه، اینو تو کوچیکترین متغییری که جا بشه قرار بده. اونوقت ممکنه اشکال بگیره که سایز متغییرها یکی نیست.

    برای این خط کد، استفاده از این بسیار ابلهانه س و نویسنده کد، احتمالا بخاطر چند مورد نمونه دستش عادت کرده که دیگه هر عددی نوشت تهش اینو بچسبونه. قطعا هم از دنیای 8 بیتی ها اینو همراه خودش آورده چون بصورت پیش فرض کامپایلرهای 32 بیت، (در مورد کایل مایکروویژن و ام دی ک اطلاع ندارم ولی احتمال زیاد همینطوره) متغییر پیش فرضشونو همون 32 بیت میذارن. خیلی وقت ها تو همون 8 بیتی ها، استفاده بیخودی از این روش اشتباه هم هست.

    تحت شرایط خاص و بسیار دور از ذهنی، وجودش لازم میشه که هیچ برنامه نویس درست حسابی ای تو اون شرایط نمیره. اگر میخواید بدونید میتونید بگید که توضیح بدم وگرنه پاسخ سوالتون داده شده.

    به عنوان یه توصیه شخصی و نامربوط به بحث، از LPC ها کم کم دور بشید. سعی کنید سویچ کنید به STM32. دلایل خوب برای این کار فراوان و منطقین.
    سلام
    ببخشید این کار مثل همون تایپ کستینگه یا فرق میکنه؟ اگر فرقی دارن لطفا توضیح بدید.
  4. #4
    2018/07/30
    اهواز
    143
    78

    پاسخ : یه مشکل در برنامه نویسی

    نقل قول نوشته اصلی توسط hossein.m98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام
    ببخشید این کار مثل همون تایپ کستینگه یا فرق میکنه؟ اگر فرقی دارن لطفا توضیح بدید.
    دقیقا معادلشه. تایپ کست، تبدیل از یه "تایپ" به تایپ دیگه س. اما برای اعداد ثابت، تایپ کست به کار نمیره. این معادلش هست که بکار میره.

    یه مثال : توی برنامه نویسی سی شارپ یا جاوا، وقتی یه متغییر از نوع float تعریف کنید و بهش مقدار بدید، باید انتهای مقدار کاراکتر f بذارید. مثلا float q = 12.2f
    اگر نذارید کامپایلر ایراد میگیره. چرا ؟

    همه چیز به "قالب" پیش فرض کامپایلر برمیگرده. تو سی شارپ، وقتی که یه عدد نوشته بشه و وسطش نقطه داشته باشه(منظور عدد اعشاریه)، بصورت پیش فرض عدد از نوع اعشاری با دقت دوبرابر یا همون double محسوب میشه. بعد شما بش میگین این عددو بنداز تو یه متغییر کوچیکتر از نوع float اونم ایراد میگیره.
    این f در انتهاش بهش کامپایلر میگه این عدد رو بصورت پیش فرض دابل در نظر نگیر. float در نظر بگیر.

    اون کدی که ایشون نوشته بودن، توی AVR ممکن بود به UL نیاز پیدا کنه. (فقط ممکن بود. بسته به کامپایلر و تنظیماتش). چون میومد عدد رو مینداخت تو یه متغییر/رجیستر موقت پیش فرض 8 بیتی. بعد بهش میگفت مثلا 16 تا شیفتش بده به چپ. سرریز میکرد.
    اما توی کامپایلرهای آرم همه چیز بصورت پیش فرض 32 بیته. پس مشکلی نخواهد بود.
    ویرایش توسط tiranoid : 2019/12/07 در ساعت 21:05
نمایش نتایج: از 1 به 4 از 4

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

  1. مشکل برنامه نویسی
    توسط obohat در انجمن C , C++ , C#
    پاسخ: 6
    آخرين نوشته: 2014/07/21, 17:44
  2. مشکل در برنامه نویسی TWI
    توسط Faramarz M-Sّ در انجمن میکروکنترلرهای AVR
    پاسخ: 24
    آخرين نوشته: 2012/12/07, 06:10
  3. مشکل در برنامه نویسی
    توسط mahoor86 در انجمن میکروکنترلرهای AVR
    پاسخ: 28
    آخرين نوشته: 2012/07/18, 22:29
  4. مشکل با برنامه نویسی
    توسط aydinll در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2011/03/07, 20:39
  5. مشکل در برنامه نویسی
    توسط mostafa26 در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2009/10/23, 19:15

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

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

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

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

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