اطلاعیه

Collapse
No announcement yet.

راهنمایی در موردد وقفه INT 1

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

    راهنمایی در موردد وقفه INT 1

    سلام دوستان
    من زیاد برنامه نویسی بلد نیستم
    ولی تو یه برنامه که نوشتم از وقفه استفاده کردم اینطوری :

    $regfile = "m8def.dat"
    $crystal = 8000000

    Config Int1 = Rising
    Enable Int1
    enable Interrupts
    On Int1 Javad
    Do

    اینجاش چیزی ننوشتم

    Loop

    End

    Javad:

    اینجا یه سری ال ای دی روشن خاموش میشند

    Return

    حالا هر وقت وقفه فعال میشه اون زیربرنامه یه بار اجرا میشه ولی من می خوام بعد از 10 دفعه که اجرا شد بره تویه زیر برنامه دیگه یعنی تا 10 بار که وقفه فعال میشه بره به زیر برنامه اولی دفعه یازدهم که وقفه فعال میشه بره به یه زیر برنامه دیگه و ... تا مثلا برسه به دفعه بیستم ! بعد از وقفه بیست و یکم بره به یه زیر برنامه دیگه ....
    نمیدونم متوجه شدید یا نه !!!
    این عملی هست ؟ چطوری ؟

    ممنون


    #2
    پاسخ : راهنمایی در موردد وقفه INT 1

    سلام
    حالا هر وقت وقفه فعال میشه اون زیربرنامه یه بار اجرا میشه ولی من می خوام بعد از 10 دفعه که اجرا شد بره تویه زیر برنامه دیگه یعنی تا 10 بار که وقفه فعال میشه بره به زیر برنامه اولی دفعه یازدهم که وقفه فعال میشه بره به یه زیر برنامه دیگه و ... تا مثلا برسه به دفعه بیستم ! بعد از وقفه بیست و یکم بره به یه زیر برنامه دیگه ....
    اگه میخای دستورات داخل زیر برنامه با یک بار فعال شدن وقفه 10 بار اجرا شوند کافیست دستورات داخل زیربرنامه را در یک حلقه تکرار(For)بنویسی و وقتی که از حلقه خارج شد به زیر برنامه بعدی بری
    مفهومه ؟

    دیدگاه


      #3
      پاسخ : راهنمایی در موردد وقفه INT 1

      تو وقفه یک متغیر بذار.هربار که وقفه اجرا میشه یکی بهش اضافه کن.
      تو حلقه اصلی برنامه بر حسب شماره متغیر با select case توابه مورد نظرتو فراخوانی کن.
      بهمین سادگی.

      دیدگاه


        #4
        پاسخ : راهنمایی در موردد وقفه INT 1

        نوشته اصلی توسط alireza094
        سلاماگه میخای دستورات داخل زیر برنامه با یک بار فعال شدن وقفه 10 بار اجرا شوند کافیست دستورات داخل زیربرنامه را در یک حلقه تکرار(For)بنویسی و وقتی که از حلقه خارج شد به زیر برنامه بعدی بری
        مفهومه ؟
        از پاسختون ممنون
        ولی نه نمی خوام اینجوری باشه
        می خوام با هر بار فعال شدن وقفه یه بار اجرا بشه این خیلی برام مهمه

        دیدگاه


          #5
          پاسخ : راهنمایی در موردد وقفه INT 1

          نوشته اصلی توسط hamedhamidi
          تو وقفه یک متغیر بذار.هربار که وقفه اجرا میشه یکی بهش اضافه کن.
          تو حلقه اصلی برنامه بر حسب شماره متغیر با select case توابه مورد نظرتو فراخوانی کن.
          بهمین سادگی.
          ممنون
          ولی چجوری ؟
          میشه این یه تیک برنامه بنویسید ؟

          دمتون گرم

          دیدگاه


            #6
            پاسخ : راهنمایی در موردد وقفه INT 1

            ممنون
            ولی چجوری ؟
            میشه این یه تیک برنامه بنویسید ؟
            $regfile = "m8def.dat"
            $crystal = 8000000

            Config Int1 = Rising
            Enable Int1
            enable Interrupts
            On Int1 Javad
            dim i as integer
            i=0
            Do
            if i=10 then
            پرش به زیر برنامه دوم
            اینجاش چیزی ننوشتم

            Loop

            End

            Javad:
            i=i+1
            اینجا یه سری ال ای دی روشن خاموش میشند

            Return

            دیدگاه


              #7
              پاسخ : راهنمایی در موردد وقفه INT 1

              نوشته اصلی توسط alireza094
              $regfile = "m8def.dat"
              $crystal = 8000000

              Config Int1 = Rising
              Enable Int1
              enable Interrupts
              On Int1 Javad
              dim i as integer
              i=0
              Do
              if i=10 then
              پرش به زیر برنامه دوم
              اینجاش چیزی ننوشتم

              Loop

              End

              Javad:
              i=i+1
              اینجا یه سری ال ای دی روشن خاموش میشند

              Return
              اقا دمت گرم ولی یه نکته فکر کنم داره
              وقتی i=10 شدی مثلا میگیم if i=10 then goto Ali
              بعد می خوایم اونجا هم تا 10 شماره واسته در صورتی که اونجا که بره میشه 11 و وقتی دوباره وقفه اعمال بشه دوباره به زیربرنام اولی هدایت میشه
              حالا چجوری میتونم یه سری عدد رو بزارم ؟
              مثلا میگیم
              if i<10 then goto Alii
              چجوری میشه گفت اگر i از 11 تا 19 بود برو فلان جا ؟

              ممنون

              دیدگاه


                #8
                پاسخ : راهنمایی در موردد وقفه INT 1

                اینو تو بیسیک داریم ؟
                20>ایکس>10

                دیدگاه


                  #9
                  پاسخ : راهنمایی در موردد وقفه INT 1

                  [left]
                  Select Case I

                  Case 1 : Print "1"

                  Case 2 : Print "2"

                  Case 3 To 5 : Print "3-5"

                  Case Is >= 10 : Print ">= 10"

                  Case Else : Print "Not in Case statement"

                  End Select

                  دیدگاه


                    #10
                    پاسخ : راهنمایی در موردد وقفه INT 1

                    نوشته اصلی توسط mahdi421
                    [left]
                    Select Case I

                    Case 1 : Print "1"

                    Case 2 : Print "2"

                    Case 3 To 5 : Print "3-5"

                    Case Is >= 10 : Print ">= 10"

                    Case Else : Print "Not in Case statement"

                    End Select
                    دمت گرم
                    ولی من متوجه نشدم چی شد !

                    دیدگاه


                      #11
                      پاسخ : راهنمایی در موردد وقفه INT 1

                      select case i
                      case is <10 : goto a
                      case 11 to 19: goto b
                      case is>19 : goto c
                      .
                      .
                      .
                      end select

                      دیدگاه


                        #12
                        پاسخ : پاسخ : راهنمایی در موردد وقفه INT 1

                        نوشته اصلی توسط alireza094
                        select case i
                        case is <10 : goto a
                        case 11 to 19: goto b
                        case is>19 : goto c
                        .
                        .
                        .
                        end select
                        a و b و c و ... اسم زیر برنامه ها هستند دیگه ؟
                        به جای if i<10 then goto Alii باید case بزارم
                        یعنی متغیر i دیگه ندارم به جاش case i بذارم ؟ کیس چجوری معرفی میکنند ؟
                        میشه اینو تو این بنویسید :
                        $regfile = "m8def.dat"
                        $crystal = 8000000

                        Config Int1 = Rising
                        Enable Int1
                        enable Interrupts
                        On Int1 Javad
                        dim i as integer
                        i=0
                        Do
                        if i=10 then
                        پرش به زیر برنامه دوم
                        اینجاش چیزی ننوشتم

                        Loop

                        End

                        Javad:
                        i=i+1
                        اینجا یه سری ال ای دی روشن خاموش میشند

                        Return

                        مرسی دوستان خوب من

                        دیدگاه


                          #13
                          پاسخ : راهنمایی در موردد وقفه INT 1

                          a و b و c و ... اسم زیر برنامه ها هستند دیگه ؟
                          بله
                          به جای if i<10 then goto Alii باید case بزارم
                          درسته
                          یعنی متغیر i دیگه ندارم به جاش case i بذارم ؟ کیس چجوری معرفی میکنند ؟
                          متغیر i باید باشه case دستوره و مربوط به تصمیم گیریه
                          کد:
                          $regfile = "m8def.dat"
                          $crystal = 8000000
                          
                          Config Int1 = Rising
                          Enable Int1
                          enable Interrupts
                          On Int1 Javad
                          dim i as integer
                          i=0
                          Do
                          select case i
                          case is <11: goto javad
                          case 11 to 19: goto j1
                          case 20 to 29: goto j2
                          case is>29: goto j3
                          .
                          .
                          .
                          end select
                          اینجاش چیزی ننوشتم
                          
                          Loop
                          
                          End
                          
                          Javad:
                          i=i+1
                          اینجا یه سری ال ای دی روشن خاموش میشند
                          
                          Return
                          j1:
                          i=i+1
                          دستورات
                          return
                          
                          j2:
                          i=i+1
                          دستورات
                          return
                          
                          j3:
                          i=i+1
                          دستورات
                          return

                          دیدگاه


                            #14
                            پاسخ : راهنمایی در موردد وقفه INT 1

                            نوشته اصلی توسط alireza094
                            بلهدرستهمتغیر i باید باشه case دستوره و مربوط به تصمیم گیریه
                            کد:
                            $regfile = "m8def.dat"
                            $crystal = 8000000
                            
                            Config Int1 = Rising
                            Enable Int1
                            enable Interrupts
                            On Int1 Javad
                            dim i as integer
                            i=0
                            Do
                            select case i
                            case is <11: goto javad
                            case 11 to 19: goto j1
                            case 20 to 29: goto j2
                            case is>29: goto j3
                            .
                            .
                            .
                            end select
                            اینجاش چیزی ننوشتم
                            
                            Loop
                            
                            End
                            
                            Javad:
                            i=i+1
                            اینجا یه سری ال ای دی روشن خاموش میشند
                            
                            Return
                            j1:
                            i=i+1
                            دستورات
                            return
                            
                            j2:
                            i=i+1
                            دستورات
                            return
                            
                            j3:
                            i=i+1
                            دستورات
                            return
                            ممنون
                            ولی یه مشکل داره
                            فکر کنم دیگه نباید نوشت : On Int1 Javad
                            چون اینجوری بازم مستقیم میره به javad و .... :surprised:

                            قبل اون do / loop اولیه نمیشه یه زیر برنامه داد بعد On Int1 به اونجا فرستاد ؟؟ تا ااز اونجا case lمشخص بشه و ... ؟؟

                            دیدگاه


                              #15
                              پاسخ : راهنمایی در موردد وقفه INT 1

                              ممنون
                              ولی یه مشکل داره
                              فکر کنم دیگه نباید نوشت : On Int1 Javad
                              چون اینجوری بازم مستقیم میره به javad و .... :surprised:

                              قبل اون do / loop اولیه نمیشه یه زیر برنامه داد بعد On Int1 به اونجا فرستاد ؟؟ تا ااز اونجا case lمشخص بشه و ... ؟؟
                              درسته اگه یه توضیح کوچیک درباره کاری که میخای انجام بدی بهتر می تونم کمکت کنم
                              میتونی اینو امتخان کنی
                              کد:
                                $regfile = "m8def.dat"
                                $crystal = 8000000
                              
                                Config Int1 = Rising
                                Enable Int1
                                enable Interrupts
                                On Int1 Javad
                                dim i as integer
                                i=0
                                Do
                                اینجاش چیزی ننوشتم
                              
                                Loop
                              
                                End
                              
                                Javad:
                              
                                select case i
                                case is <11: goto j1
                                case 11 to 19: goto j1
                                case 20 to 29: goto j2
                                case is>29: goto j4
                                .
                                .
                                .
                                end select
                              i=i+1  
                                Return
                              
                                j1:
                                دستورات
                                return
                              
                                j2:
                                دستورات
                                return
                              
                                j3:
                                دستورات
                                return
                              
                                j4:
                                دستورات
                                return
                              امتحان کن ببین جوابتو میده
                              اگه نداد یک توضیح کوچک بده تا بیشتر کمکت کنم

                              دیدگاه

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