اطلاعیه

Collapse
No announcement yet.

راهنمایی در تصحیح کد قفل رمز دیجیتال

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

    #16
    پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

    مهندس سلام بدون مقدار دهی هم گذاشتمش اما مشکل داشتهیعنی pass بدون 120 ولی باز مشکل داشته بعد اینکه من میخوام پیش فرض یک عددی در برنامه بنویسم که رمز اولیش باشه.یعنی همون 120 .Pass=120رو کجای برنامه بذارم که رمز 120 رو بشناسهالان دقیقا مشکل من اینه که 120 رو نمیخونهاگر داخل تابع اصلی هم بذارمش دیگه pass ثابت 120 میمونه

    دلیل: ادغام دو پست برای جلوگیری از اسپم

    ببینید یه کدی ندارید که برای این نوع پروژه ها باشه ....اماده
    جدیدترین ویرایش توسط سمیراا; ۱۸:۱۵ ۱۳۹۶/۰۷/۱۲.

    دیدگاه


      #17
      پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

      نوشته اصلی توسط سمیراا نمایش پست ها
      مهندس سلام بدون مقدار دهی هم گذاشتمش اما مشکل داشتهیعنی pass بدون 120 ولی باز مشکل داشته بعد اینکه من میخوام پیش فرض یک عددی در برنامه بنویسم که رمز اولیش باشه.یعنی همون 120 .Pass=120رو کجای برنامه بذارم که رمز 120 رو بشناسهالان دقیقا مشکل من اینه که 120 رو نمیخونهاگر داخل تابع اصلی هم بذارمش دیگه pass ثابت 120 میمونه

      دلیل: ادغام دو پست برای جلوگیری از اسپم

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

      Sent from my HUAWEI P7-L10 using Tapatalk
      انسانها 10 دسته اند: دسته ای که باینری میدانند و دسته ای که باینری نمیدانند!

      دیدگاه


        #18
        پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

        نوشته اصلی توسط hamedtaran نمایش پست ها
        یه پیشنهاد، برنامه رو یجوری بنویس که ابتدا دستگاه بدون رمز باشه، سپس در اولین بار که روشن میشه، از کاربر رمز جدید بخواد و از این به بعد هم که درست طبق روال پیش میره، اینجوری دیگه لازم نیست eeprom جداگانه پروگرم کنی

        Sent from my HUAWEI P7-L10 using Tapatalk
        مهندس این برنامه ایپرام داخلی میکرو را راه اندازی میکنه نه ایپرام خارجی
        پس برنامه جدا کانه ای و ایپرام جدا پروگرم نمیکنم

        دیدگاه


          #19
          پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

          منم ایپرام داخلی رو گفتم

          Sent from my HUAWEI P7-L10 using Tapatalk
          انسانها 10 دسته اند: دسته ای که باینری میدانند و دسته ای که باینری نمیدانند!

          دیدگاه


            #20
            پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

            پس چرا میگین
            اینجوری دیگه لازم نیست eeprom جداگانه پروگرم کنی
            برنامه ایپرام همزمان با برنامه خود میکرو تبدیل به هگز و پروگرام میشه ..دیگه جداگانش پس چی بود گفتین ؟؟؟؟؟

            دیدگاه


              #21
              پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

              فکر میکنم برنامه هیچ مشکلی نداره به جز یک چیز
              در خط 185 که پسوورد جدید در متغیر pass ذخیره میشه فقط بعدش یک تاخیر 20 تا 40 میلی ثانیه ای بذارید
              همین

              دیدگاه


                #22
                پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

                نوشته اصلی توسط saeid_k68 نمایش پست ها
                فکر میکنم برنامه هیچ مشکلی نداره به جز یک چیزدر خط 185 که پسوورد جدید در متغیر pass ذخیره میشه فقط بعدش یک تاخیر 20 تا 40 میلی ثانیه ای بذاریدهمین
                البته با تشکر از جناب اشگان غفارزداه که چینش برنامه را تصحیح کردن منظورتون بعد این کد هست pass=atol(co1);();دلیل: ادغام دو پست برای جلوگیری از اسپم
                delay_ms(40);
                جدیدترین ویرایش توسط سمیراا; ۱۴:۵۴ ۱۳۹۶/۰۷/۱۳.

                دیدگاه


                  #23
                  پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

                  نوشته اصلی توسط سمیراا نمایش پست ها
                  البته با تشکر از جناب اشگان غفارزداه که چینش برنامه را تصحیح کردن منظورتون بعد این کد هست pass=atol(co1);();دلیل: ادغام دو پست برای جلوگیری از اسپم
                  delay_ms(40);
                  بله درسته باید تاخیر بعد از اون دستور قرار بگیره

                  دیدگاه


                    #24
                    پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

                    نوشته اصلی توسط saeid_k68 نمایش پست ها
                    بله درسته باید تاخیر بعد از اون دستور قرار بگیره
                    تست زدم باز نشد ..........

                    دیدگاه


                      #25
                      پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

                      نوشته اصلی توسط سمیراا نمایش پست ها
                      پس چرا میگین
                      اینجوری دیگه لازم نیست eeprom جداگانه پروگرم کنی
                      برنامه ایپرام همزمان با برنامه خود میکرو تبدیل به هگز و پروگرام میشه ..دیگه جداگانش پس چی بود گفتین ؟؟؟؟؟

                      یکی از فیوز بیت ها مربوط به پروگرم شدن یا نشدن اییپرام هستش

                      Sent from my HUAWEI P7-L10 using Tapatalk
                      انسانها 10 دسته اند: دسته ای که باینری میدانند و دسته ای که باینری نمیدانند!

                      دیدگاه


                        #26
                        پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

                        من یک دستگاه جوجه کشی ساخته بودم و در اون تنظیمات در eeprom ذخیره میشد، من از تاخیری که گفتید استفاده نکردم و هیچ مشکلی پیش نیومد!
                        بنظر من این برنامه رو دیباگ کنید و خط به خط خروجی را ببینید

                        Sent from my HUAWEI P7-L10 using Tapatalk
                        انسانها 10 دسته اند: دسته ای که باینری میدانند و دسته ای که باینری نمیدانند!

                        دیدگاه


                          #27
                          پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

                          اگر جناب مهندس غفارزاده یا بقیه دوستان لطف کنن و یکبار در پروتئوس مدار رو ببندن و عملکرد رو ببینن حتما میتونن متوجه بشن چرا پسورد جدید در متغییر pass ذخیره نمیشه
                          خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

                          دیدگاه


                            #28
                            پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

                            ببینید من همین پروژه رو بستم اما نمیدونم چرا شما انقدر تبدیل و تعریف متغیر اضافه دارید
                            مثالی میزنم چه نیازی بوده که شما بیاد 10 رقم رو بصورت تک کاراکتر تعریف کنید. خب تابع کیپد تون رو میتونستید همون کاراکتر ها رو به جای عدد برگردونه
                            و یه مثال دیگه
                            شما که اومدید از توابع کتابخانه string استفاده کردید (strcatf) پس چرا در نهایت اومدید کاراکتر ها رو به عدد تبدیل کردید که با متغیر unsigned long pass مقایسه کنید. به راحتی با تابع strcmp میتونید دو رشته رو مقایسه کنید
                            و در آخر تو پست های دوستان دیدم که این نکته رو گفته بودن که یک بار اول برنامه پسوورد داخل eeprom رو به رم کپی کنید چون عمرش کمه.
                            حرفشون درسته کاملا اما من مجدد حرف ایشون رو تکرار میکنم اما با دلیل دیگه ای
                            زمان خوندن و نوشتن eeprom باید توی دستور بعدی حتما یه تاخیر حداقل 20 میلی ثانیه ای داد. شما تو شرط هاتون مستقیما دارید eeprom رو بررسی می کنید و ممکنه همین اشکال باشه چون خواندن و نوشتن eeprom به زمان احتیاج داره و شرط این زمان رو نمیده تا خواندن کامل بشه
                            پس بهتره قبل از شرط هاتون مقدار pass رو تو یه متغیر معمولی کپی کنید و کپی رو چک کنید

                            دیدگاه


                              #29
                              پاسخ : راهنمایی در تصحیح کد قفل رمز دیجیتال

                              من خودم هم این کار رو انجام دادم یعنی (پس بهتره قبل از شرط هاتون مقدار pass رو تو یه متغیر معمولی کپی کنید و کپی رو چک کنید) اما جواب نداد !!!

                              دلیل: ادغام دو پست برای جلوگیری از اسپم

                              #include <mega16.h>
                              #include <delay.h>
                              #include <stdlib.h>
                              #include <string.h>

                              // Alphanumeric LCD functions
                              #include <alcd.h>



                              unsigned char data,co1[20],co2[20];
                              unsigned char pass=120;
                              unsigned char a;


                              unsigned char c0[]="0";
                              unsigned char c1[]="1";
                              unsigned char c2[]="2";
                              unsigned char c3[]="3";
                              unsigned char c4[]="4";
                              unsigned char c5[]="5";
                              unsigned char c6[]="6";
                              unsigned char c7[]="7";
                              unsigned char c8[]="8";
                              unsigned char c9[]="9";


                              void coding(unsigned char data){
                              switch (data)
                              {
                              case 1:
                              *strcat(co1,c1);
                              break;
                              //******************
                              case 2:
                              *strcat(co1,c2);
                              break;
                              //******************
                              case 3:
                              *strcat(co1,c3);
                              break;
                              //******************
                              case 4:
                              *strcat(co1,c4);
                              break;
                              //******************
                              case 5:
                              *strcat(co1,c5);
                              break;
                              //******************
                              case 6:
                              *strcat(co1,c6);
                              break;
                              //******************
                              case 7:
                              *strcat(co1,c7);
                              break;
                              //******************
                              case 8:
                              *strcat(co1,c8);
                              break;
                              //******************
                              case 9:
                              *strcat(co1,c9);
                              break;
                              //******************
                              case 10:
                              *strcat(co1,c0);
                              break;

                              //******************
                              }
                              }
                              void ref_key(void){
                              DDRC=0x0f;
                              //******************************
                              PORTC=0xff;
                              PORTC.0=0;
                              delay_ms(15);
                              if(PINC.4==0)data=1;
                              if(PINC.5==0)data=2;
                              if(PINC.6==0)data=3;

                              //*******************************
                              PORTC=0xff;
                              PORTC.1=0;
                              delay_ms(15);
                              if(PINC.4==0)data=4;
                              if(PINC.5==0)data=5;
                              if(PINC.6==0)data=6;

                              //****************************
                              PORTC=0xff;
                              PORTC.2=0;
                              delay_ms(15);
                              if(PINC.4==0)data=7;
                              if(PINC.5==0)data=8;
                              if(PINC.6==0)data=9;

                              //****************************
                              PORTC=0xff;
                              PORTC.3=0;
                              delay_ms(15);
                              if(PINC.4==0)data=20;
                              if(PINC.5==0)data=10;
                              if(PINC.6==0)data=21;

                              //****************************

                              }

                              void chek_pass(void)
                              {
                              ref_key();

                              if(a==pass)
                              {

                              if(data==20){
                              lcd_clear();
                              PORTD.0=1;
                              lcd_gotoxy(0,0);
                              lcd_putsf("pass correct");

                              }
                              }
                              else if(a!=pass)
                              {
                              if(data==20)
                              {
                              lcd_clear();
                              PORTD.0=0;
                              lcd_gotoxy(0,0);
                              lcd_putsf("pass invalid");
                              }
                              }
                              }


                              void change_pass(void)
                              {
                              ref_key();
                              if(data==21 && a==pass )
                              {
                              pass=0;
                              strcpy(co1,co2);
                              lcd_clear();
                              lcd_gotoxy(0,0);
                              lcd_putsf("pass new:");
                              ref_key();
                              coding(data);
                              strcpy(co1,co2);
                              pass=atoi(co1);

                              data=0;
                              chek_pass();
                              delay_ms(50);

                              }
                              }


                              void main(void)
                              {

                              DDRD.0=1;
                              DDRC=0x0f;
                              lcd_init(16);
                              lcd_clear();

                              lcd_gotoxy(0,0);
                              lcd_putsf("please pass :");



                              while(1){

                              chek_pass();
                              change_pass();

                              ref_key();
                              coding(data);
                              a=atoi(co1);
                              lcd_gotoxy(0,1);
                              lcd_puts(co1);
                              data=0;
                              delay_ms(150);


                              }

                              }

                              دلیل: ادغام دو پست برای جلوگیری از اسپم

                              زحمتی بفرمایید این تغییر رو اعمال بفرمایید شاید درست شد
                              خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

                              دیدگاه

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