اطلاعیه

Collapse
No announcement yet.

روش خواندن یک فریم اطلاعات پورت سریال در AVR

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

    روش خواندن یک فریم اطلاعات پورت سریال در AVR

    سلام روش خواندن یک فریم اطلاعات پورت سریال در AVR

    یک فریم 8 بایتی داریم که بایت آغازین آن عدد CA هگز است و بایت پایانی آن عدد 35 هگز است و بین این دو عدد 6 بایت اطلاعات هگز داریم .مثلا:
    35 CA 25 4f 58 ff c2 5a
    برای گرفتن این فریم اطلاعات برنامه زیر را پیشنهاد می کنم .توجهک بایت های 2 تا 7 متغیرندو تنها بایت های استارت و استپ ثابت هستند.




    $regfile = "m32def.dat"
    $crystal = 11059200
    $baud = 38400
    $hwstack = 32 ' default use 32 for the hardware stack
    $swstack = 10 ' default use 10 for the SW stack
    $framesize = 64

    ''====================================== ====================
    Config Portb = Output
    ''====================================== =======================
    Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 0
    ''====================================== ===============
    Config Lcd = 16 * 2
    ''====================================== ====================
    Config Lcdpin = Pin , Db4 = Pinc.0 , Db5 = Pinc.1 , Db6 = Pinc.2 , Db7 = _
    Pinc.3 , Rs = Pinc.4 , E = Pinc.5
    ''====================================== ==========================
    Dim Uart_resive As Byte
    Dim Uart_data As Byte
    Dim Buffer(16) As Byte
    Dim Display_buff(16) As Byte
    Dim Counter_buff As Byte
    Dim Sh As Byte
    Dim Up As Byte
    Dim Point As Bit




    'Cursor Off
    Cls
    ''=================='============== ==========================

    On Urxc Serial_data_recive_by_uart0
    Enable Urxc
    Enable Interrupts

    ''====================================== ========================
    Do


    Locate 1 , 1
    Lcd Hex(buffer(1))

    Locate 1 , 3
    Lcd Hex(buffer(2))

    Locate 1 , 5
    Lcd Hex(buffer(3))

    Locate 1 , 7
    Lcd Hex(buffer(4))

    Locate 1 , 9
    Lcd Hex(buffer(5))

    Locate 1 , 11
    Lcd Hex(buffer(6))

    Locate 1 , 13
    Lcd Hex(buffer(7))

    Locate 1 , 15
    Lcd Hex(buffer(8))




    Loop







    Serial_data_recive_by_uart0:
    Stt:
    While Ucsra.7 = 1
    Buffer(counter_buff) = Udr

    If Buffer(1) = 202 Then
    Goto Buff
    Else
    Counter_buff = 1
    Goto Stt
    End If
    Buff:

    Incr Counter_buff
    If Counter_buff = 9 Then
    Counter_buff = 1
    Goto En
    End If
    Wend
    En:
    Return

    #2
    پاسخ : روش خواندن یک فریم اطلاعات پورت سریال در AVR

    معمولا فریم دیتا بایت اول یا حتی بیت اول به عنوان استارت یا شروع هشت و بایت پایانی به عنوان چک سام و اون بایت های وسط متغییر هستند
    1-تمام 8 تا بایت رو بگیر تو یه ارایه ذخیره کن
    2-چک سام و بایت اولا رو چک کن ببین درست گرفتی یا نه
    3- حالا اگه درسته با یه دستور مثلا FOR بیت به بیت همه رو چک
    مثلا بیت اول بایت دوم شماره 9 میشه ببین یک با صفره(البته اگه بیت برات مهمه) اگه هم بایت بایت بخوای بخونی که دیگه خیلی راحتر میشه
    تو اين جهان 7 ميلياردي من معني ندارد و اگه تو اين دنيا فقط 1 نفر وجود داشت باز هم من معني نداشت

    دیدگاه


      #3
      پاسخ : روش خواندن یک فریم اطلاعات پورت سریال در AVR

      حرف شما درسته من تنها روش کلی رو گفتم .
      ممنون میشم اگه هر کسی مثل شما اطلاعات رو روی سایت بذاره. آخه همه تو این مورد خیلی ضعیف هستند.

      دیدگاه


        #4
        پاسخ : روش خواندن یک فریم اطلاعات پورت سریال در AVR

        اگه میشه برنامه کاملی رو توی انجمن بذارید.

        دیدگاه

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