اطلاعیه

Collapse
No announcement yet.

مشکل برنامه من

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

    مشکل برنامه من

    سلام دوستان
    من برنامه قفل مز دارم می نویسم
    سوال من این است که برنامه من زمانی که می خوام یک رمز که در eeprom ذخیره شده را با رمزی که وارد میشه مقایسه کند و اگر درست باشد پیغام در باشدن را بدهد
    ولی جواب نمیده و همش رمز اشتباه است
    در واقع من احساس می کنم eeprom من کار نمی کند
    لطفا کمکم کنید
    این هم سورس برنامه من
    http://s4.picofile.com/file/8169697776/4.rar.html
    من چند تا سوال پرسیدم ولی کسی جواب منو نداد امیدوارم لا اقل یکی جواب من را بدهد
    با تشکر از لطف دوستان

    #2
    پاسخ : مشکل برنامه من

    سلام
    اول از همه اینجا خیلی کم پیش میاد کسی جواب این جور سوال ها رو بدن چون سوال نیست و شما یه کاری از بچه های انجمن می خواید که برای شخص شما انجام بدن و این تاپیک دیگه برای کسی به غیر از شما مفید نیست(شخصیه و عمومی نیست)
    برنامه تون رو هم که خیلی شلوغه و 20 دقیقه وقت باید گذاشت تا فهمید چیه
    بگذریم
    اگر فرض کنیم کهروتین کل برنامه و برنامه کیپد شما درست کار کنه مشکل برنامه اینجاست
    ;"eeprom char my_pass[]="12345
    شما مقادیر عداد رو داخل ارایه قرار ندادین بلکه مقدار کارکتری اون ها رو قرار دادین بعد دارین کد کارکتر عدد 1 رو با خود عدد 1 مقایسه می کنید.
    عداد رو اینجوری قرار بدین
    eeprom char my_pass[]={1,2,3,4,5};

    دیدگاه


      #3
      پاسخ : مشکل برنامه من

      نوشته اصلی توسط mostafa moradmoghadam
      سلام
      اول از همه اینجا خیلی کم پیش میاد کسی جواب این جور سوال ها رو بدن چون سوال نیست و شما یه کاری از بچه های انجمن می خواید که برای شخص شما انجام بدن و این تاپیک دیگه برای کسی به غیر از شما مفید نیست(شخصیه و عمومی نیست)
      برنامه تون رو هم که خیلی شلوغه و 20 دقیقه وقت باید گذاشت تا فهمید چیه
      بگذریم
      اگر فرض کنیم کهروتین کل برنامه و برنامه کیپد شما درست کار کنه مشکل برنامه اینجاست
      ;"eeprom char my_pass[]="12345
      شما مقادیر عداد رو داخل ارایه قرار ندادین بلکه مقدار کارکتری اون ها رو قرار دادین بعد دارین کد کارکتر عدد 1 رو با خود عدد 1 مقایسه می کنید.
      عداد رو اینجوری قرار بدین
      eeprom char my_pass[]={1,2,3,4,5};
      اول اینکه تشکر از شما که جواب مرا دادید
      دوم اینکه من پس این سوالم رو باید چطوری بپرسم که بقیه برای بقیه هم مفید باشه این سوال شاید مشکل خیلی ها باشه
      سوم اینکه جوابی که دادید درست نشد این کاری که گفتید را قبلا هم انجام داده بودم ولی اون موقع هم جواب نداد
      چهارم اینکه می خواهید سوالم را اینگونه بپرسم :
      چگونه دو تا کاراکتر را مقایسه کنیم که یکی در eeprom به شکل (;"eeprom char my_pass[]="12345) می باشد و دیگری به شکل اینکه از کی پد اطلاعات را بگیریم و مقایسه کنیم ؟
      بازم ممنون از شما آقای mostafa moradmoghadam

      دیدگاه


        #4
        پاسخ : مشکل برنامه من

        سلام
        برای مقایسه کارکتر عدد با خود عدد کافیه عدد رو با 30 هگز جمع کنید بعد مقایسه کنید
        این برنامه رو خدتون نوشتین یا از جای گرفتین؟
        اشکال بعدی هم اینجاس که توی زیر برنامه check_pass شما مقادیر l و i رو از عدد 1 شروع کردید باید از 0 شروع کنید چون کارکتر 1 در my_pass اصلا مقایسه نمیشه و عدد صفر که در اخر رشته است و نشانه تمام شدن رشته اس رو دارین با عدد کی پد مقایسه می کنید(شما دارین عدد مورد نظر رو با یدونه جلوتر پسوردتون مقایسه می کنید)
        پرتوس مدار رو هم بزارید لطفا

        دیدگاه


          #5
          پاسخ : مشکل برنامه من

          نوشته اصلی توسط mostafa moradmoghadam
          سلام
          برای مقایسه کارکتر عدد با خود عدد کافیه عدد رو با 30 هگز جمع کنید بعد مقایسه کنید
          این برنامه رو خدتون نوشتین یا از جای گرفتین؟
          اشکال بعدی هم اینجاس که توی زیر برنامه check_pass شما مقادیر l و i رو از عدد 1 شروع کردید باید از 0 شروع کنید چون کارکتر 1 در my_pass اصلا مقایسه نمیشه و عدد صفر که در اخر رشته است و نشانه تمام شدن رشته اس رو دارین با عدد کی پد مقایسه می کنید(شما دارین عدد مورد نظر رو با یدونه جلوتر پسوردتون مقایسه می کنید)
          پرتوس مدار رو هم بزارید لطفا
          آقا مصطفی دستت درد نکنه که جوابمو دادی
          برنامه قفل را از سایت ها گرفتم و به کمک آن ها دارم می نویسم چون زیاد کار نکردم اشکال دوم را انجام دادم ولی اشکال اولی را هم اینگونه فهمیدم که عددی که از کیپد میگیره را با 30h جمع کند یعنی اینگونه بنویسم:؟
          عددی که از کی پد گرفتم میریزه توی my_pass بعد
          main_password_load[i]=my_pass[i]+40h; ??
          پروتئوس هم همراه با برنامه گذاشته بودم

          دیدگاه


            #6
            پاسخ : مشکل برنامه من

            سلام
            پروتوس شما که گذاشتین رو نمی تونم باز کنم پروتوس من 7.2 هستش
            بله
            کد:
            main_pass[i]==(my_pass[i]+0x30);
            چرا اسرار دارید کاراکتر بزارید؟

            دیدگاه


              #7
              پاسخ : مشکل برنامه من

              این برنامه شما به یه سری تغییرات جزمی :icon_razz: که داره الان برای من جواب میده.
              http://s5.picofile.com/file/8170418242/1.c.html
              چندتا نکته
              1- اولا داخل eeprom متغییر تعریف نکنید (با مقدار اولیه در شبیه سازی) چون توی پرتوس (شاید من بلد نیستم)نمیشه مقدار اولیه eeprom رو داخلش لود کرد.بعد که جواب گرفتید در عمل متغییر رو eeprom بزارید.
              2-متغییر خیلی استفاده می کنید که اصلا لازم نیست. حداقل سراسری تعریف نکنید و توی همون بلوک که قراره استفاده کنید تعریف کنید.
              3-حتما کنگره دار بنویسید برا فهم برنامه حتی برای خوتون هم خوبه
              4-توضیح هات هم جلوی خطوط برنامه که کارای خاص انجام میدن بزارید.چند وقت دیگه به برنامه خودتون نگاه کرید راحتتر بفهمیدش
              5-اگه توی برنامه هم خواستید از eeprom استفاده کنید(برای شبیه سازی عرض می کنم)مقدار اولیشه رو اول main بزارید
              کد:
              void main(void)
              {
                
              my_pass[0]='1';
              my_pass[1]='2';
              my_pass[2]='3';
              my_pass[3]='4';
              my_pass[4]='5';
              my_pass[5]=0;
              .
              ..
              .

              دیدگاه


                #8
                پاسخ : پاسخ : مشکل برنامه من

                نوشته اصلی توسط mostafa moradmoghadam
                این برنامه شما به یه سری تغییرات جزمی :icon_razz: که داره الان برای من جواب میده.
                http://s5.picofile.com/file/8170418242/1.c.html
                چندتا نکته
                1- اولا داخل eeprom متغییر تعریف نکنید (با مقدار اولیه در شبیه سازی) چون توی پرتوس (شاید من بلد نیستم)نمیشه مقدار اولیه eeprom رو داخلش لود کرد.بعد که جواب گرفتید در عمل متغییر رو eeprom بزارید.
                2-متغییر خیلی استفاده می کنید که اصلا لازم نیست. حداقل سراسری تعریف نکنید و توی همون بلوک که قراره استفاده کنید تعریف کنید.
                3-حتما کنگره دار بنویسید برا فهم برنامه حتی برای خوتون هم خوبه
                4-توضیح هات هم جلوی خطوط برنامه که کارای خاص انجام میدن بزارید.چند وقت دیگه به برنامه خودتون نگاه کرید راحتتر بفهمیدش
                5-اگه توی برنامه هم خواستید از eeprom استفاده کنید(برای شبیه سازی عرض می کنم)مقدار اولیشه رو اول main بزارید
                کد:
                void main(void)
                {
                  
                my_pass[0]='1';
                my_pass[1]='2';
                my_pass[2]='3';
                my_pass[3]='4';
                my_pass[4]='5';
                my_pass[5]=0;
                .
                ..
                .
                :wow:
                آقا مصطفی دستت درد نکنه درست شد
                واقعا نمیدونم چطوری ازت تشکر کنم سر این برنامه یک روز افتاده بودم خونه دیگه نمیدونستم چیکار کنم
                از نکته هایی هم که گفتی تشکر می کنم
                یک سوال درباره پروتئوس دارم :
                من یک رمز از کیپد میخوام بگیرم و بر اساس اون در باز بشود و این رمز هم در eeprom ذخیره است ولی زمانی که میرم در پروتئوس رمز را که توسط کیپد وارد می کنم این رمز ذخیره می شود و تا زمانی که برق وصل است (پروتئوس کلیدش روشن است)رمز باقی می ماند ولی زمانی که برق را قطع می کنم رمز هم باقی نمی ماند و دوباره ازم رمز می خواهد / می خواستم بدانم توی تنظیمات قطعه atmega32 باید کاری کنم که این اطلاعات ذخیره بماند؟
                اینم فایل پروتئوس و کدویژن:
                http://s4.picofile.com/file/8170569126/4.rar.html
                راستی پروتئوس من 8 هست
                اینم عکس تنظیمات قطعه atmega32


                دیدگاه


                  #9
                  پاسخ : مشکل برنامه من

                  خواهش میکنم :rolleyes:
                  برای شبیه سازی در پرتوس من تا حالا نتونستم مقدار اولیه به eeprom بدم یا مشکلی که گفتین رو بر طرف کنم(گمان نکنم اصلا بشه)
                  من یک رمز از کیپد میخوام بگیرم و بر اساس اون در باز بشود و این رمز هم در eeprom ذخیره است ولی زمانی که میرم در پروتئوس رمز را که توسط کیپد وارد می کنم این رمز ذخیره می شود و تا زمانی که برق وصل است (پروتئوس کلیدش روشن است)رمز باقی می ماند ولی زمانی که برق را قطع می کنم رمز هم باقی نمی ماند و دوباره ازم رمز می خواهد / می خواستم بدانم توی تنظیمات قطعه atmega32 باید کاری کنم که این اطلاعات ذخیره بماند؟
                  سوادمون قد نمیده :redface:
                  توی فروم پروتوس بپرسید سریع تر به جواب میرسید

                  دیدگاه


                    #10
                    پاسخ : مشکل برنامه من

                    نوشته اصلی توسط mostafa moradmoghadam
                    خواهش میکنم :rolleyes:
                    برای شبیه سازی در پرتوس من تا حالا نتونستم مقدار اولیه به eeprom بدم یا مشکلی که گفتین رو بر طرف کنم(گمان نکنم اصلا بشه)سوادمون قد نمیده :redface:
                    توی فروم پروتوس بپرسید سریع تر به جواب میرسید
                    بازم تشکر از شما دوست عزیز

                    دیدگاه

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