اطلاعیه

Collapse
No announcement yet.

این دستورات(bascom)چی میگن؟؟؟؟

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

    این دستورات(bascom)چی میگن؟؟؟؟

    با سلام و خسته نباشید خدمت شما دوستان عزیز:
    آق کسی میدونه که این دستورات چی میگن,لازم به ذکر است که این برنامه در کتاب 11 پروژه آقای مهندس سیدمهدی حسینی برای کنترل دو سرو موتور مورد استفاده قرار گرفته ولی من خیلی کم تونستم این برنامه رو تحلیل کنم گه کسی میدونه خواهشا" سعی کنه که خط به خط دستورات رو توضیح بده چون که من باید تغیراتی در برنامه انجام بدم ولی قبل از آن باید بفهمم چی به چیه,(شدیدا" به این برنامه برای پروژه ام نیاز دارم اگه کسی میدونه خواهشا" کمکم کنه خیلی گیرم). :sad::cry: :cry2:
    ممنونماز اینکه این مطلب رو خواندید.

    کلیات برنامه:
    ما پنج تا کلید داریم که دو تا برای جلو و عقب کردن سرو موتور اولی و دو تا برای سرو موتور دومی بکار میرود و اخرین کلید هم برای reset کردن هر دو موتور مورد استفاده قرار میگیرد که باعث میشود هردو موتور در موقعیت اول خود قرار بگیرند.و همچنین از یک LCD برای نشان دادن موقعیت هر یک از سروها استفاده شده است.(برنامه کاملا" درست است و در محیط Proteus تست شده است).

    "دوستان عزیز اون قسمتهایی که پررنگ تر هستند بیشتر نمیفهمم چی به چیه"


    'Servo Motor
    '-----------------------
    $regfile = "m48def.dat"
    $crystal = 8000000
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = _
    Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.0
    Config Lcd = 16 * 2
    Config Portb.1 = Output
    Config Portb.2 = Output
    Config Portc = Input
    '--------------------------
    Clkpr = &H80
    Clkpr = &H00

    '-------------Timer1 As PWM
    Tccr1a = &HA2
    Tccr1b = &H1A
    Tcnt1h = &H00
    Tcnt1l = &H00
    Icr1h = &H3A
    Icr1l = &H98
    Ocr1ah = &H05
    Ocr1al = &HDC
    Ocr1bh = &H05
    Ocr1bl = &HDC

    '--------------------------
    Declare Function Lcd_show_position()as Byte
    '--------------------------
    Dim Pwm1 As Word
    Dim Pwm2 As Word
    Dim Pwm_temp As Word
    Dim L As Byte
    Dim M1 As Byte , M2 As Byte
    '--------------------------
    Pwm1 = 1500
    Pwm_temp = Pwm1
    Shift Pwm_temp , Right , 8
    Ocr1ah = Pwm_temp
    Ocr1al = Pwm1

    Pwm2 = 1500
    Pwm_temp = Pwm1
    Shift Pwm_temp , Right , 8
    Ocr1bh = Pwm_temp
    Ocr1bl = Pwm1

    '--------------------------
    Cursor Off
    Cls
    Lcd "Start"
    Waitms 500
    Cls
    Lcd "Servo1> Deg"
    Lowerline
    Lcd "Servo2> Deg"
    Waitms 500
    L = Lcd_show_position()
    '--------------------------
    Do
    M1 = Pinc And &H03
    M2 = Pinc And &H0C

    '--------------------------
    Select Case M1
    Case 2:
    If Pwm1 < 2400 Then
    Incr Pwm1
    Pwm_temp = Pwm1
    Shift Pwm_temp , Right , 8
    Ocr1ah = Pwm_temp
    Ocr1al = Pwm1

    L = Lcd_show_position()
    End If
    Case 1:
    If Pwm1 > 600 Then
    Decr Pwm1
    Pwm_temp = Pwm1
    Shift Pwm_temp , Right , 8
    Ocr1ah = Pwm_temp
    Ocr1al = Pwm1

    L = Lcd_show_position()
    End If
    End Select
    '--------------------------
    Select Case M2
    Case 8:
    If Pwm2 < 2400 Then
    Incr Pwm2
    Pwm_temp = Pwm2
    Shift Pwm_temp , Right , 8
    Ocr1bh = Pwm_temp
    Ocr1bl = Pwm2

    L = Lcd_show_position()
    End If
    Case 4:
    If Pwm2 > 600 Then
    Decr Pwm2
    Pwm_temp = Pwm2
    Shift Pwm_temp , Right , 8
    Ocr1bh = Pwm_temp
    Ocr1bl = Pwm2

    L = Lcd_show_position()
    End If
    End Select
    '---------------------------
    If Pinc.4 = 0 Then
    Cls
    Lcd "Servo1> Deg"
    Lowerline
    Lcd "Servo2> Deg"
    Pwm1 = 1500
    Pwm_temp = Pwm1
    Shift Pwm_temp , Right , 8
    Ocr1ah = Pwm_temp
    Ocr1al = Pwm1

    Pwm2 = 1500
    Pwm_temp = Pwm1
    Shift Pwm_temp , Right , 8
    Ocr1bh = Pwm_temp
    Ocr1bl = Pwm1

    L = Lcd_show_position()
    End If
    Loop
    End
    '--------------------------
    Function Lcd_show_position() As Byte
    Dim P1 As Integer
    Dim P2 As Integer
    P1 = Pwm1 - 600
    P1 = P1 / 10
    P2 = Pwm2 - 600
    P2 = P2 / 10
    Locate 1 , 9
    Lcd " "
    Locate 1 , 9
    Lcd P1
    Locate 2 , 9
    Lcd " "
    Locate 2 , 9
    Lcd P2
    End Function
    راههايي که به آينده ختم مي شوند رفتني نيستند، ساختني اند!
    No Risk, No Reward

    #2
    پاسخ : این دستورات(bascom)چی میگن؟؟؟؟

    Tccr1a = &HA2
    Tccr1b = &H1A
    Tcnt1h = &H00

    و دستورات مشابه مربوط به مقدار دهی رجیستر های میکرو هستن. برای دریافت اطلاعات کامل تر به دیتاشیت مراجعه کنید.
    -----------------------------------------------------
    دستور shift برای شیفت دادن (انتقال بیت ها به چپ یا راست) به کار میره.
    -----------------------------------------------------
    M1 = Pinc And &H03
    M2 = Pinc And &H0C
    در اینجا مقدار پورت C با مقادیر H03&و H0C& اند(And) شده و داخل متغییرهای M1 و M2 قرار میگیره.
    ----------------------------------------------------
    Function هم برای تعریف تابع هست.

    وظیفه این تابع نشان دادن مقدار PWM (البته-600 و تقسیم بر 10) رو LCD هست.

    دیدگاه


      #3
      پاسخ : این دستورات(bascom)چی میگن؟؟؟؟

      اینها درست ولی این ,Tccr1b,Tccr1aTcnt1hو ....در این برنامه برای چی نوشته شدند؟ oo: :-?? :angry:
      و اینها &HA2 چه جوری خوانده میشند مثلا" اگه خواستیم بنویسیم 1500 باید چه کرد؟ :-?? oo: :angry:
      راههايي که به آينده ختم مي شوند رفتني نيستند، ساختني اند!
      No Risk, No Reward

      دیدگاه


        #4
        پاسخ : این دستورات(bascom)چی میگن؟؟؟؟

        مقادیر H& در مبنای 16 و B& در مبنای 2 هستن.
        برای تبدیل این مقادیر به هم میآ‌تونید از لینک زیر استفاده کنید:

        http://www.statman.info/conversions/hexadecimal.html

        1500 میشه H5dc&

        دیدگاه


          #5
          پاسخ : این دستورات(bascom)چی میگن؟؟؟؟

          و اینها &HA2 چه جوری خوانده میشند مثلا" اگه خواستیم بنویسیم 1500 باید چه کرد؟
          با ماشین حساب ویندوز در حالت scientific
          من نمىآ‌توانم فرضیه «بىآ‌اخلاقى انسان» را بپذیرم، و من اخلاق را منحصرا امرى انسانى و متعلق به انسان مىآ‌دانم که هیچ نوع قدرت مافوق انسانى در پشت آن وجود ندارد
          آلبرت اینشتین
          منبع: http://fa.wikiquote.org

          دیدگاه


            #6
            پاسخ : این دستورات(bascom)چی میگن؟؟؟؟

            okay :redface:
            ممنون از شما دو بزرگوار :applause:
            راههايي که به آينده ختم مي شوند رفتني نيستند، ساختني اند!
            No Risk, No Reward

            دیدگاه

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