اطلاعیه

Collapse
No announcement yet.

رمز دیجیتال در باز کن

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

    رمز دیجیتال در باز کن

    سلام دوستان من بعد از مدتها الآن که تو سربازیم قصد نوشتن برنامه قفل دیجیتال رو دارم که با دیدن و استفاده کردن از پروژه های دوستان و درس گرفتن از اونها و جاهایی هم کپی گرفت از اونها تا یه جاهایی پیش رفتم لطفا راهنماییم کنید من میخوام یه قفل رمز دار بنویسم که بعد از وصل شدن برق یک کلید داشته باشه که با زدن اون آماده دریافت رمز بشه و بعد از وارد کردن رمز و فشردن کلید مربع رمز جدید ست بشه و با قطع برق از بین نره و هر زمان که کلید ذکر شده رو فشار بدیم وارد قسمت ست کردن رمز جدید بشه
    در زمانی هم که میخوای رمز جدید رو وارد کنیم با زدن کلید مربع تاییدش کنیم که رمز رو وارد کردیم اگر درست بود باز بشه در غیر این سورت پیام خطا بده البته از طریق بازر
    حالا من برنامم رو اینجا قرار میدم لطفا راهنماییم کنید تا کاملش کنم با تشکر
    کد:
    '$sim
    $regfile = "m8def.dat"
    $crystal = 4000000
    Config Portb = Output
    Config Pinb.0 = Input
    Config Kbd = Portd , Debounce = 100 , Delay = 5
    '===============================================================================
    Dim A As Byte , B As Byte , C As Long , D As Byte , Z As Byte , Q As Byte , F As Long , _
     G As Long , E As Byte , K As Word , N As Byte , X As Byte , P As Word , _
     L As Byte
    Readeeprom K , 1
    C = 0
    E = 0
    X = 0
    N = 0
    Main:
    A = Getkbd()
    If A = 16 Then Goto Main
    Ese:
    D = Getkbd()
    If D <> 16 Then Goto Ese
    B = Lookup(a , Keydata)
    Select Case B
    '===============================================================================
    Case 0 To 9:
    Readeeprom K , 1
    Waitms 50
    Incr X
    C = C * 10
    C = C + B
    
    Sound Portb.3 , 100 , 25
    
     If X > 5 Then Goto Wrong
     If X = 5 Then  Goto Main
    
    
    
    Goto Main
    
    
    '===============================================================================
    Case 23:
    If X < 6 Then
    Goto Wrong
    Else
    If K = C Then
    Goto Ok
    Else
    If K <> C Then
    Goto Wrong
    Else
    Goto Main
    End If
    End If
    End If
    '===============================================================================
    
    
    End Select
    
    End
    
    '===============================================================================
    Ok:
    Sound Portb.3 , 100 , 20
    Sound Portb.3 , 100 , 40
    Sound Portb.3 , 100 , 60
    Sound Portb.3 , 100 , 85
    Sound Portb.3 , 100 , 100
    Sound Portb.3 , 100 , 125
    Sound Portb.3 , 100 , 150
    Sound Portb.3 , 100 , 180
    Sound Portb.3 , 100 , 200
    
    Set Portb.4
    Waitms 500
    Reset Portb.4
    C = 0
    G = 0
    X = 0
    Goto Main
    '===============================================================================
    
    Wrong:
    
    Sound Portb.3 , 200 , 20
    Sound Portb.3 , 200 , 40
    Sound Portb.3 , 200 , 20
    Sound Portb.3 , 200 , 40
    Sound Portb.3 , 200 , 20
    C = 0
    X = 0
    
    Goto Main
    '===============================================================================
    Keydata:
    Data , 7 , 8 , 9 , 20 , 4 , 5 , 6 , 21 , 1 , 2 , 3 , 22 , 23 , 0 , 24 , 25
    خدایا چگونه زیستن را به من بیاموز ، چگونه مردن را خود خواهم آموخت
    "دکتر علی شریعتی"

    #2
    پاسخ : رمز دیجیتال در باز کن

    یعنی هیچکی نیست من برنامه بالا رو به صورت زیر تکمیل کردم ولی بازم جواب نمیده به نظرتون مشکل از کجاست :cry2:
    خدایا چگونه زیستن را به من بیاموز ، چگونه مردن را خود خواهم آموخت
    "دکتر علی شریعتی"

    دیدگاه


      #3
      پاسخ : رمز دیجیتال در باز کن

      کد:
      $sim
      $regfile = "m8def.dat"
      $crystal = 4000000
      Config Portb = Output
      Config Kbd = Portd , Debounce = 100 , Delay = 5
      '===============================================================================
      Dim A As Byte , B As Byte , C As Dword , D As Byte , R As Byte , Z As Byte , Q As Byte , F As Long , _
       G As Long , E As Byte , K As Dword , N As Byte , X As Byte , P As Word , _
       L As Byte
      
       Readeeprom Q , 2
       Readeeprom K , 1
      
      
      C = 0
      E = 0
      X = 0
      N = 0
      
      Main:
      
      If Q <> 2 Then Goto Firest
      
      A = Getkbd()
      If A = 16 Then Goto Main
      Ese:
      D = Getkbd()
      If D <> 16 Then Goto Ese
      B = Lookup(a , Keydata)
      Select Case B
      '===============================================================================
      Case 0 To 9:
      Readeeprom K , 1
      
      Incr X
      C = C * 10
      C = C + B
      
      Sound Portb.3 , 100 , 25
      
       If X > 6 Then Goto Wrong
       If X = 6 Then Goto Main
      
      
      
      Goto Main
      
      
      '===============================================================================
      Case 23:
      
      If C = K Then Goto Ok
      
      If X < 6 Then Goto Wrong
      
      If C <> K Then Goto Wrong
      
      Goto Main
      
      '===============================================================================
      
      
      End Select
      
      End
      
      '===============================================================================
      Ok:
      Sound Portb.3 , 100 , 20
      Sound Portb.3 , 100 , 40
      Sound Portb.3 , 100 , 60
      Sound Portb.3 , 100 , 85
      Sound Portb.3 , 100 , 100
      Sound Portb.3 , 100 , 125
      Sound Portb.3 , 100 , 150
      Sound Portb.3 , 100 , 180
      Sound Portb.3 , 100 , 200
      
      Set Portb.4
      Waitms 500
      Reset Portb.4
      C = 0
      G = 0
      X = 0
      Goto Main
      '===============================================================================
      Wrong:
      
      Sound Portb.3 , 200 , 20
      Sound Portb.3 , 200 , 40
      Sound Portb.3 , 200 , 20
      Sound Portb.3 , 200 , 40
      Sound Portb.3 , 200 , 20
      C = 0
      X = 0
       Waitms 20
      Goto Main
      '=======================================================
      Firest:
      Set Portc.0
      
      
      Z = Getkbd()
      If Z = 16 Then Goto Firest
      Check:
      R = Getkbd()
      If R <> 16 Then Goto Check
      R = Lookup(z , Keydata)
      Select Case R
      '===============================================================================
      Case 0 To 9:
      
      Incr X
      C = C * 10
      C = C + R
      
       If X > 6 Then Goto Wrong
      
        K = C
      
        Q = 2
        If X < 6 Then Goto Firest
      
      Writeeeprom K , 1
      Waitms 20
      Readeeprom K , 1
      
      
       If X = 6 Then K = C
      
      
      
      Goto Main
      
      
      Case 23:
      
      If X < 6 Then
      Goto Wrong
      
      If X > 6 Then
       Goto Wrong
      Writeeeprom Q , 2
      Waitms 20
      Readeeprom Q , 2
      If X = 6 Then
      Goto Main
      End If
      End If
      End If
      End Select
      End
      
      '===============================================================================
      Keydata:
      Data , 7 , 8 , 9 , 20 , 4 , 5 , 6 , 21 , 1 , 2 , 3 , 22 , 23 , 0 , 24 , 25
      خدایا چگونه زیستن را به من بیاموز ، چگونه مردن را خود خواهم آموخت
      "دکتر علی شریعتی"

      دیدگاه

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