اطلاعیه

Collapse
No announcement yet.

نحوه تفکیک بایت های مختلف دریافتی در کار با uesart

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    نحوه تفکیک بایت های مختلف دریافتی در کار با uesart

    من اطلاعات را به صورت بایت بایت از طریق uesart دریافت میکنم . :rolleyes: ولی روی اطلاعات کنترل ندارم :surprised:. یعنی مثلا وقتی 4 تا بایت پشت سر هم ارسال میشوند نمیتونم اونها را از هم تفکیک کنم. یعنی اولی را بریزم توی یک متغیر ، دومی را توی متغیر دوم و ... . چطوری میشه متوجه شد که کی یک بسته اطلاعات کاملا ریخته شده ؟ یعنی اینکه وقتی 4 بایت پشت سر هم فرستاده میشوند ، و این کار به صورت تکراری ، پشت سر هم انجام میشود ، اونها را از هم تفکیک کرد و در متغیر های جداگانه ریخت ؟ :question: :question:
    آیا از داخل ccs میشه دستوری را نوشت که هر وقت یک بایت بصورت کامل دریافت شد به ما اطلاع بده ؟ :angry:
    دلا خوبـــان دل خونيــــن پســـندند
    دلا خون شو که خوبان اين پسندند
    متاع کفر و دين بيآ‌مشتري نيست
    گروهــــي آن گروهي اين پســـندند

    #2
    پاسخ : نحوه تفکیک بایت های مختلف دریافتی در کار با uesart

    باسلام
    دوست عزیز منم فکر کنم همه اینا بر میگرده به ترفندهای برنامه نویسی! اگه یه خورده روش کار کنی حتما جواب قابل قبولی خواهی گرفت درضمن میتونی این اطلاعات دریافتی رو تو EEPROM میکرو بریزی و هر موقع هم که دلت خواست ازشون استفاده کنی

    موفق باشید

    دیدگاه


      #3
      پاسخ : نحوه تفکیک بایت های مختلف دریافتی در کار با uesart

      بله تو CCS این امکان وجود داره.
      توسط دستور kbhit()‎ . برای اطلاعات بیشتر لطفا به HELP کامپایلر مراجعه کنید.

      دیدگاه


        #4
        پاسخ : نحوه تفکیک بایت های مختلف دریافتی در کار با uesart

        مثلا به این برنامه دقت کن .
        void main(){
        int i,data[4];
        for(i=0;i<=3;i++){
        while(!kbhit());
        data[i]=getc();
        }
        }

        بعد از این برنامه ٤ دیتای دریافتی توسط میکرو در متغیر های data[0] , data[1] , data[2] و data[3] قرار میگیره .

        دیدگاه


          #5
          پاسخ : نحوه تفکیک بایت های مختلف دریافتی در کار با uesart

          سلام ... ببینید . این ;bhit که فرمودید به این مربوط میشه که وقتی دستور getch را مینویسی ، منتظر بشه تا داده بیاد ، بعدش بگیردش ، یا اینکه فقط یه نگاه بندازه ببینه داده اومده یا نه ، اگه نیومده بود بره بقیه برنامه را اجرا کنه .این دستور مشکلی را حل نمیکنه.
          در وقع ما باید به نوعی وقتی داده بطور کامل دریافت میشه ، متوجه بشیم و اینکار از طریق چک کردن ، یک بیت خاص در همون رجیستر های کنترلی مربوط به usart امکان پذیر است ... به هر حال خیلی ممنون از راهنماییتون
          دلا خوبـــان دل خونيــــن پســـندند
          دلا خون شو که خوبان اين پسندند
          متاع کفر و دين بيآ‌مشتري نيست
          گروهــــي آن گروهي اين پســـندند

          دیدگاه


            #6
            پاسخ : نحوه تفکیک بایت های مختلف دریافتی در کار با uesart

            نه خیر دوست عزیز . شما دستور KBHIT رو اشتباه متوجه شدید. این دستور بافر ورودی USART رو چک میکنه. اگه کاراکتری دریافت شده بود مقدار TRUE را برمیگردونه. اگر هم بافر خالی بود FALSE برمیگردونه.
            البته به کمک وقفه ماجول USART هم خیلی راحت میتونید از آمدن یک کاراکتر اطلاع پیدا کنید.

            دیدگاه


              #7
              پاسخ : نحوه تفکیک بایت های مختلف دریافتی در کار با uesart

              دوست عزیز گفته های محمدخان درسته ولی اگه میخوای دقیق بدونی کدوم بیت از ارسال دیتا خبر میده باید به شکل زیر مراجعه کنی. این شکل قسمتی از دیتاشیت PIC18F452 هست:


              موفق باشید

              دیدگاه


                #8
                پاسخ : نحوه تفکیک بایت های مختلف دریافتی در کار با uesart

                نوشته اصلی توسط محمد ایجی
                نه خیر دوست عزیز . شما دستور KBHIT رو اشتباه متوجه شدید. این دستور بافر ورودی USART رو چک میکنه. اگه کاراکتری دریافت شده بود مقدار TRUE را برمیگردونه. اگر هم بافر خالی بود FALSE برمیگردونه.
                البته به کمک وقفه ماجول USART هم خیلی راحت میتونید از آمدن یک کاراکتر اطلاع پیدا کنید.
                البته ما عددی نیستیم که در برابر شما اظهار نظر کنیم ... من از همین kbhit استفاده کرده بودم و درست نتیجه نگرفته بودم ... حتما برنامم اشکال داشته ... به هر حال الان با استفاده از وقفه برنامه را نوشتم و جواب گرفتم :nerd:
                به هر حال خیلی ممنون که حوصله میکنید و تا روشن کردن قضیه جواب میدهید . اگر کمک های شما نباشه من ده برابر باید زمان بذارم ، و تازه به خوبی اون چیزی که شما میگید نتیجه نمیگیرم . مثلا همون برنامه تایمر که لطف کردید و کد من را تصحیح کردید و بلافاصله جواب گرفتم
                دلا خوبـــان دل خونيــــن پســـندند
                دلا خون شو که خوبان اين پسندند
                متاع کفر و دين بيآ‌مشتري نيست
                گروهــــي آن گروهي اين پســـندند

                دیدگاه

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