اطلاعیه

Collapse
No announcement yet.

Interrupts

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

    Interrupts

    آقا من نمتونم از اینتراپت استفاده کنم :cry:
    ببینید من تو بسکام دستورش رو درست مینویسم ولی جواب نمیده !
    هر جا هم گشتم روش نوشتن دستورم درسته ولی بازم رو بوردم جواب نمیده
    کسی نمیدونه آیا چه مشکلی میتونه باشه ؟
    در ضمن چند تا از دوستان هم مثه من نمتونن جواب بگیرن، یه مشکلی هست که ما تشخیص نمیدیم
    کسی نمیتونه حدث بزنه ؟؟ لطفا هرچی به ذهنتون میرسه بگین ، کسی خجالت نکشه
    دستورم اینجوریه :
    config int1 =falling
    enable interrupts
    enable int1
    on int1 behzad

    #2
    پاسخ : Interrupts

    سلام.
    دوست عزیز شما شماتیک و برنامه ای رو که نوشتی به صورت کامل قرار بدین چون با قرار دادن این قسمت از برنامه چیزی مشخص نمیشه.
    با تشکر
    چرا ناراحتی پاتریک!
    + امروز ی بچه دیدم سرچهارراه گل میفروخت
    - از دیدنش ناراحت شدی؟
    + نه
    پس چی ناراحتت کرده
    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
    ------------------------------------------------------------------------------------------------------
    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
    ------------------------------------------------------------------------------------------------------
    محصولات

    دیدگاه


      #3
      پاسخ : Interrupts

      :wow: راه افتاد
      خب حالا یه سوال دیگه :
      میخواستم ببینم با فعال سازی یک اینتراپت نمیشه مستقیم دستوره return رو گذاشت ؟ حتما باید یک برچسب بذاریم که با فعال سازیه اینتراپت برنامه پرش کنه اونجا ؟
      مثلا تو این برنامه نمیشه جلوی on int1 به جای برچسب بهزاد بنویسم return ؟
      $regfile = "m16def.dat"
      $crystal = 7372800
      Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 _
      , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7
      Config Lcd = 16 * 2
      Ddra = &B11111111 : Ddrd = &B11110000
      Porta = &B11111111 : Portd = &B00000000
      T1 Alias Porta
      T2 Alias Portd
      Dim A As Byte
      Config Int0 = Falling
      Enable Interrupts
      Enable Int0
      On Int0 Behzad
      Cls
      Lcd "k1 = Start"
      Home L
      Lcd "k2 = stop "
      Do
      If Pind.3 = 0 Then : Goto Start : End If
      Loop
      Start:
      Do
      T1 = &B10111111 : T2 = &B01000000 : Cls
      Lcd "taraf aval= sabz" : Home L : Lcd "traf dovom=grmez" : Wait 5
      T1 = &B11111100 : T2 = &B01000000 : Cls
      Lcd "taraf aval= zard" : Home L : Lcd "traf dovom=grmez" : Wait 1
      T1 = &B11110111 : T2 = &B00010000 : Cls
      Lcd "taraf aval=grmez" : Home L : Lcd "taraf dovom=sabz" : Wait 5
      T1 = &B11110111 : T2 = &B00100000 : Cls
      Lcd "taraf aval=grmez" : Home L : Lcd "taraf dovom=zard" : Wait 1
      Loop
      End 'end program
      Behzad:
      T1 = &B11111111
      T2 = &B00000000
      Return
      [img][/img]

      دیدگاه


        #4
        پاسخ : Interrupts

        سلام

        نه نمیشه باید یه برچسب باشه که پرش کنه اونجا بعد مقدار رو بخونه بعد با دستور RETURN برگرده :biggrin:

        دیدگاه


          #5
          پاسخ : Interrupts

          نوشته اصلی توسط erfan m
          سلام

          نه نمیشه باید یه برچسب باشه که پرش کنه اونجا بعد مقدار رو بخونه بعد با دستور RETURN برگرده :biggrin:
          مگه قرار نیست بعد از تموم شدن اون برچسبه برگرده به ادامه برنامه ؟؟ پس چرا return میشه ؟؟

          دیدگاه


            #6
            پاسخ : Interrupts

            نوشته اصلی توسط ^^BEHZAD^^
            مگه قرار نیست بعد از تموم شدن اون برچسبه برگرده به ادامه برنامه ؟؟ پس چرا return میشه ؟؟
            سلام
            خوب اولا باید ما یه روتینی بنویسیم که وقتی که اینتراپت اومد برود داخل ان روتین و کارهایی که می خواهیم انجام دهد به قول شما کارشو انجام می ده برمی گرده دیگه برای چی می نویسیم Return ???
            ولی این طور نیست اتفاقی که می افتد این است که هنگامی که می خواهیم به داخل یک لیبلی پرش کنیم که این پرش در اثر اعمال یک اینتراپت است برای اینکه ادرسی که از ان پریدیم گم نشود و هنگام برگشت برنامه از همون جایی که پریدیم ادامه پیدا کند یک محلی در SRAM داریم به نام پشته که ادرس های اخرین پرش در اونجا نگاه داشته می شود و یک رجیستری به نام Stack pointer دارد حالا می گی این چه ربطی به اون Return داره ؟ جوابش اینه که وقتی Return می کنیم برمی گرده توی اون ادرس می بینه حالا باید کجا بره و میره اونجا که پریده هوا :mrgreen: وشروع می کنه ادامه برنامه را اجراکردن
            معجزه اين است که هرچه داشته هايت را بيشتر با ديگران سهيم شوي،داراتر مي شوي (لئونارد نيموي)
            اگر مغزانسان،چنان ساده مي بود که ما از آن سر در مي آورديم،هنوز چنان احمق بوديم که هيچ از آن سر در نمي آورديم!
            آموزش Modelsim

            دیدگاه


              #7
              پاسخ : Interrupts

              سلام ببخشید بچه ها اگه وسطه بحثتون میام
              من یه کشکل دارم
              برنامه رو به زبان سی در کدویژن نوشتم وقتی کامپایل میکنم میگه آخره برنامه نیستno final
              همه تابع ها هم رو آکولادشون رو بستم نمیدونم دیگه چیکارش کنم
              لطفا راهنماییم کنین
              ممنون

              دیدگاه


                #8
                پاسخ : Interrupts

                نوشته اصلی توسط skiboy
                سلام
                خوب اولا باید ما یه روتینی بنویسیم که وقتی که اینتراپت اومد برود داخل ان روتین و کارهایی که می خواهیم انجام دهد به قول شما کارشو انجام می ده برمی گرده دیگه برای چی می نویسیم Return ???
                ولی این طور نیست اتفاقی که می افتد این است که هنگامی که می خواهیم به داخل یک لیبلی پرش کنیم که این پرش در اثر اعمال یک اینتراپت است برای اینکه ادرسی که از ان پریدیم گم نشود و هنگام برگشت برنامه از همون جایی که پریدیم ادامه پیدا کند یک محلی در SRAM داریم به نام پشته که ادرس های اخرین پرش در اونجا نگاه داشته می شود و یک رجیستری به نام Stack pointer دارد حالا می گی این چه ربطی به اون Return داره ؟ جوابش اینه که وقتی Return می کنیم برمی گرده توی اون ادرس می بینه حالا باید کجا بره و میره اونجا که پریده هوا :mrgreen: وشروع می کنه ادامه برنامه را اجراکردن
                خب پس بلاخره نتیجه چی شد ؟؟؟؟ چرا بر نمیگرده به ادامه برنامه ؟ :rolleyes:

                دیدگاه


                  #9
                  پاسخ : Interrupts


                  Config Int0 = Falling
                  Enable Interrupts
                  Enable Int0
                  On Int0 Behzad
                  جهت معرفی روتین.ترتیب به اینصورت است که
                  بعد از معرفی لیبل و نوع وقفه وقفه سراسری فعال میشود
                  ممکن است زمانی که هنوز لیبل را مشخص نکرده اید وقفه فعال گردد و برنامه به محل نامعلومی پرش کند
                  ترتیب را رعایت فرمائید
                  و نتیجه را بگید.
                  هميشه به ياد خدا باش !

                  دیدگاه


                    #10
                    پاسخ : Interrupts

                    نوشته اصلی توسط پژمان اکبری
                    Config Int0 = Falling
                    Enable Interrupts
                    Enable Int0
                    On Int0 Behzad
                    جهت معرفی روتین.ترتیب به اینصورت است که
                    بعد از معرفی لیبل و نوع وقفه وقفه سراسری فعال میشود
                    ممکن است زمانی که هنوز لیبل را مشخص نکرده اید وقفه فعال گردد و برنامه به محل نامعلومی پرش کند
                    ترتیب را رعایت فرمائید
                    و نتیجه را بگید.
                    خب ببینید من به همین شکل که گفتین مینویسم
                    بعد برنامه رو اجرا میکنم ( روی بورد آموزشی) بعدش هر موقع اینتراپت 0 رو فعال میکنم برنامه پرش میکنه به لیبلی که مشخص کردم بعد از انجام دادن زیربرنامه ی لیبل میکرو ریست میشه و از اول اول شروع میکنه !
                    این شکلی درسته :question:

                    دیدگاه


                      #11
                      پاسخ : Interrupts

                      جهت فعال کردن یک وقفه.بعد از تعریف و....
                      در انتها وقفه سراسری را فعال کن.شاید اگه اینکارو نکنی بغضی وقتها جواب بده.ولی یه باگ حساب میشه بنظر من
                      درستش اینه که وقفه سراسری در انتهای config های مربوط به وقفه ها فعال شود.
                      هميشه به ياد خدا باش !

                      دیدگاه

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