اطلاعیه

Collapse
No announcement yet.

راهنمایی در مورد وقفه سریال

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

    راهنمایی در مورد وقفه سریال

    با عرض سلام و درود
    من میخوام با کامپیوتر یه سری داده رو به از طریق پورت سریال به میکرو ارسال کنم و وقتی که یه کاراکتر خاص مثلا A دریافت شد میکرو داده های قبلی رو تا وقتی که داده ی جدیدی ارسال نشده به ترتیب روی یکی از پورتهاش نمایش بده، و زمانی که داده جدیدی ارسال شد دوباره تا دریافت A به دریافت ادامه بده و... .
    من از وقفه سریال برای این کار استفاده کردم و مطابق کدهایی که توی سایت بود کدم رو نوشتم ولی جواب دلخواه رو نگرفتم، کد رو قرار میدم ممنون میشم راهنمایی کنید.

    ...
    Enable Interrupts
    Enable Urxc
    On Urxc Label

    Dim A As Integer , B As Integer
    Dim Receive(514) As Byte

    $asm
    CLI
    LDI R16,$2
    Out Ucsra , R16
    LDI R16,$10
    Out Ucsrb , R16
    LDI R16,$86
    Out Ucsrc , R16
    CLR R16
    Out Ubrrh , R16
    LDI R16,$33
    Out Ubrrl , R16
    SEI
    $end Asm

    Do
    For A = 1 To B
    Portb = Receive(a)
    Next A
    Loop
    End

    Label:
    For A = 1 To 514
    $asm
    L:
    SBIS UCSRA,7
    RJMP L
    $end Asm
    Receive(a) = Udr
    If Receive(a) = 65 Then
    B = A - 1
    Exit For
    End If
    Next A
    Return

    #2
    پاسخ : راهنمایی در مورد وقفه سریال

    سلام
    میتونی از این دستور استفاده کنی .!

    (?)var = waitkey

    که بجای علامت سوال میتونی مثلا همون A رو بنویسی
    پس در این صورت میکرو منتظر میمونه تا کامپیوتر دستور A رو بفرسته
    AV Maziton 100
    Render By Artlantis Studio
    [img width=346 height=100]http://maziyar123.persiangig.com/View.jpg[/img]

    دیدگاه


      #3
      پاسخ : راهنمایی در مورد وقفه سریال

      نوشته اصلی توسط maziyar123
      میتونی از این دستور استفاده کنی .!

      (?)var = waitkey

      که بجای علامت سوال میتونی مثلا همون A رو بنویسی
      پس در این صورت میکرو منتظر میمونه تا کامپیوتر دستور A رو بفرسته
      من نمیخوام میکرو منتظر بمونه، بلکه یه سری داده رو که با کاراکتر A ختم میشه بگیره و تا زمانی که داده جدیدی نیومده سری داده قبلی رو به ترتیب بفرسته روی پورت B.

      دیدگاه


        #4
        پاسخ : راهنمایی در مورد وقفه سریال

        اگه از Ischarwaiting استفاده کنی دیگه برنامت برا رسیدن دیتای سریال منتظر نمیمونه
        اگه کل کاری که میکرو قراره انجام بده همینه که نیاز به وقفه سریال هم نداره
        فقط شما این آقای Ischarwaiting رو داخل حلقه ای که آرایه رو می ریزه رو پورت قرار بده که اگه تو این فاصله دیتایی اومد از دستش ندی
        Do
        For A = 1 To B
        if ischarwaiting=1 then var=inkey
        Portb = Receive(a
        Next A
        Loop
        End

        دیدگاه


          #5
          پاسخ : راهنمایی در مورد وقفه سریال

          آقا مجید دستت درد نکنه، مشکل ما رو حل کردی :wow: :wow:.

          فقط من متوجه شدم که Ischarwaiting یه تابع هست و باید به همراه پرانتز به کار بره یعنی اینطوری ()Ischarwaiting

          دیدگاه

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