اطلاعیه

Collapse
No announcement yet.

مشکل در ارتباط rs232 و میکرو

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

    مشکل در ارتباط rs232 و میکرو

    با سلام خدمت دوستان
    من میخوام بین نرم افزار مطلب و میکرو با استفاد از مبدل usb به rs232 ارتباط برقرارکنم ام نیتونم
    برنامه بسکام
    $regfile = "m16def.dat"
    $crystal = 8000000
    $baud = 9600
    Dim A As Byte
    A = Inkey() :
    If A = "1" Then Porta.1 = A
    Loop
    End
    برنامه مطلب
    s=serial('com4'
    fopen(s)
    fwrite(s,1)
    >> fclose(s)
    پایه های rxd و txd را هم وصل کردم
    میخوام led که به پورت a وصل کردم روشن بشه
    اما با زدن دستوات داخل مطلب هیچ اتفاقی نیافتاد از fprintf(s,1) اتفاقی نیافتاد
    مشکل کجاست؟

    #2
    پاسخ : مشکل در ارتباط rs232 و میکرو

    با سلام
    تا اونجا که یادمه توی بسکام هرچی بین دبل کوتیشن نوشته میشه حکم رشته رو داره که اگه این طور باشه نوع مقایسه با نوع متغیر همخونی نداره به نظرم من بیایید از معادل اسکی رشته "1" که فکر کنم میشه 49 برای انجام عمل مقایسه استفاده کنید یا اینکه نوع متغیر رو از نوع رشته تعریف کنید .
    و از طرفی Porta.1 = A اینجا منتج به اون چیزی که توی ذهن شماست نمیشه چون مقداری که توی A قرار میگیره مقدار 0 و 1 نیست بلکه معادل اسکی رشته های "0" و "1" هست .

    و یه مورد دیگه اینکه اول ببینید میتونید با هایپر ترمینال ویندوز ارتباط برقرار کنید ، مثلا یه جمله رو توی هایپر ترمینال از طریق میکرو نمایش بدید .

    دیدگاه


      #3
      پاسخ : مشکل در ارتباط rs232 و میکرو

      سلام دوست عزیز
      اول شما میکرو رو کریستال خارجی تنظیم کردی
      دوم شما نوع پورت را تو میکرو مشخص نکردی که خروجی هست یا ورودی

      هر گاه خداوند تو را به لبه پرتگاه هدايت کرد به خدا اطمينان کن،يا تو را از پشت خواهد گرفت يا به تو پرواز کردن خواهد آموخت.

      دیدگاه


        #4
        پاسخ : مشکل در ارتباط rs232 و میکرو

        نوشته اصلی توسط ehsanarn
        سلام دوست عزیز
        اول شما میکرو رو کریستال خارجی تنظیم کردی
        دوم شما نوع پورت را تو میکرو مشخص نکردی که خروجی هست یا ورودی
        سلام من پورت رو خروجی تنظیم کرده بودم اما یادم رفت اینجا بنویسم
        این کریستال خارجی تعریف کردم یعنی چی؟
        یکم بیشتر توضح بدید؟
        نوشته اصلی توسط mojtaba_led
        با سلام
        تا اونجا که یادمه توی بسکام هرچی بین دبل کوتیشن نوشته میشه حکم رشته رو داره که اگه این طور باشه نوع مقایسه با نوع متغیر همخونی نداره به نظرم من بیایید از معادل اسکی رشته "1" که فکر کنم میشه 49 برای انجام عمل مقایسه استفاده کنید یا اینکه نوع متغیر رو از نوع رشته تعریف کنید .
        و از طرفی Porta.1 = A اینجا منتج به اون چیزی که توی ذهن شماست نمیشه چون مقداری که توی A قرار میگیره مقدار 0 و 1 نیست بلکه معادل اسکی رشته های "0" و "1" هست .

        و یه مورد دیگه اینکه اول ببینید میتونید با هایپر ترمینال ویندوز ارتباط برقرار کنید ، مثلا یه جمله رو توی هایپر ترمینال از طریق میکرو نمایش بدید .
        به نظر شما ممکن از پورت دیگه استفاده کنم جواب بگیرم؟
        با هایپر ترمینال ویندوز میشه یک عدد باینری 0 1 بفرستم رو پورت سریال بعد با میکرو بخونم یک خروجی رو 1 کنم؟

        دیدگاه


          #5
          پاسخ : مشکل در ارتباط rs232 و میکرو

          به نظر شما ممکن از پورت دیگه استفاده کنم جواب بگیرم؟
          نه منظور من این نبود که مشکل از پورته ، من گفتم مقداری که دارید به دارید به یک بیت نسبت میدی بک مقدار تک بیتی نیست بلکه یه کاراکتر 8 بیتی هست که میشه معادل کد اسکی شته مورد نظر

          با هایپر ترمینال ویندوز میشه یک عدد باینری 0 1 بفرستم رو پورت سریال بعد با میکرو بخونم یک خروجی رو 1 کنم؟
          کلا هر چی از کی بورد به واسطه هایپر ترمینال به میکرو از طریق پورت سریال ارسال میشه لزوما عدد یا اعدادی برمبنای اعداد دهدهی یا باینری یا هگزه نیست بلکه یک کاراکتره و هر کاراکتر معادل یک کد اسکی در مبنای دسیمال هست که میونید شما اون رو برحسب باینری یا هگزه و یا هر مبنای قانونمند دیگه ای در نظر بگیرید و اون رو بخونید ، در واقع این کد اسکی اون چیزی هست که در هر بار زدن یک کلید از کی بورد در بافر قرار میگره و میکرو اون رو از طریق پورت سریال در قالب یک کاراکتر دریافت میکنه برای آشنای بیشتر توی هلپ بسکام این رو سرچ کنید : ASCII chart

          کاری که من خودم انجام میدم به این صورت هست که میام یه متغیر از نوع رشته تعریف میکنم بعد میام میگم این رشته معادل اسکی اش چی میشه ، حالا هر وقت این رشته ارسال شد اون رو با مقدار اسکی که میدونم چی هست مقایسه میکنم اگه برابر بود فلان کار بکن اگه نبود بسان کار !

          برای مثال این برنامه رو ببینید :

          کد:
          '*********/////////////////--------2007/02/05+++++++++###############~~~~~~~~~~~
          $regfile = "M32def.dat"
          $crystal = 7373800
          $baud = 9600
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = _
          Porta.7 , E = Porta.2 , Rs = Porta.0
          Config Lcd = 16 * 2
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          Config Portb = Output
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          Dim A As String * 16
          Dim D As Integer
          Dim Pice As String * 1
          Dim L As Byte
          Dim W As Byte
          Dim X As Byte
          Dim Y As Byte
          Dim I As Byte
          Dim V As Byte
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          Cls
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          Lcd "programmer:mohammad safari"
          Waitms 1000
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          For V = 1 To 15
          Shiftlcd Right
          Waitms 500
           Next
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           Do
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~********************~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           Cls
          Home
          
          Input "INPUT TEXT THEN PRESS ENTER:" , A
          
          L = Len(a)
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~++++++++++++++++++++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          For W = 1 To L
            Pice = Mid(a , W , 1)
            Y = 16 - W
            For I = 1 To Y
              X = 16 - I
              Locate 1 , X
              Lcd Pice
              Incr X
              Locate 1 , X
              Lcd " "
              Waitms 10
            Next
           Next
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~--------------------~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           Waitms 1000
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           D = Checksum(a)
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~/////////////////////~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          If D = 245 Then
          Lcd "lamp1=on"
          Portb.0 = 1
          End If
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~#####################~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          If D = 83 Then
          Lcd "lamp1=off"
          Portb.0 = 0
          End If
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~#####################~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          If D = 246 Then
          Lcd "lamp2=on"
          Portb.1 = 1
          End If
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~#####################~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          If D = 84 Then
          Lcd "lamp1=off"
          Portb.1 = 0
          End If
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~#####################~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          Loop
          End                             'end program


          دیدگاه

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