اطلاعیه

Collapse
No announcement yet.

ربط دستور gosub یا پرش با حافظه رم میکرو(؟)

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

    ربط دستور gosub یا پرش با حافظه رم میکرو(؟)

    دوستان همونطور که میدونید اگر من تو یه حلقه بیام بگم با زدن کلید برو به sub مربوطه ، اینم میره به sub مربوطه و بعد از اتمام اون sub به طور اتوماتیک بر میگرده.خوب تا اینجا قبول.
    سوال 1 : چجوری این میفهمه که کجا بود تا بعد از اتمام کار در sub این بیاد برگرده ؟؟؟میخام بگم آیا آدرس جایی که بود رو ذخیره میکنه و بعد از اتمام کار از sub دوباره برمیگرده به همون آدرس؟؟ یا یطور دیگست؟؟

    ادامه که تو ذهنمه اینه که حالا من با زدن همون کلید برم داخل sub مربوطه و وقتی داخل sub مربوطه هستم باز با دستور gosub بیام بپرم به یه sub دیگه و بعد از اون sub با دستور gosub برگردم به حلقه sub که تو اونجا کلید زدن چک میشه !!!!!و همین روند به تعداد نامحدود تکرار بشه ، مثل کد زیر :
    کد:
    Do
    Sub Hossein
    
     Debounce Porta.0 , 1 , Eca , Sub
    
    End Sub
    
    Loop
    '_________________________
    
     Sub Eca
    
     Waitms 1000
     Gosub Marjan
    
     End Sub
     '__________________________
     Sub Marjan
    
      Gosub Hossein
    
     End Sub
    خوب حالا اگه بر فرض قرار بر این باشه که هر دفعه با رفتن به sub مربوطه آدرس ذخیره بشه برای برگشت ، این کد که از طریق آدرس برنمیگرده ، و بی نهایت بار تکرار هم میشه ، آیا کل رم میکرو درگیر ذخیره کردن این آدرس برگشت و در نهایت به علت پر شدن حافظه میکرو ریست نمیکنه؟؟؟

    امیدوارم تونسته باشم منظور رو برسونم.
    من تقریبا تو پروژم اینجوری کد نوشتم ، میترسم بعد مدتی به این علت جایی برای بقیه متغییر ها نمونه و میکرو ریست بشه ، حالا میخام ببینم اینطور هست یا نه ؟؟!!!!



    ممنون دوستان.
    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
    (پيش به سوي هدف)

    #2
    پاسخ : ربط دستور gosub یا پرش با حافظه رم میکرو(؟)

    با هر بار فراخوانی زیر برنامه ادرس کانتر در پشته ذخیره میشه
    شما تو اول برنامه میتونی مقدار حافطه پشته رو تعریف کنید که در عیر اینصورت پیشفرض فکر کنم 40 بایت یاشه
    یعنی حداکثر 20 بار میتونه ادرس رو ذخیره کنه

    دیدگاه


      #3
      پاسخ : ربط دستور gosub یا پرش با حافظه رم میکرو(؟)

      نوشته اصلی توسط yousef55 نمایش پست ها
      با هر بار فراخوانی زیر برنامه ادرس کانتر در پشته ذخیره میشه
      شما تو اول برنامه میتونی مقدار حافطه پشته رو تعریف کنید که در عیر اینصورت پیشفرض فکر کنم 40 بایت یاشه
      یعنی حداکثر 20 بار میتونه ادرس رو ذخیره کنه
      The AVR Stack Pointer is implemented as two 8-bit registers in the I/O space.

      آره دوتا رجیستر 8 بیتی داره.
      حالا بر فرض من بیام 20 تا آدرس داخل پشته ذخیره کنم ، برای بیست و یکمین آدرس جدیدی که قرار دوباره بهش اضافه شه ، چه اتفاقی میاوفته؟؟
      آیا رو آدرس قبلی ذخیره میشه و باعث ری استارت یا هنگیه میکرو نمیشه؟؟
      میخام بگم امکان داره حافظه پشته پر شه و دیگه اطلاعات جدید ذخیره نشه و باعث تداخل در کار میکرو کنترلر بشه؟؟


      با تشکر.
      به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
      (پيش به سوي هدف)

      دیدگاه


        #4
        پاسخ : ربط دستور gosub یا پرش با حافظه رم میکرو(؟)

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

        دیدگاه

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