اطلاعیه

Collapse
No announcement yet.

کمک در ارتباط از طریق پورت سریال

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

    کمک در ارتباط از طریق پورت سریال

    من میخوام دوتا میکرو رو از طریق پورت سریال rx,tx به هم وصل کنم ولی اطلاعات منتقل نمیشه و رو lcd چیزی نمیبینم اگه کسی میدونه کمک کنه در ضمن سرچ کردم چیزی پیدا نکردم :eek:اینم یه برنامه ساده که نوشتم فقط برای امتحان پورت سریال
    فرستنده
    $regfile = "m16def.dat"
    $crystal = 8000000
    $baud=9600
    Dim A As Byte
    A = "a"
    Printbin A
    END 'end program
    گیرنده
    $regfile = "m16def.dat"
    $crystal = 8000000
    $baud = 9600
    Dim A As Byte
    Cls
    Lcd "HELLO"
    Do
    Inputbin A
    Lcd a
    Loop



    فقط کسی هرگز اشتباه نمی کند که اصلا کاری انجام نمی دهد

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

    یکی نیست که با پورت سریال کار کرده باشه :angry:
    فقط کسی هرگز اشتباه نمی کند که اصلا کاری انجام نمی دهد

    دیدگاه


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

      اون قسمتی که مربوط به ارسال هست رو داخل لوپ قرار بده یعنی دائما ارسال رو تکرار کن و سعی کن هربار یه عدد جدید رو بفرستی مثلا توی هر لوپ یکی به عددت اضافه کن
      یه ال ای دی وصل کن به پایه های rx و tx ببین خاموش و روشن میشه یا نه
      فکر نمی کنم مشکلی داشته باشه
      به درست کار کردن ال سی دی اطمینان داری؟
      من خودم با دستور Print a کار کردم و جواب گرفتم
      قسمتی از برنامم:
      کد:
      Do
      Start Adc
      A = Getadc(0)
      Temp = A / 2
      Stop Adc
      Print Str(a)
      
      Waitms 50
      
      Loop

      دیدگاه


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

        من الی دی وصل کردم پورت سریال چشمک میزنه ولی رو ال سیدی چیزی نمیبینم فقط hello رو که ثابت گذاشتم میبینم خواهش میکنم کمک کنید خیلی حیاتیه :angry: :angry: :angry: :cry2: :cry2:
        فقط کسی هرگز اشتباه نمی کند که اصلا کاری انجام نمی دهد

        دیدگاه


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

          متغیر A رو به صورت String تعریف کن. چون مقدارشو باکاراکتر پر کردی نه عدد.
          کاری رو هم که مرتضی گفت انجام بده. چون ممکنه زمانی که دستور Print از میکروی اول ارسال میشه ، میکروی دوم هنوز به دستور Input نرسیده باشه.

          دیدگاه


            #6
            پاسخ : کمک در ارتباط از طریق پورت سریال

            من برنامه رو درست کردم همین طور که شما دوستان فرمودید الان تو پروتوس جواب گرفتم ولی رو سخت افزار خودم جواب نمیده یه سری علامت های نا مفهوم میبینم
            اینم برنامه ای که جواب داد :eek: :sad:
            فرستنده
            $regfile = "m16def.dat"
            $crystal = 8000000
            $baud = 9600
            Dim A As String * 30 , I As Byte
            Do
            A = "h"
            Print A
            Loop
            End
            گیرنده
            $regfile = "m16def.dat"
            $crystal = 8000000
            $baud = 9600
            Dim A As String * 10
            Cls
            Lcd "HELLO"
            Do
            Input A
            Lcd a
            Loop
            فقط کسی هرگز اشتباه نمی کند که اصلا کاری انجام نمی دهد

            دیدگاه


              #7
              پاسخ : کمک در ارتباط از طریق پورت سریال

              به نظرتون اگه از کریستال خارجی استفاده کنم کمکی میکنه یا ربطی نداره؟
              راهنمایی کنید :cry2:
              فقط کسی هرگز اشتباه نمی کند که اصلا کاری انجام نمی دهد

              دیدگاه


                #8
                پاسخ : کمک در ارتباط از طریق پورت سریال

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

                دیدگاه


                  #9
                  پاسخ : کمک در ارتباط از طریق پورت سریال

                  اتصالات درسته چون من به هردو طرف lcd وصل کردم من اومدم صفحه کلید کامپیوتر رو وصل کردم و حروف رو تو فرستنده میبینم تو گیرنده وقتی از دستور inputbin a استفاده میکنم یه سری عدد بی ربط میبینم وقتی هم از دستور input a استفاده میکنم چیزی رو نمیبینم
                  من تو قسمت گیرنده نمی دونم دقیقا باید از کدوم دستور استفاده کنم لازمه از lcd string(1,a) وجدول صفحه کلید استفاده کنم یا نه؟
                  تو پروتوس باید صفحه کلید 3*4 جواب گرفتم
                  فقط کسی هرگز اشتباه نمی کند که اصلا کاری انجام نمی دهد

                  دیدگاه


                    #10
                    پاسخ : کمک در ارتباط از طریق پورت سریال

                    یه نفر درست حسابی با پورت سریال کار نکرده که بتونه جواب منو بده خواهش میکنم این مسئله خیلی حیاتیه وگرنه من به خاطر همین اشکال کوچیک تو برنامم باید 100 هزار تومن بدم تا یکی اینو درست کنه آخه انصافه تا اینجاشو رفته باشم 100 هزار تومن ضررم کنم :cry2: :cry2: :cry2: :cry2: :angry: :angry: :angry:
                    فقط کسی هرگز اشتباه نمی کند که اصلا کاری انجام نمی دهد

                    دیدگاه


                      #11
                      پاسخ : کمک در ارتباط از طریق پورت سریال

                      بجای Printbin از Print استفاده کن .
                      یه کم باهاش ور بری درست میشه.

                      دیدگاه


                        #12
                        پاسخ : کمک در ارتباط از طریق پورت سریال

                        سلام
                        فکر می کنم استفاده از Printbin بهتر از دستور Print باشه چرا که اگر از دستور Print استفاده بشه بعد از ارسال داده، به آخرش کدهای 10 و 13 رو هم برای رفتن به خط بعد (البته تو ترمینالها) کامپایلر خودش اضافه می کنه و به احتمال دیدن اون عددهای عجیب و غریب به خاطر همینه. یا از دستور Printbin استفاده کن یا دستور Print رو به صورت زیر استفاده کن:
                        کد:
                        Print a;
                        البته اون سمیکالن یا ; آخر دستور باشه تو سایت اشتباه نشون می ده.
                        استفاده از شکل بالا باعث می شه که کامپایلر به انتهای ارسال کدهای 10 ,13 رو اضافه نکنه.
                        همونطور هم که دوستان گفتن تو فرستنده از Print تو Do-Loop استفاده کن.
                        تو گیرنده هم تو Do-Loop از کد زیر استفاده کن:
                        کد:
                        Do
                         A = Inkey()
                         If A > 0 Then
                           Lcd A
                         End If
                        Loop

                        تو کد بالا A به صورت بایت تعریف شده.
                        موفق باشی

                        دیدگاه


                          #13
                          پاسخ : کمک در ارتباط از طریق پورت سریال

                          این کارم کردم ولی الان فقط یه سری عدد سه رقمی میبینم مثل 111و117و... اگه غکری به ذهنتون میرسه راهنمایی کنید
                          ممنون از همه دوستان
                          فقط کسی هرگز اشتباه نمی کند که اصلا کاری انجام نمی دهد

                          دیدگاه


                            #14
                            پاسخ : کمک در ارتباط از طریق پورت سریال


                            [img]http://[/img]

                            با سلام
                            دوست عزیز من کدویژن کار می کنم

                            اما فکر می کنم نمایش دادن اعداد مختلف برای اینه که این کلید چند بار اسکن میشه

                            باید کاری کنی که فقط یک بار اسکن بشه :nerd:
                            به امید اینکه در پناه یزدان هر روز موضوع جدیدی در زندگی یاد بگیریم و بتوانیم از آن به بهترین شکل استفاده کنیم

                            دیدگاه


                              #15
                              پاسخ : کمک در ارتباط از طریق پورت سریال

                              من تو برنامم یه بار اسکن میکنم یعنی خودش چند بار اسکنش میکنه
                              اگه کسی بیسکام کار کرده لطف کنه اشکال این برنامه ها رو بگه
                              فرستنده
                              $regfile = "m16def.dat"
                              $baud = 2400
                              Config Keyboard = Pind.5 , Data = Pind.6 , Keydata = Keydata
                              Dim A As Byte
                              Cls
                              Main:
                              Do
                              A = Getatkbd()
                              Lcd String(1 , A)
                              Print A ;
                              Waitms 200
                              Loop
                              End 'end program
                              Keydata:
                              Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 27 , 0 , 0 , 0 , 0 , 9 , 9 , &H5E , 0
                              Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
                              Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
                              Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
                              Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
                              Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
                              Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
                              Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
                              Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
                              Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
                              Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
                              Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
                              Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
                              Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
                              Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
                              Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
                              گیرنده
                              $regfile = "M16def.dat"
                              $baud = 2400
                              Dim A As Byte
                              Lcd "WELLCOME"
                              Do
                              A = Inkey()
                              If A > 0 Then
                              Lcd A
                              End If
                              Loop
                              End
                              البته بجای inkey از input ,inputbin,waitkey هم استفاده کردم بازم همین جواب رو میده
                              ممنون :sad: :cry2: :cry2:
                              فقط کسی هرگز اشتباه نمی کند که اصلا کاری انجام نمی دهد

                              دیدگاه

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