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





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









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





  1. #1
    تاریخ عضویت
    2009/02/06
    25
    0

    تعریف متغییردرATTINYها

    با سلام وتشکر
    دو سوال داشتم:
    1-اعدادی که به سه پشته ATTINYها نسبت داده میشه بر چه اساسیه مثل: $swstack = 10 یا $hwstack = 16 یا
    $swstack = 5 یا $framesize = 16
    2-در میکروهای مگا چطور میتونیم (با چه دستوری) آدرس پشته را در RAM مشخص کنیم (مثلا در مگا16 که آدرس از0X60تا 0X45F است )(bascom)
    قبلا از راهنمائی شما متشکرم
    • تبلیغات
      .

  2. #2
    تاریخ عضویت
    2006/12/05
    تهران
    1,401
    13

    پاسخ : تعریف متغییردرATTINYها

    من از این روش استفاده می کنم

    $asm
    ldi r16,$04
    Out Sph , R16
    ldi r16,$5f
    Out Spl , R16
    $end Asm
  3. #3
    تاریخ عضویت
    2007/06/28
    721
    22

    پاسخ : تعریف متغییردرATTINYها

    درود
    با تشکر از آقا مجید عزیز
    dr21 جان در این میکروها یک جفت رجیستر وجود داره ( دوتا 8 بیتی که روی هم میشه 16 بیت ) که به اون SP یا Stack Pointer گفته میشه که از اونجا که یک جفت رجیستر هست به دو قسمت تقسیم میشه و بایت پایین با نام SPL و بایت بالا با نام SPH شناخته میشه، این رجیستر ها در مگا 16 در آدرس 3d و 3e هگزا دسیمال قرار دارند و شما به وسیله اینها محل پشته رو تعریف میکنید، از اونجا که رشد پشته رو به پایین هست ( از آدرس بالا به آدرس پایین حافظه ) معمولا سعی میکنند که این مقدار بالاترین مقدار حافظه RAM باشه که در مگا 16 همونطور که شما نوشتی 45F هگزا دسیمال هست. حالا شما برای اینکه این مکان رو برای پشته تعریف کنید باید بایت بالا رو در SPH و بایت پایین رو در SPL قرار بدید تا در مجموع اشاره گر پشته به این آدرس اشاره کنه. شما میتونید به جای این مقدار مقادیر دیگه هم در پشته قرار بدید اما معمولا بهترین کار این هست که پشته رو در بالاترین آدرس RAM تغرف کنید تا از تداخل و بی نظمی جلوگیری کنید. حالا شما با هر زبانی که کار کنید ممکن هست نوع تعریف پشته فرق کنه و گاهی اصلا نیازی به تعریف نباشه ( چون کامپایلر خودش اینکار رو انجام میده ) اما در کل همیشه باید در اول برنامه پشته رو خودتون به این صورت تنظیم کنید ( در صورتی که بخواید از وقفه یا انشعاب استفاده کنید ) از اونجا که من با اسمبلی کار میکنم نحوه انجام این کار رو با اسمبلی مینویسم براتون.
    LDI R16,HIGH(RAMEND)
    OUT SPH,R16
    LDI R16,LOW(RAMEND)
    OUT SLP,R16
    تو برنامه بالا عبارت RAMEND به جای 45F قرار گرفته و عملا هیچ فرقی نمیکنه که شما این رو بنویسید با این روش شما خیالتون راحت هست که آخرین آدرس RAM رو که فایل سرآیند برای اسمبلر مشخص میکنه رو قرار دادید که در اینجا 45F هست. عبارت HIGH هم به این معنی هست که بایت بالایی از مقدار درون پرانتز مورد نظر هست، پس به طور کلی با اجرای خط اول، بایت بالایی 45F در رجیستر R16 قرار میگیره، در خط بعدی این مقدار از رجیستر R16 درون SPH ریخته میشه که همون بایت بالای اشاره گر پشته هست. و به همین ترتیب در خط سوم بایت پایین 45F در R16 و در خط بعدی این مقدار در SPL قرار میگیره و در نهایت بعد از اجرای این چهار دستور 45F به طور کامل درون اشاره گر پشته قرار میگیره و پشته شما در بالاترین آدرس Ram تعریف میشه. حالا اگر شما بخواید پشته رو در جای دیگه تعریف کنید کافیه به جای اون RAMEND مقدار عددی اون آدرس رو قرار بدید تا شروع پشته از اونجا باشه.
    زمانی که میکرو شروع به کار میکنه مقدار اشاره گر پشته صفر هست و شما حتما باید اشاره گر پشته رو مقدار دهی کنید تا بتونید از دستورات فراخوانی روتین ها و وقفه ها استفاده کنید ( آدرس برگشت رو در پشته ذخیره کنید )

    از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
    هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
    اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
    اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
    شاد و موفق باشید
نمایش نتایج: از 1 به 3 از 3

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

  1. تعریف تابع
    توسط زوار در انجمن میکروکنترلرهای AVR
    پاسخ: 9
    آخرين نوشته: 2013/08/06, 10:52
  2. تعریف تاریخ در plc
    توسط aminnima2 در انجمن PLC
    پاسخ: 5
    آخرين نوشته: 2011/01/06, 20:15
  3. تعریف تابع
    توسط azadmnesh در انجمن Matlab
    پاسخ: 6
    آخرين نوشته: 2010/11/11, 16:56
  4. تعریف پالس
    توسط fullboy در انجمن مفاهیم پایه برق و الکترونیک
    پاسخ: 3
    آخرين نوشته: 2010/08/04, 00:51
  5. مشکل در DXP (تعریف net)
    توسط مرتضی امانی در انجمن نرم افزار Protel
    پاسخ: 2
    آخرين نوشته: 2008/01/18, 20:43

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

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

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

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