اطلاعیه

Collapse
No announcement yet.

استفاده از دستور int + تبدیل byte از 0 تا 256 به 0 تا 3

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

    #31
    پاسخ : استفاده از دستور int + تبدیل byte از 0 تا 256 به 0 تا 3

    نوشته اصلی توسط zoheyr79
    آقا سامان میشه مشکل برنامه ی خودمو درست کنید :cry:
    آخه اینی که شما نوشتی من چیزی ازش سر در نمیارم و اگه بخوام یه جای دیگه از این دستور استفاده کنم به مشکل بر میخورم و همچنین برنامه شما که به یه قسمت دیگه پرش نمیخوره :cry:
    ببخشید سرتونو درد آوردم
    برنامه رو همیشه طوری طراحی کنید که خیلی ساده و کاربردی باشه ...
    نه اینکه لقمه را دور سرتون 10 دور بپیچید ...
    ببیین دوست عزیز
    برنامه که تحلیلش کنید متوجه خواهید شد که با هر بار اجرا شدن وقفه (interrupt) برنامه به روتین وقفه خواهد رفت ...
    این برنامه ای که نوشتم میگه که با هر بار فشار دادن کلید یکی به متغیر A اضافه کن ... یه شرط گذاشتم تا بین 1 تا 2 تغییر کند به اینصورت که اگر دیدی که متغیر مساوی 3 شد برابر با 1 کن ... یعنی بین 1 و 2 تغییر پیدا میکند ...
    بعد از اون پورت C را برابر با متغیر A میکنم ... همین ...
    اون برنامه ای که شما نوشتید یک تیکه برنامه را مدام تکرار خواهد کرد ...
    شما باید طوری برنامه را بنویسید که هر موقع کلید زده شد تغییرات را انجام دهد و به برنامه های دیگر بپردازد ...
    اصول به کار گیری وقفه یعنی همین ...
    یعنی هر موقع تغییری احساس شد یه تیکه از برنامه که برایش تعیین کردیم را اجرا کند و بعد به سمت برنامه های در حال اجرا بپرداز ...
    برنامه داخل روتین وقفه نباید طولانی باشد ...

    پیروز باشید ...
    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
    معرفی نرم افزار Codewizard PWM
    با من بیشتر آشنا شوید

    دیدگاه


      #32
      پاسخ : استفاده از دستور int + تبدیل byte از 0 تا 256 به 0 تا 3

      نوشته اصلی توسط سامان اسدی
      برنامه رو همیشه طوری طراحی کنید که خیلی ساده و کاربردی باشه ...
      نه اینکه لقمه را دور سرتون 10 دور بپیچید ...
      ببیین دوست عزیز
      برنامه که تحلیلش کنید متوجه خواهید شد که با هر بار اجرا شدن وقفه (interrupt) برنامه پرشه به روتین وقفه خواهد رفت ...
      این برنامه ای که نوشتم میگه که با هر بار فشار دادن کلید یکی به متغیر A اضافه کن ... یه شرط گذاشتم تا بین 1 تا 2 تغییر کند به اینصورت که اگر دیدی که متغیر مساوی 3 شد برابر با 1 کن ... یعنی بین 1 و 2 تغییر پیدا میکند ...
      بعد از اون پورت C را برابر با متغیر A میکنم ... همین ...
      اون برنامه ای که شما نوشتید یک تیکه برنامه را مدام تکرار خواهد کرد ...
      شما باید طوری برنامه را بنویسید که هر موقع کلید زده شد تغییرات را انجام دهد و به برنامه های دیگر بپردازد ...
      اصول به کار گیری وقفه یعنی همین ...
      یعنی هر موقع تغییری احساس شد یه تیکه از برنامه که برایش تعیین کردیم را اجرا کند و بعد به سمت برنامه های در حال اجرا بپرداز ...
      برنامه داخل روتین وقفه نباید طولانی باشد ...

      پیروز باشید ...

      حالا چرا میزنین :mrgreen: الان فهمیدم مشکل کار چیه ممنون
      اما آقا سامان من گفتم که میخوام هر زمانی که میکرو سوییچ رو زدم به از سه تا حلقه ای که قراره درست کنم توی برنامه هر بار به یک حلقه بره :agree:
      الانم دارم یه کارایی میکنم :nice: بازم ممنون ببخشید که همیشه با سوالای مزخرفم شما رو ناراحت میکنم

      دیدگاه


        #33
        پاسخ : استفاده از دستور int + تبدیل byte از 0 تا 256 به 0 تا 3

        سلام
        برنامه جالبیه
        کد:
        "
        Config Porta = Output
        Config Int0 = Falling
        
        Dim A As Byte
        
        Enable Int0
        Enable Interrupts
        
        A = 1
        
        On Int0 G
        
        B:
        
        Do
        
        Select Case A
        
        Case 3 : _
        
        Do
        
        Porta = &H01
        
        If A < 3 Then Goto B
        
        Loop
        
        Case 2 : _
        
        Do
        
        Porta = &H02
        
        If A > 2 Then Goto B
        
        Loop
        
        Case 1 : _
        
        Do
        
        Porta = &H04
        
        if a>1 then goto B
        
        Loop
        
        End Select
        
        Loop
        
        G:
        
        Waitms 1
        
        Incr A
        
        If A = 4 Then A = 120
        
        Return
        اگه خوب نیست شرمنده :sad:
        خیلی سعی کردم تا اون چیزی که شما می خواهید باشه :rolleyes:

        دیدگاه


          #34
          پاسخ : استفاده از دستور int + تبدیل byte از 0 تا 256 به 0 تا 3

          درود
          از حلقه های شرطی استفاده کنید ...
          مانند کد زیر :
          [code=qbasic]$regfile = "m8def.dat"
          $crystal = 8000000
          $hwstack = 100
          $swstack = 100
          $framesize = 320

          Config Portc = Output
          Config Portd = Input

          Led Alias Portc.0

          Config Int0 = Falling
          On Int0 _int0
          Enable Int0
          Enable Interrupts

          Dim A As Byte


          Do
          While A = 0
          Toggle Led
          Waitms 100
          Wend
          '=================
          While A = 1
          Toggle Led
          Waitms 200
          Wend
          '=================
          While A = 2
          Toggle Led
          Waitms 300
          Wend
          '=================
          While A = 3
          Toggle Led
          Waitms 400
          Wend
          '=================
          While A = 4
          Toggle Led
          Waitms 500
          Wend
          '=================
          While A = 5
          Set Led
          Waitms 200
          Reset Led
          Waitms 200
          Set Led
          Waitms 200
          Reset Led
          Waitms 1000
          Wend
          '=================
          ''''''
          ''''''
          ''''''
          ''''''
          'While A = n
          '
          'Wend
          Loop
          End


          _int0:
          Incr A
          If A = 6 Then A = 0
          Return[/code]

          شاد و پیروز باشید ...
          [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
          معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
          معرفی نرم افزار Codewizard PWM
          با من بیشتر آشنا شوید

          دیدگاه

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