اطلاعیه

Collapse
No announcement yet.

سوال در مورد دریافت 4بایت در ارتباظ سریال ccs

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

    سوال در مورد دریافت 4بایت در ارتباظ سریال ccs

    سلام
    دوستان من با کامپایلرccs و میکرو16f877a کار میکنم به دو تا مشکل بر خوردم لطفا راهنمایی کنید
    اول اینکه میخوام 4 بایت دیتا رو از pc دریافت کنم و وقتی دریافت شد باهاش led روشن بشه و
    مشکل اول اینکه من وقفه سریال رو فعال کردم که فعلا با دریافت کاراکتر led خاموش روشن بشه اما با دریافت کارکتر ledروشن میشه و در همون حالت روشن باقی میمونه.
    و این قسمتهایی از کد که مربوط به این قسمت میشه
    [code=c]#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8,stream=U4) //C6=TXD , C7=RXD[/code]
    [code=c]#int_RDA
    void RDA_isr(void)
    {
    OUTPUT_TOGGLE(LED2);

    // ch=fgetc(U4);


    }//END OF INT[/code]

    [code=c]enable_interrupts(INT_RDA);[/code]

    و مشکل دوم اینکه نمیدونم چطور 4 بایت رو از میکرو دریافت کنم

    #2
    پاسخ : سوال در مورد دریافت 4بایت در ارتباظ سریال ccs

    اول اینکه فیوز بیت هاتو حتما چک کن که درست تنظیم کرده باشی. یه راهش اینه که چنتا کاراکتر از میکرو به PC ارسال کن و اگه همشون تو PC درست رسیدن یعنی حله!
    دوم اینتراپت Global رو حتما فعال کن حتی اگه بدون اون هم کار میکنه
    این نمونه برنامه رو هم چک کن! به من که جواب داده.

    [code=c]
    unsigned char Data[4]=0;
    #int_RDA
    void RDA_isr(void) //usart1 recieve data interrupt
    {


    Data[0] = getchar(A);
    Data[1] = getchar(A);
    Data[2] = getchar(A);
    Data[3] = getchar(A);
    }
    [/code]
    پیشنهاد می کنم از Time out هم استفاده کنی به این صورت:
    [code=c]
    #use rs232 (baud=115200, xmit=PIN_C6, rcv=PIN_C7, timeout=13, stream=A)
    [/code]
    اینم برا فعالسازی اینتراپتها:
    [code=c]
    enable_interrupts(INT_RDA); //Enable recieve data usart1 Interrupt

    enable_interrupts(GLOBAL);
    [/code]

    دیدگاه


      #3
      پاسخ : سوال در مورد دریافت 4بایت در ارتباظ سریال ccs

      اینتراپت ok شد اما حالا سر اون 4بایت دریافتی موندم
      دو بار 4بایت از pc میخوام دریافت کنم و با دو تا 4 بایت خودم مقایسه کنم نمیدونم چطور این کارو انحام بدم؟
      دو تا ارایه 4 عضوی میشه که چطور عضوهاشو باهم چک کنم تطبیق دارن؟

      دیدگاه


        #4
        پاسخ : سوال در مورد دریافت 4بایت در ارتباظ سریال ccs

        نوشته اصلی توسط asmira
        اینتراپت ok شد اما حالا سر اون 4بایت دریافتی موندم
        دو بار 4بایت از pc میخوام دریافت کنم و با دو تا 4 بایت خودم مقایسه کنم نمیدونم چطور این کارو انحام بدم؟
        دو تا ارایه 4 عضوی میشه که چطور عضوهاشو باهم چک کنم تطبیق دارن؟
        با عرض ادب
        حضرتعالی میتونی از توابع زیر
        cresult=strcmp (s1, s2)
        Compare s1 to s2

        iresult=strncmp (s1, s2, n)
        Compare s1 to s2 (n bytes)

        iresult=stricmp (s1, s2)
        Compare and ignore case
        بر حسب نیاز استفاده کنی. اطلاعات بیشتر در help نرم افزار.
        موفق باشید.
        رو به خودت نسبت هستی مده!**دل به چنین مستی و پستی مده! //زانچه نداری ز چه افسردهآ‌ای*و زغم و اندوه دل آزردهآ‌ای؟!//گر ببرد ور بدهد دست دوست*ور بِبَرد ور بنهد مُلک اوست//ور بِکِشی یا بکُشی دیو غم **کج نشود دست قضا را قلم//آنچه خدا خواست همان میآ‌شود**وآنچه دلت خواست نه آن میآ‌شود.
        ....

        دیدگاه

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