اطلاعیه

Collapse
No announcement yet.

پسورد

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

    #16
    پاسخ : پسورد

    اول اینکه بگم LCD رو از نوع 16*2 انتخاب کردی . ولی متن هایی که تو هر سطر می نویسی گاهی بیشتر از 16 کاراکتر میشه .
    دوم اینکه لازم نیست برای اینکه به صورت پیش فرض یک عدد در حافظه قرار بگیره تو اول برنامه بنویسی ( چون با این کالر با هر بار اجرای برنامه یک رمز جدید خواسته میشه که در حافظه ذخیره کنه ) . خونه های حافظه به طور پیشفرض با عدد 255 پرشدن . پس میشه اون قسمت اولو حذف کرد و مقدار اولیه رمزو 255 در نظر گرفت .

    تو قسمت False هم قبل از Goto Repeat1 ، دستور Cls بذار . یعد ببین کدوم حالت اتفاق می افته . به هر حال وقتی وارد قسمت False میشه یا باید به ابتدای برنامه پرش کنه و یا به Active_alarm . در صورتی که آلارم فعال شه ، برنامه به END خودش می رسه و متوقف میشه . بنا براین اگه قراره بعد از آلارمیه سری عوامل محتمل دیگه ای هم وجود داشته باشه نباید روند برنامه ، اونو به END برسونه

    دیدگاه


      #17
      پاسخ : پسورد

      شما گفتین eeprom لازمه استفاده کنم
      زمانی که متغیر word تعریف می کنم اصلا کار نمی کنه
      و به byte یه ذره کار میکنه!
      من اصلا گیج شدم هر کار می کنم جواب نمی گیرم :cry2:
      برنامه فوریه :angry:
      آنچه هستی هدیه است از طرف خدا به تو
      و آنچه می توانی باشی هدیه ای است از طرف تو به خدا
      پس بهترین باش
      www.mhedayati.blogfa.com

      دیدگاه


        #18
        پاسخ : پسورد

        زمانی که یک متغیر Word به EEPROM ریخته میشه در دو خونه حافظه قرار می گیره . بنابراین برای خوندن از حافظه هم باید دو خونه حافظه خونده شه ( یعنی با یک متغیر Word خونده بشه ).

        خیلی مشکل نیست فقط نباید گیج شد .
        خط به خط برنامه رو simulate کن

        دیدگاه


          #19
          پاسخ : پسورد

          من تو تایپیک قبلی مربوط به قفل رمز مثل تو با eeprom و ذخیره پسوورد مشکل داشتم ولی حل شد البته با کمک دوستان و الان برنامه خوب کار میکنه
          Ss = 0
          Readeeprom Ss , 20
          If Ss = 1 Then Goto Star ; End If
          Ss = 1
          Writeeeprom Ss , 20
          Waitms 4
          N = 8888888
          Writeeeprom N , 10
          Waitms 4
          Y = 55555
          Writeeeprom Y , 1
          Waitms 4
          Star:
          تو ضیحات دوستان تو همون تایپیک فکر کنم کافیه Nمربوط به ذخیره پین کد هست که تو برنامه با دستور Readeeprom N , 10
          خونده میشه Y هم مربوط یه پسوورد که به همین ترتیب.
          Ss هم واسه اینه که برنامه دفعه اول که اجرا میشه این دو تا کد رو ذخیره کنه و دفعات بعدی به یک شدن این مقدار به سراغ خونه های 1و10 eeprom میره واسه خوندن پین و پسوورد
          بازم میگم تو همون تایپیک کاملا توضیح دادن دوستان
          زنده بو دن را به بیداری بگذرانیم که سال ها به اجبار خواهیم خفت

          دیدگاه


            #20
            پاسخ : پسورد

            نوشته اصلی توسط حامــد
            زمانی که یک متغیر Word به EEPROM ریخته میشه در دو خونه حافظه قرار می گیره . بنابراین برای خوندن از حافظه هم باید دو خونه حافظه خونده شه ( یعنی با یک متغیر Word خونده بشه ).

            خیلی مشکل نیست فقط نباید گیج شد .
            خط به خط برنامه رو simulate کن

            میشه یه مثال بزنین یا بیشتر توضیح بدین :sad:
            آنچه هستی هدیه است از طرف خدا به تو
            و آنچه می توانی باشی هدیه ای است از طرف تو به خدا
            پس بهترین باش
            www.mhedayati.blogfa.com

            دیدگاه


              #21
              پاسخ : پسورد

              فرض کن قراره عدد 1000 تو خونه حافظه ریخته بشه . این عدد بیشتر از هشت بیت فضا لازم داره (1000=1111101000 B& ) . بنابراین باید در یک متغیر دوبایتی (word یا Integer) قرار بگیره. به این صورت که هشت بیت کم ارزش در یک بایت و هم هشت بیت پر ارزش در بایت دیگه مستقر میشه .

              حالا اگه قرار باشه این عدد دو بایتی در خونه های حافظه ذخیره بشه به همین صورت انجام میشه ( یعنی دو تا هشت بیت )
              پس اگه عدد 1000 در متغیر w ریخته شده باشه ( که مثلا Word تعریف شده ) برای ریختن اون تو حافظه این کارو می کنیم :

              Writeeeprom w,0
              با این کار خونه های 0 و 1 حافظه توسط این دستور اشغال میشه .

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

              Dim R as word
              Readeeprom R,0

              با این کار همون عددی که در خونه 0 و 1 حافظه نوشته شده بود ، خونده میشه .
              باید دقت کرد که اگه متغیر R به صوزت بایت تعریف میشد فقط محتوای خونه 0 در اون ریخته میشه . یا مثلا اگه R به صورت Long تعریف بشه خونه های 0 و 1 و 2 و 3 خونده میشه .
              ...

              دیدگاه


                #22
                پاسخ : پسورد

                Check_pass1:
                B1 = Low(b)
                Readeeprom B1 , 10
                Waitms 20
                B2 = High(b)
                Readeeprom B2 , 11
                Waitms 20
                B = Makeint(b1 , B2)

                If B = Pass Then
                Count = 0
                Goto Change
                Check_pass2:
                B1 = Low(b)
                Writeeeprom B1 , 10
                Waitms 20
                B2 = High(b)
                Writeeeprom B2 , 10
                Waitms 20

                این جوری نوشتم :sad:
                ولی جواب نگرفتم :cry2:
                آنچه هستی هدیه است از طرف خدا به تو
                و آنچه می توانی باشی هدیه ای است از طرف تو به خدا
                پس بهترین باش
                www.mhedayati.blogfa.com

                دیدگاه


                  #23
                  پاسخ : پسورد

                  oo: :cry2: :angry:
                  آنچه هستی هدیه است از طرف خدا به تو
                  و آنچه می توانی باشی هدیه ای است از طرف تو به خدا
                  پس بهترین باش
                  www.mhedayati.blogfa.com

                  دیدگاه


                    #24
                    پاسخ : پسورد

                    احتیاجی به اینکار نیست . کافیه تو برنامه B به صورت Word تعریف بشه .
                    زمانی که قراره با رمز ذخیره شده مقایسه بشه باید با یک متغیر Word از حافظه خونده بشه .
                    تا اونجا که یادم میاد این متغیر اسمش Pass بود . پس باید Pass هم به صورت Word تعریف بشه .
                    این یعنی این که باید برای چک کردن پسورد به این صورت عمل کرد :
                    Readeeprom Pass,0
                    If Pass = B then
                    .
                    .

                    و زمانی که قراره پسورد جددی ذخیره بشه :
                    Writeeeprom B , 0

                    فقط تنها فرقی که با برنامه قبل داره اینه که B و Pass به صورتWord تعریف شدند.

                    دیدگاه


                      #25
                      پاسخ : پسورد

                      این کارو کردم جواب نگرفتم(eeprom)
                      به خاطر همین بایت بایت جدا کردم :cry:
                      در مورد تایمر هم
                      از تایمر یک استفاده کردم
                      پیکره بندی مثل کتاب انجام دادم
                      مقدار اولیه 64535 برای تایمر تعریف کردم
                      سرریزش فعال کردم
                      وقفه هم فعال
                      ولی.........بازم جواب نداد :cry2:
                      آنچه هستی هدیه است از طرف خدا به تو
                      و آنچه می توانی باشی هدیه ای است از طرف تو به خدا
                      پس بهترین باش
                      www.mhedayati.blogfa.com

                      دیدگاه


                        #26
                        پاسخ : پسورد

                        من یه برنامه نوشتم . اما فقط دیباگ کردم. 90 درصد درسته.
                        اینجا مس ذارم چکش کنین.

                        به اسن صورته که در صورتی که چشم فعال بشه تایمر شروع به کار می کنه و باید در مدت 3 دقیقه پسورد وارد بشه . در صورتی که بیشتر از 3 بار اشتباه وارد بشه یا 3 دقیقه رد بشه آلارم به صدا در میاد .
                        در حالت عادی با فشردن کلید PSW امکان تغییر رمز وجود داره .
                        اگر کلید Status فشرده بشه میشه دزدگیرو فعال یا غیر فعال کرد .

                        فایل های پیوست شده

                        دیدگاه


                          #27
                          پاسخ : پسورد

                          پسورد اولیه رو باید چه جوری وارد کنم

                          میشه این قسمت و توضیح بدین
                          ase 1:
                          Cls
                          Lcd "DEVICE IS ACTIVE"
                          Wait 2
                          Goto First
                          Case 2:
                          Cls
                          Lcd "DEVICE UNACTIVE"
                          Set Porta.0
                          Wait 2
                          Disable Int0
                          Goto First
                          Case 10:
                          Goto First
                          آنچه هستی هدیه است از طرف خدا به تو
                          و آنچه می توانی باشی هدیه ای است از طرف تو به خدا
                          پس بهترین باش
                          www.mhedayati.blogfa.com

                          دیدگاه


                            #28
                            پاسخ : پسورد

                            چند تا راه داری .
                            اول این که اگه به حافظه دست نزده باشی به صورت پیش فرض با FF پر شده . یعنی یک عدد دو بایتی میشه FFFF و این یعنی پسورد پیش فرض 65535 ثبت شده .

                            راه دو اینه که با استفاده از پروگرمر و نرم افزار اون عدد مورد نظرو تو بافر EEPROM قرار بدی و اون Write کنی .

                            راه سوم اینه که یه برنامه جداگانه بنویسی که فقط یک عددو تو خونه 0 بریزه و بعد از اون این برنامه رو پروگرم کنی .

                            ...


                            در مورد اون قسمت هم منظورم فعال یا غیر فعال کردن دزدگیر بود .
                            اگه کلید مورد نظر زده بشه وارد اینجا میشه . در اینجا امکان فشردن سه تا کلید هست . کلید Esc که به منوی اصلی برمی گرده ، کلید 1 که دزدگیرو فعال می کنه و کلید 3 که دزدگیرو غیر فعال می کنه .
                            از اونجایی که فعال شدن دزدگیر توسط وقفه خارجی ایجاد میشه ، بنابراین باید این وقفه به تناسب فعال یا غیر فعال بشه . همین طور متغیر Active هم باید 0 بشه . ( که من کامل ننوشتم :icon_razz: )

                            پس بهتره این قسمت این طوری بشه :

                            Status:
                            Cls
                            Locate 1 , 1
                            Lcd "ACTIVE = 1"
                            Locate 2 , 1
                            Lcd "UNACTIVE = 3"
                            Do
                            A = Getkbd()
                            A = Lookup(a , Key)
                            Select Case A
                            Case 1:
                            Cls
                            Lcd "DEVICE IS ACTIVE"
                            Enable Int0
                            Active = 0
                            Wait 2
                            Goto First
                            Case 3:
                            Cls
                            Lcd "DEVICE UNACTIVE"
                            Active = 0
                            Wait 2
                            Disable Int0
                            Goto First
                            Case 13:
                            Goto First
                            End Select
                            Loop

                            دیدگاه


                              #29
                              پاسخ : پسورد

                              دستتون درد نکنه :wow:
                              یک دنیا ممنون :applause:
                              برنامه فعلاً همه ی قسمتهاش درست کار میکنه
                              فقط آژیرش فکر می کنم مشکل از مدارشه
                              چون با led o rele درست کار میکنه
                              بازم ممنون
                              :bye
                              آنچه هستی هدیه است از طرف خدا به تو
                              و آنچه می توانی باشی هدیه ای است از طرف تو به خدا
                              پس بهترین باش
                              www.mhedayati.blogfa.com

                              دیدگاه

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