اطلاعیه

Collapse
No announcement yet.

مشکل عجیب در یک برنامه خیلی ساده

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

    مشکل عجیب در یک برنامه خیلی ساده

    من برنامه زیر رو نوشتم و در پروتئوس به درستی کار میکنه:
    کد:
    if(PINB.0==1)
       {
       
       PORTC.0=1;
       PORTC.1=0;
       }
       
       else if(PINB.1==1)
       {
       
       PORTC.0=0;
       PORTC.1=1;
       }
       
       else
       {
       
       PORTC.0=0;
       PORTC.1=0;
       }
       
       if(PINB.2==1)
       {
       
       PORTC.2=1;
       PORTC.3=0;
       }
       
       else if(PINB.3==1)
       {
       
       PORTC.2=0;
       PORTC.3=1;
       }
       
       else 
       {
       
       PORTC.2=0;
       PORTC.3=0;
       }
    در این برنامه با توجه به ورودی های پورت B ، خروجی های پورت C تغییر میکنه در واقع مدار زیر رو ساختم:


    اما وقتی به صورت زیر تغییرش میدم، مشکل داره و LED ها چشمک میزنه و درست کار نمیکنه.
    کد:
     if(PINB.0==1)
       {
       matn[2]='u';
       }
       
       else if(PINB.1==1)
       {
       matn[2]='d';
       }
       
       else
       {
       matn[2]='e';
       }
       
       if(PINB.2==1)
       {
       matn[3]='u';
       }
       
       else if(PINB.3==1)
       {
       matn[3]='d';
       }
       
       else 
       {
       matn[3]='e';
       }
        if(matn[2]=='u')
      {
       PORTC.0=1;
       PORTC.1=0;
      } 
      else if(matn[2]=='d')
      {
       PORTC.0=0;
       PORTC.1=1;
      } 
      else 
      {
       PORTC.0=0;
       PORTC.1=0;
      } 
      
       if(matn[3]=='u')
      {
       PORTC.2=1;
       PORTC.3=0;
      } 
      else if(matn[3]=='d')
      {
       PORTC.2=0;
       PORTC.3=1;
      } 
      else 
      {
       PORTC.0=0;
       PORTC.1=0;
      }
    من در ابتدا یک برنامه نوشته بودم که بر اساس متن دریافتی از Usart ، پورت C را تغییر میداد و همین مشکل چشمک زدن وجود داشت و فکر می کردم در usart مشکل داره. اما این برنامه ساده رو نوشتم که بر اساس دکمه ها ، متن رو تغییر بده و بعد بر اساس متن ، LED ها رو تغییر بده و دیدم که این قسمت ساده مشکل داره.ممنون می شوم راهنمایی کنید من که دیگه گیج شدم.

    #2
    پاسخ : مشکل عجیب در یک برنامه خیلی ساده

    چیز خاصی به ذهنم نمیرسه فقط حواست هست که هنگام خوندن آرایه ها و رشته ها، اندیس از 0 شروع میشه نه از یک.

    دیدگاه


      #3
      پاسخ : مشکل عجیب در یک برنامه خیلی ساده

      ممنون.بله میدونم اندیس رو.
      در ضمن هم در پروتئوس هم به طور عملی این مشکل وجود داره.
      خواهشمندم کمک کنید تا این مشکل رو بفمیم از چیه.

      دیدگاه


        #4
        پاسخ : مشکل عجیب در یک برنامه خیلی ساده

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

        دیدگاه


          #5
          پاسخ : مشکل عجیب در یک برنامه خیلی ساده

          گفتم که بعد از این که به usart شک کردم، یک پروژه ساده ساختم که فقط از پورت B , C استفاده کردم و خیلی هم ساده س.
          تمام فایل های پروتئوس و کد ویژن رو ضمیمه کردم لطفا نگاهی بیندازید.
          با تشکر
          Test.zip - 56 KB

          دیدگاه


            #6
            پاسخ : مشکل عجیب در یک برنامه خیلی ساده

            سلام
            ببخشیدا اگه یکم دقت میکردی نه این تاپیک رو میزدی نه اینهمه وقتت هدر میشد عزیزم شما اومدی برای شرط matn[3] در اخرین دستور دوباره شرط سوم matn]2[ رو نوشتی یعنی در اخر بجای اینکه بنویسی portc.3=0 و portc.2=0 نوشتی portc.0=0و portc.1=0 خب شما کلید رو میزنی led روشن میشه وبعد دوباره توی شرط دیگه خاموش میکنی خب با این حساب باید چشمک بزنه دیگه
            2 خط اخر رو نگاه کن چی نوشتی

            if(matn[3]=='u&#039
            {
            PORTC.2=1;
            PORTC.3=0;
            }
            else if(matn[3]=='d&#039
            {
            PORTC.2=0;
            PORTC.3=1;
            }
            else
            {
            PORTC.0=0;
            PORTC.1=0;
            }
            امام مهدی(عج): اگر شیعیان ما ، که خداوند طاعتشان دهد. در عهد ما وفادار و همدل بودند، هرگز دیدار ما (ظهور) به تاخیر نمی افتاد.(کدام عهد ؟)

            دیدگاه


              #7
              پاسخ : مشکل عجیب در یک برنامه خیلی ساده

              سلام
              بیا کد رو اصلاح کردم با پرتئوس تست کردم و برات اپ کردم
              http://uplod.ir/lf5b2euvf3cp/new_teast.rar.htm

              امام مهدی(عج): اگر شیعیان ما ، که خداوند طاعتشان دهد. در عهد ما وفادار و همدل بودند، هرگز دیدار ما (ظهور) به تاخیر نمی افتاد.(کدام عهد ؟)

              دیدگاه

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