اطلاعیه

Collapse
No announcement yet.

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

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

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

    دو نکته تو این برنامه بالایی هست می گم که می تونه بهتر بکنه کارو البته یکیش غلط املایی

    برای اینکه طبق استاندارد بخواهیم پیش بریم بباید به جای goto j1 بنویسیم gosub j1 چون در این دستور بازگشت داره و در حقیقت برای زیر برنامه استفاده می شه

    دوم اینکه گزینه پرش باید همیشه آخرین گزینه برای ما باشه چون باعث سردرگمی و سختی در بیان مفهوم برنامه می شه برای همین همون دستوراتی که می خواد تو زیر برنامه j1 نوشت بشه رو تو همون جای که نوشتید goto j1 بنویسید یعنی تو همون کیس مربوطه چون تو دستور کیس می توانید ان خط برنامه تو هر کیس بنویسید
    همانطور كه مايل نيستم بنده كسي باشم، حاضر نيستم آقاي كسي باشم. كساني كه مخالف آزادي ديگرانند، خود لياقت آزادي را ندارند.((آبراهام لينكن))

    قدرت شگفت انگيز نيروهاي خلاق و استعدادهاي نهفته آدمي هنگامي آشكار مي شود كه نيازي حياتي، تواناييهاي او را به فعاليت وادارد و كشش آرزويي، سراپاي وجودش را به جنب و جوش درآورد.((آبراهام لينكن))

    [img width=343 height=100]http://www.elecdesigner.com/uploads/PRO-DESIGNER-GROUP.jpg[/img]

    دیدگاه


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

      نوشته اصلی توسط PRO-DESIGNER
      دو نکته تو این برنامه بالایی هست می گم که می تونه بهتر بکنه کارو البته یکیش غلط املایی

      برای اینکه طبق استاندارد بخواهیم پیش بریم بباید به جای goto j1 بنویسیم gosub j1 چون در این دستور بازگشت داره و در حقیقت برای زیر برنامه استفاده می شه

      دوم اینکه گزینه پرش باید همیشه آخرین گزینه برای ما باشه چون باعث سردرگمی و سختی در بیان مفهوم برنامه می شه برای همین همون دستوراتی که می خواد تو زیر برنامه j1 نوشت بشه رو تو همون جای که نوشتید goto j1 بنویسید یعنی تو همون کیس مربوطه چون تو دستور کیس می توانید ان خط برنامه تو هر کیس بنویسید
      میگگم راه دیگه ای برا این کار نیست ؟ ساده تر و سریعتر ؟

      دیدگاه


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

        اینی که دوستان پیشنهاد دادن چنان سختو و کند نیست خوب کار می کنه ولی اگر تو لوپ اصلی کیس رو انتخاب کنی سرعت پاسخ دهی اینتراپتت بیشتر می شه ولی اونجوری باید یه کم برنامه نویسیت قوی تر باشه که کارا تو هم قاطی نشه
        همانطور كه مايل نيستم بنده كسي باشم، حاضر نيستم آقاي كسي باشم. كساني كه مخالف آزادي ديگرانند، خود لياقت آزادي را ندارند.((آبراهام لينكن))

        قدرت شگفت انگيز نيروهاي خلاق و استعدادهاي نهفته آدمي هنگامي آشكار مي شود كه نيازي حياتي، تواناييهاي او را به فعاليت وادارد و كشش آرزويي، سراپاي وجودش را به جنب و جوش درآورد.((آبراهام لينكن))

        [img width=343 height=100]http://www.elecdesigner.com/uploads/PRO-DESIGNER-GROUP.jpg[/img]

        دیدگاه


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

          نوشته اصلی توسط PRO-DESIGNER
          اینی که دوستان پیشنهاد دادن چنان سختو و کند نیست خوب کار می کنه ولی اگر تو لوپ اصلی کیس رو انتخاب کنی سرعت پاسخ دهی اینتراپتت بیشتر می شه ولی اونجوری باید یه کم برنامه نویسیت قوی تر باشه که کارا تو هم قاطی نشه
          چطوری میتونم بعد از اعمال وقفه به INT 1 اونو مستقیم به DO / LOOP اصلی برنامه انتقال بدم تا اونجا CASE انتخاب بشه ؟

          ممنون

          دیدگاه


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

            یه متغیر بزار که تو اینتراپت مقدارشو مثلا بکن یک بعد تو لوپ اصلیت این متغیرو با یک if چک کن اگر یک شده بود یعنی رفتی تو اینتراپت بعد تو داخل if کل بندو بساط case رو بزار بعد از اتمام کیست متغیرو دوباره صفر کن بعد if رو ببند حالا دیگه شرط برقرار نمی شه مگر اینکه دوباره اینتراپت رخ بده

            یه کم دقیق بخونی چیزی که گفتم رو تو همه برای کار با اینتراپت بهت جواب می ده
            همانطور كه مايل نيستم بنده كسي باشم، حاضر نيستم آقاي كسي باشم. كساني كه مخالف آزادي ديگرانند، خود لياقت آزادي را ندارند.((آبراهام لينكن))

            قدرت شگفت انگيز نيروهاي خلاق و استعدادهاي نهفته آدمي هنگامي آشكار مي شود كه نيازي حياتي، تواناييهاي او را به فعاليت وادارد و كشش آرزويي، سراپاي وجودش را به جنب و جوش درآورد.((آبراهام لينكن))

            [img width=343 height=100]http://www.elecdesigner.com/uploads/PRO-DESIGNER-GROUP.jpg[/img]

            دیدگاه


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

              نوشته اصلی توسط PRO-DESIGNER
              یه متغیر بزار که تو اینتراپت مقدارشو مثلا بکن یک بعد تو لوپ اصلیت این متغیرو با یک if چک کن اگر یک شده بود یعنی رفتی تو اینتراپت بعد تو داخل if کل بندو بساط case رو بزار بعد از اتمام کیست متغیرو دوباره صفر کن بعد if رو ببند حالا دیگه شرط برقرار نمی شه مگر اینکه دوباره اینتراپت رخ بده

              یه کم دقیق بخونی چیزی که گفتم رو تو همه برای کار با اینتراپت بهت جواب می ده
              دمت گرم
              میشه این یه تیکه رو واضح تر بگی یا به بیسیک بنویسی :

              یه متغیر بزار که تو اینتراپت مقدارشو مثلا بکن یک

              دیدگاه


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



                به طور مثال


                کد:
                [left]
                
                do
                if pro=1 then 
                select case 
                .
                .
                .
                ..
                .
                end select
                pro=0
                end if
                
                loop
                
                end
                
                myint:
                incr i
                pro=1
                
                return
                
                
                [/left]
                اینم یه مثال ساده البته اینم بگم مثالی که من نوشتم رو شما با مال دوستان ادغام کن یعنی قسمت کیسو ایناتو خودت بنویس

                این روش رو برای همه مدل وقفه می شه استفاده کرد اگر این روشو خوب بلد شی کاری می کنی با همین بسکامو و avr که برو بچه های پر ادعای arm می گن سرعت avr که کف می کنن :job:
                همانطور كه مايل نيستم بنده كسي باشم، حاضر نيستم آقاي كسي باشم. كساني كه مخالف آزادي ديگرانند، خود لياقت آزادي را ندارند.((آبراهام لينكن))

                قدرت شگفت انگيز نيروهاي خلاق و استعدادهاي نهفته آدمي هنگامي آشكار مي شود كه نيازي حياتي، تواناييهاي او را به فعاليت وادارد و كشش آرزويي، سراپاي وجودش را به جنب و جوش درآورد.((آبراهام لينكن))

                [img width=343 height=100]http://www.elecdesigner.com/uploads/PRO-DESIGNER-GROUP.jpg[/img]

                دیدگاه


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

                  ممنون
                  منظورم اینجا بود :

                  Dim G As Byte
                  Config Int1 = Rising
                  Enable Int1
                  Enable Interrupts
                  On Int1 XXXX

                  به جای XXXX چی بنویسم ؟
                  که بره داخل DO / LOOP بعد اونجا متغییر چک بشه ؟

                  دیدگاه


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

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

                    قدرت شگفت انگيز نيروهاي خلاق و استعدادهاي نهفته آدمي هنگامي آشكار مي شود كه نيازي حياتي، تواناييهاي او را به فعاليت وادارد و كشش آرزويي، سراپاي وجودش را به جنب و جوش درآورد.((آبراهام لينكن))

                    [img width=343 height=100]http://www.elecdesigner.com/uploads/PRO-DESIGNER-GROUP.jpg[/img]

                    دیدگاه


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

                      فکر کنم من دوتا روش قاطی کردم !
                      اخه تو این برنامم تا اونجا پیش رفتم که هروقت وقفه فعال شد برو به زیر برنامه فلان :

                      Dim G As Byte
                      Config Int1 = Rising
                      Enable Int1
                      Enable Interrupts
                      On Int1 XXXX

                      و زیر برنامه xxxx دستورات مارو انجام میده
                      توی DO/loop اصلی هم چیزی ننوشتم
                      یکی از دوستان اینجوریش کرد :

                      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
                      که البته مشکل داره

                      حالا طبق این :



                      do
                      if pro=1 then
                      select case
                      .
                      .
                      .
                      ..
                      .
                      end select
                      pro=0
                      end if

                      loop

                      end

                      myint:
                      incr i
                      pro=1

                      return



                      که شما نوشتید قبل از دستور دولوپ ، در قسمت پیکربندی وقفه چی باید نوشت ؟

                      شرمنده من مبتدی ببخشید خستتون کردم !

                      دیدگاه


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


                        Dim G As Byte
                        Config Int1 = Rising
                        Enable Int1
                        Enable Interrupts
                        On Int1 XXXX

                        و زیر برنامه xxxx دستورات مارو انجام میده
                        توی DO/loop اصلی هم چیزی ننوشتم
                        یکی از دوستان اینجوریش کرد :

                        Config Int1 = Rising
                        Enable Int1
                        enable Interrupts
                        On Int1 Javad
                        dim i as integer
                        dim pro as byte
                        i=0
                        Do
                        if pro =1 then
                        select case i
                        case is <11:
                        kari ke bayad ta 10 anjam bede ro inja benevis
                        case 11 to 19:
                        kari ke az 11 ta 19 bayad anjam bede ro inja benevis
                        case 20 to 29:
                        kari ke bayad az 20 ta 29 ro anjam bede ro inja benevis
                        case is>29:
                        kari ke bayad az 29 be baad anjam bede ro inja benevis
                        .
                        .
                        .
                        end select
                        pro=0
                        end if

                        Loop

                        End

                        Javad:
                        i=i+1
                        pro=1
                        Return

                        ببین دوست عزیز من گفتم develop نه دو لووپ :دی اشکال نداره سوال بپرس هزار تا ولی باید آخر کارتو خودت جمع کنی من اورز نشستم تا زکات علم 3 سالو بدم تا میتونی پست بزن که امروز فردا بره می ره تا سه سال دیگه دکمه تشکرم واسه قبلی ها و بعدی ها یادت نره : دی
                        همانطور كه مايل نيستم بنده كسي باشم، حاضر نيستم آقاي كسي باشم. كساني كه مخالف آزادي ديگرانند، خود لياقت آزادي را ندارند.((آبراهام لينكن))

                        قدرت شگفت انگيز نيروهاي خلاق و استعدادهاي نهفته آدمي هنگامي آشكار مي شود كه نيازي حياتي، تواناييهاي او را به فعاليت وادارد و كشش آرزويي، سراپاي وجودش را به جنب و جوش درآورد.((آبراهام لينكن))

                        [img width=343 height=100]http://www.elecdesigner.com/uploads/PRO-DESIGNER-GROUP.jpg[/img]

                        دیدگاه


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

                          نوشته اصلی توسط PRO-DESIGNER

                          ببین دوست عزیز من گفتم develop نه دو لووپ :دی اشکال نداره سوال بپرس هزار تا ولی باید آخر کارتو خودت جمع کنی من اورز نشستم تا زکات علم 3 سالو بدم تا میتونی پست بزن که امروز فردا بره می ره تا سه سال دیگه دکمه تشکرم واسه قبلی ها و بعدی ها یادت نره : دی
                          اقا دمت گرم بلاخره این زکات علمت کار مارو راه انداخت

                          پیروز و سربلند باشید :applause: :applause:

                          دیدگاه


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

                            قربانت کاری نکردم همچینین

                            یا علی
                            همانطور كه مايل نيستم بنده كسي باشم، حاضر نيستم آقاي كسي باشم. كساني كه مخالف آزادي ديگرانند، خود لياقت آزادي را ندارند.((آبراهام لينكن))

                            قدرت شگفت انگيز نيروهاي خلاق و استعدادهاي نهفته آدمي هنگامي آشكار مي شود كه نيازي حياتي، تواناييهاي او را به فعاليت وادارد و كشش آرزويي، سراپاي وجودش را به جنب و جوش درآورد.((آبراهام لينكن))

                            [img width=343 height=100]http://www.elecdesigner.com/uploads/PRO-DESIGNER-GROUP.jpg[/img]

                            دیدگاه

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