اطلاعیه

Collapse
No announcement yet.

کمک برای مقایسه دو آرایه

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

    کمک برای مقایسه دو آرایه

    من یه برنامه نوشتم که دو آرایه تک بعدی رو با هم مقایسه میکنه ، نکته اینه کیه وقتی یکی از آرایه ها در eeprom قرار میدم میکرو نمی تونه دو آرایه رو مقایسه کنه
    اینم برنامه :
    #include <mega32.h>
    #include <delay.h>
    //------------------------------------------
    eeprom unsigned char pass_in[7]={1,2,1,1,1,1,1};
    unsigned char pass_old[7]={1,2,1,1,1,1,1};
    unsigned char i,c=1;
    //------------------------------------------
    void main(void)
    {
    PORTB=0x00;
    DDRB=0xFF;
    while (1)
    {
    for(i=0;i<=6;i++)
    {
    if(pass_old!= pass_in)
    {
    c++;
    PORTB.5=1;
    break;
    }
    if(c==1)
    {
    PORTB.7=1;
    PORTB.6=1;
    PORTB.5=0;
    }
    if(c!=1)
    {
    PORTB.7=0;
    PORTB.6=1;
    PORTB.5=0;
    }
    }
    }
    }

    حلا اگه برنامه زیر قرار بدم برنامه خوب کار میکنه
    #include <mega32.h>
    #include <delay.h>
    //------------------------------------------
    unsigned char pass_in[7]={1,2,1,1,1,1,1};
    unsigned char pass_old[7]={1,2,1,1,1,1,1};
    unsigned char i,c=1;
    //------------------------------------------
    void main(void)
    {
    PORTB=0x00;
    DDRB=0xFF;
    while (1)
    {
    for(i=0;i<=6;i++)
    {
    if(pass_old!= pass_in)
    {
    c++;
    PORTB.5=1;
    break;
    }
    if(c==1)
    {
    PORTB.7=1;
    PORTB.6=1;
    PORTB.5=0;
    }
    if(c!=1)
    {
    PORTB.7=0;
    PORTB.6=1;
    PORTB.5=0;
    }
    }
    }
    }
    }

    لطفا کمکم کنید
    [img width=67 height=100]http://dc365.4shared.com/img/pGCA8eEE/30607875402595991224.jpg[/img]
    1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
    2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
    3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

    #2
    پاسخ : کمک برای مقایسه دو آرایه

    دوست عزیز لطفا اینجور وقتا مشکلتون رو واضح تر بیان کنید. خطای کامپایل دریافت میکنید؟ کامپایل میشه ولی روی میکرو غلط انجام میشه یا ...؟
    اینجوری طرف یا باید بایدکلی تجربه داشته باشه یا اینکه کدتون رو برداره کامپایل کنه ببینه مشکل کجاست

    در جواب سوالتون. راه سریعش اینه که یک متغیر جدید تعریف کنید و برابر اون آرایه eeprom قرار بدید و اون رو مقایسه کنید ببینید چی میشه.

    موفق باشید

    دیدگاه


      #3
      پاسخ : کمک برای مقایسه دو آرایه

      ممنون که پاسخ دادید ، کامپایلرهیچ گونه خطایی نمیده و زمانی که آرایه رو در EEPROM تعریف نمیکنم برنامه خوب کار میکنه
      در جواب سوالتون. راه سریعش اینه که یک متغیر جدید تعریف کنید و برابر اون آرایه eeprom قرار بدید و اون رو مقایسه کنید ببینید چی میشه.
      من این کارو کرم ولی بازم جواب نگرفتم اگه میشه یه نمونه کد برام قرار بدید .
      [img width=67 height=100]http://dc365.4shared.com/img/pGCA8eEE/30607875402595991224.jpg[/img]
      1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
      2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
      3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

      دیدگاه


        #4
        پاسخ : کمک برای مقایسه دو آرایه

        بفرمایید...


        کد:
        #include <mega32.h>
        #include <delay.h>
        #include <stdio.h>
        #include <alcd.h>
        
        char buffer[32];
        //------------------------------------------
        eeprom unsigned char pass_in[7]={1,2,1,1,1,1,1};
        unsigned char pass_old[7]={1,2,1,1,1,1,1};
        unsigned char i,c;
        //------------------------------------------
        
        void main(void)
        {
          lcd_init(16);
          c=0;
          for(i=0;i<=6;i++){
          	if(pass_old[i]!=pass_in[i]){
          		c=i;
          		break;
          	}
          }
          if (c==0){
          	lcd_puts("Match");
          } else {
          	sprintf(buffer,"Cell %i does not match", c);
          	lcd_puts(buffer);
          }
        
          while(1);
        }

        اگه lcd ندارید توابع مربوطه رو بردارید یا اینکه تو پروتوس شبیه سازی کنید
        البته اینو برای اینکه بیشترین شباهت رو به برنامه خودتون داشته باشه اینجوری نوشتم. تر تمیزتر هم میشه نوشت

        دیدگاه


          #5
          پاسخ : کمک برای مقایسه دو آرایه

          برنامه رو کامپایل کردم و اگه یکی از مقدار های ارایه رو تغییر بدم بازم مینویسه match اگه میشه راهنماییم کنید .سه شبه خواب ندارم
          [img width=67 height=100]http://dc365.4shared.com/img/pGCA8eEE/30607875402595991224.jpg[/img]
          1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
          2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
          3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

          دیدگاه

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