اطلاعیه

Collapse
No announcement yet.

پسورد

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

    پسورد

    '-------------------------------------------------------------------------------
    $regfile = "m16def.dat"
    $crystal = 8000000
    '-------------------------------------------------------------------------------
    Config Lcdpin = Pin , Db4 = Pind.3 , Db5 = Pind.4 , Db6 = Pind.5 , Db7 = Pind.6 , E = Pind.1 , Rs = Pind.2
    Config Lcd = 16 * 2
    Config Kbd = Portc , Debounce = 200 , Delay = 200
    Config Timer1 = Timer , Prescale = 1
    Enable Interrupts
    Enable Timer1
    Enable Ovf1
    Config Porta = Output
    '-------------------------------------------------------------------------------
    Dim Pass As Eram Byte
    Dim A As Byte
    Dim B As Byte
    Dim I As Byte
    Dim Chek As Byte
    Dim C As Byte
    '-------------------------------------------------------------------------------
    Pass = 222
    B = 0
    C = 0
    '-------------------------------------------------------------------------------
    Main1:
    Cls
    Home
    Lcd " enter pasword"
    Wait 1
    '-------------------------------------------------------------------------------
    Stop Timer1
    Start Timer1
    Timer1 = 60636
    On Ovf1 Pass
    '-------------------------------------------------------------------------------
    Pass:
    Cls
    Home
    C = C + 1
    If C > 200 Then
    Goto M1
    Else
    Goto M
    End If
    '-------------------------------------------------------------------------------
    M:
    A = Getkbd()
    A = Lookup(a , Read_key)
    If A > 15 Then Goto M
    If A = 13 Then Goto Mm
    Waitms 500
    Lcd A
    B = B * 10
    B = B + A
    Goto M
    '-------------------------------------------------------------------------------
    End 'end program
    '-------------------------------------------------------------------------------
    Mm:
    B = A
    If A = Pass Then
    Goto Main2
    Waitms 500
    Else
    Cls
    Home
    Lcd "Password false"
    Lowerline
    Lcd "Enter Password"
    Wait 2
    I = I + 1
    If I > 3 Then
    Goto M
    Else
    Goto M1
    End If
    End If
    '-------------------------------------------------------------------------------
    M1:
    Cls
    Home
    Lcd "Error Password"
    '-------------------------------------------------------------------------------
    Main2:
    Cls
    Home
    Lcd " 1 cheang password"
    Lowerline
    Lcd " 2 exit "
    Wait 2
    Cls
    Home
    Goto M3
    '-------------------------------------------------------------------------------
    M3:
    A = Getkbd()
    A = Lookup(a , Read_key)
    If A > 15 Then Goto M3
    If A = 1 Then
    Goto Cheang
    End If
    If A = 2 Then
    Goto Main1
    End If
    '-------------------------------------------------------------------------------
    Cheang:
    Cls
    Home
    Lcd " enter new password "
    Waitms 500
    Cls
    Home
    Goto Password
    '-------------------------------------------------------------------------------
    Password:
    B = 0
    Pa:
    A = Getkbd()
    A = Lookup(a , Read_key)
    If A > 15 Then Goto Pa
    If A = 13 Then Goto Mn
    Waitms 500
    Lcd A
    B = B * 10
    B = B + A
    Goto Pa
    '-------------------------------------------------------------------------------
    Mn:
    B = A
    Pass = 0
    A = Pass
    Goto Main1
    '-------------------------------------------------------------------------------
    Read_key:
    Data 13 , 14 , 0 , 15 , 12 , 9 , 8 , 7 , 11 , 6 , 5 , 4 , 10 , 3 , 2 , 1,
    '-------------------------------------------------------------------------------

    این برنامه رو واسه پسورد نوشتم ولی جواب نمیگیرم نمدونم چرا؟

    زمانی که متغیر رو eram
    معرفی می کنم نیازی نیست از read o write
    استفاده کنم!
    آنچه هستی هدیه است از طرف خدا به تو
    و آنچه می توانی باشی هدیه ای است از طرف تو به خدا
    پس بهترین باش
    www.mhedayati.blogfa.com

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

    من برنامه رو نگاه نکردم . چون همون اول دیدم پسورد تو برنامه نوشته شده .
    برای پسورد معمولا از حافظه EEPROM استفاده می کنن.
    دستورات Writeeeprom و Readeeprom تو Help نرم افزار وجود دارند . حتما اونا رو بررسی کن .

    دیدگاه


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

      یعنی نمی شه بدون
      read o write
      متغیرم eram
      آنچه هستی هدیه است از طرف خدا به تو
      و آنچه می توانی باشی هدیه ای است از طرف تو به خدا
      پس بهترین باش
      www.mhedayati.blogfa.com

      دیدگاه


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

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

        دیدگاه


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

          دوستان من برنامه رو کامل ندیدم ولی اینو میدونم برای خواندن و نوشتن EEPROM داخلی میکرو در برنامه BASCOM همون که مقدار یا متغیر رو ،برابر متغیر ساخته شده در EEPROM قرار بدیم کفایت میکنه.

          دیدگاه


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

            نوشته اصلی توسط هدایتی
            یعنی نمی شه بدون
            read o write
            متغیرم eram
            حالا چرا بدون اون ؟

            سخت نیست که

            دیدگاه


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

              آدرس حافظه eeprom می تونه متغیر باشه؟

              فیوز بیت ها چه تغییری می کنه؟
              آنچه هستی هدیه است از طرف خدا به تو
              و آنچه می توانی باشی هدیه ای است از طرف تو به خدا
              پس بهترین باش
              www.mhedayati.blogfa.com

              دیدگاه


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

                هر آدرسی رو می تونی برای حافظه EEPROM در نظر بگیری .
                به شرطی که تو محدوده مجاز میکرو باشه

                دیدگاه


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

                  '-------------------------------------------------------------------------------
                  $regfile = "m16def.dat"
                  $crystal = 8000000
                  '-------------------------------------------------------------------------------
                  Config Lcdpin = Pin , Db4 = Pind.3 , Db5 = Pind.4 , Db6 = Pind.5 , Db7 = Pind.6 , E = Pind.1 , Rs = Pind.2
                  Config Lcd = 16 * 2
                  Config Kbd = Portc , Debounce = 200 , Delay = 200
                  Config Porta = Output
                  Config Timer1 = Timer , Prescale = 1
                  Enable Interrupts
                  Enable Timer1
                  Enable Ovf1
                  Stop Timer1
                  Timer1 = 64535
                  Start Timer1
                  On Ovf1 Pass
                  '-------------------------------------------------------------------------------
                  Dim A As Byte
                  Dim B As Byte
                  Dim C As Word
                  Dim I As Byte
                  Dim K As Byte
                  Dim Min1 As Byte
                  '-------------------------------------------------------------------------------
                  K = 3
                  '-------------------------------------------------------------------------------
                  Main:
                  Do
                  Cls
                  Home
                  Lcd " enter password "
                  Wait 1
                  '-------------------------------------------------------------------------------
                  M:
                  Cls
                  Home
                  A = Getkbd()
                  A = Lookup(a , Read_key)
                  If A > 15 Then Goto M
                  If A = 13 Then Goto W
                  Waitms 500
                  Lcd A
                  Waitms 500
                  B = B * 10
                  B = B + A
                  Loop
                  '-------------------------------------------------------------------------------
                  W:
                  Writeeeprom B , 10
                  Waitms 5
                  '-------------------------------------------------------------------------------
                  M1:
                  Do
                  A = Getkbd()
                  A = Lookup(a , Read_key)
                  If A > 15 Then Goto M1
                  If A = 13 Then Goto R
                  Waitms 500
                  Lcd A
                  B = B * 10
                  B = B + A
                  B = C
                  Loop
                  '-------------------------------------------------------------------------------
                  R:
                  Readeeprom A , 10
                  If A = C Then
                  Goto T
                  Else
                  Goto F
                  End If

                  '-------------------------------------------------------------------------------
                  T:
                  Do
                  Cls
                  Home
                  Lcd " 1 cheang password "
                  Lowerline
                  Lcd " 2 exit "
                  Wait 2
                  T1:
                  A = Getkbd()
                  A = Lookup(a , Read_key)
                  If A > 15 Then Goto T1
                  If A = 1 Then Goto Cheang
                  If A = 2 Then Goto Main
                  Loop
                  '-------------------------------------------------------------------------------
                  Cheang:
                  Cls
                  Home
                  Lcd " enter new password "
                  Waitms 500
                  Goto M
                  '-------------------------------------------------------------------------------
                  F:
                  Cls
                  Home
                  Lcd " password false "
                  For I = 1 To K
                  Incr I
                  Goto Main
                  Next
                  Goto F1
                  '-------------------------------------------------------------------------------
                  F1:
                  Lcd " error password "
                  Set Porta.0
                  Set Porta.1
                  '-------------------------------------------------------------------------------
                  Pass:
                  Stop Timer1
                  Cls
                  Home
                  Incr C
                  If C > 1000 Then
                  Min1 = Min1 + 1
                  If Min1 > 3 Then
                  Goto F1
                  Else
                  Goto M1
                  End If
                  End If
                  Timer1 = 64535
                  Start Timer1
                  Return
                  '-------------------------------------------------------------------------------
                  Read_key:
                  Data 13 , 14 , 0 , 15 , 12 , 9 , 8 , 7 , 11 , 6 , 5 , 4 , 10 , 3 , 2 , 1,
                  '-------------------------------------------------------------------------------




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

                  دیدگاه


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

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

                    دیدگاه


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

                      خب برنامه یه سری ایراد داره .
                      اما بهتره دقیقا بگین چه برنامه ای مد نظر شماست.
                      برنامه ای که در ابتدا رمز عبور بخواد و در صورت تایید وارد منوی بعدی بشه...!!؟؟
                      خیلی کوتاه روند برنامه رو توضیح بده .

                      دیدگاه


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

                        یه دزدگیره
                        که با فعال شدن فتوسل باید برنبمه پسورد اجرا بشه
                        اگر پسورد صحیح وارد شد امکان تغییر پسورد باشه
                        در غیر این صورت تا سه بار پسورد بگیره اگر هر سه بار اشتباه بود خطا بده و پایه آژیر فعال بشه
                        در ضمن اگه در مدت 5 دقیقه اول اگه اصلا پسورد وارد نشد بازم خطا بده و مثل قبل :sad:
                        آنچه هستی هدیه است از طرف خدا به تو
                        و آنچه می توانی باشی هدیه ای است از طرف تو به خدا
                        پس بهترین باش
                        www.mhedayati.blogfa.com

                        دیدگاه


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

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

                          Cls
                          B = 0
                          Count = 0
                          Do
                          Repeat:
                          A = Getkbd()
                          A = Lookup(a , Read_key)
                          If A > 15 Then Goto Repeat
                          If A = 15 Then Goto Check_pass
                          If A < 10 Then
                          B = B * 10
                          B = B + A
                          Locate 1 , 7
                          Lcd B
                          End If
                          If A = 13 Then
                          B = B / 10
                          Locate 1 , 7
                          Lcd B ; " "
                          End If
                          Loop
                          '-------------------------------------------------------------------------------
                          Check_pass:
                          Readeeprom Pass , 10
                          Waitms 5
                          If B = Pass Then
                          Count = 0
                          Goto Unactive
                          Else
                          Incr Count
                          If Count > 3 Then
                          Goto Active_alarm
                          End If


                          هر کجاش نامفهوم بود بپرس. فقط من این جدول لوک پ رو استفاده کردم :

                          Data 1 , 2 , 3 , 10 , 4 , 5 , 6 , 11 , 7 , 8 , 9 , 12 , 13 , 0 , 14 , 15 , 16
                          با این تفاسیر کلید Enter ( برای تایید پسورد) و Ecs (برای پاک کردن آخریت عدد وارد شده) میشه ( NC ها کلیدهایی هستند که استفاده نمیشن) :


                          1 2 3 NC
                          4 5 6 NC
                          7 8 9 NC
                          ESC 0 NC ENTER


                          برای قسمت خوندن هم بایدمشابه همین قسمت بالا عمل کرد . قسمت دریافت رمز باید نوشته بشه . بعد از Enter باید با رمز توی حافظه مقایسه بشه . و دوباره برنامه به قسمتی بره که باز یه رمز جدید بخواد . اونجا هم بعد از Enter باید بنویسی :
                          Writeeeprom B , 10

                          البته می تونی برای تاکید بیشتر دوبار زیر برنامه دریافت رمز اولیه رو بنویسی ( مشابه هر جایی که پسورد می خواد )

                          یه نکته دیگه هم اینه که متغیر B برای رمز های بزرگتر از 255 باید از نوع word تعریف بشه. ( معمولا همه جا رمز 4 رقمیه )

                          دیدگاه


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

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

                            دیدگاه


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

                              از قسمت false هم بیرون نمیاد
                              Cls

                              B = 0
                              Count = 0
                              Do
                              Repeat:
                              A = Getkbd()
                              A = Lookup(a , Read_key)
                              If A > 15 Then Goto Repeat
                              If A = 13 Then Goto Check_pass
                              If A < 10 Then
                              B = B * 10
                              B = B + A
                              Locate 1 , 7
                              Lcd B
                              End If

                              If A = 10 Then
                              B = B / 10
                              Locate 1 , 7
                              Lcd B ; " "
                              End If
                              Loop
                              '-------------------------------------------------------------------------------
                              Check_pass:
                              Writeeeprom B , 10
                              Waitms 5
                              '-------------------------
                              Cls
                              B = 0
                              Count = 0
                              Do
                              Repeat1:
                              A = Getkbd()
                              A = Lookup(a , Read_key)
                              If A > 15 Then Goto Repeat1
                              If A = 13 Then Goto Check_pass1
                              If A < 10 Then
                              B = B * 10
                              B = B + A
                              Pass = B
                              Locate 1 , 7
                              Lcd B
                              End If

                              If A = 10 Then
                              B = B / 10
                              Pass = B
                              Locate 1 , 7
                              Lcd B ; " "
                              End If

                              Loop
                              '---------------------------------
                              Check_pass1:
                              Readeeprom B , 10

                              If B = Pass Then
                              Count = 0
                              Goto Change
                              Else
                              'Incr Count
                              ' If Count < 3 Then
                              Goto False
                              'Else
                              'Goto Active_alarm

                              End If

                              '-------------
                              Change:
                              Cls
                              Lcd " change password"
                              Waitms 500
                              Cls
                              Lcd "enter new password"
                              Waitms 500
                              Cls
                              Goto Repeat
                              '--------------------
                              False:
                              Cls
                              Lcd " false password "
                              Waitms 500
                              Incr Count
                              If Count < 3 Then
                              Goto Repeat1

                              Else
                              Goto Active_alarm
                              End If


                              Active_alarm:
                              Set Porta.0
                              '--------------------------
                              End 'end program
                              '------------------------------------------------------
                              Read_key:
                              Data 13 , 14 , 0 , 15 , 12 , 9 , 8 , 7 , 11 , 6 , 5 , 4 , 10 , 3 , 2 , 1,
                              '-------------------------------------------------------------------------------
                              آنچه هستی هدیه است از طرف خدا به تو
                              و آنچه می توانی باشی هدیه ای است از طرف تو به خدا
                              پس بهترین باش
                              www.mhedayati.blogfa.com

                              دیدگاه

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