اطلاعیه

Collapse
No announcement yet.

مشکل با قفل رمز باatmega8

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

    مشکل با قفل رمز باatmega8

    سلام دوستان
    یه مشکلی برام پیش اومده که انشاالله با کمک شما دوستان و اساتید رفع بشه.من یه قفل رمز دارم که وقتی یکی دوبار پسورد را اشتباه بزنم یا اینکه یه مدت دستگاه بدون استفاده باشه پسورد درست رو هم میگه اشتباهه :eek:!!!لطفا راه نمایی کنین مشکل از کجاست[code=vb]$regfile = "m8def.dat"
    $crystal = 8000000 'Internal RC
    $hwstack = 64
    $swstack = 64
    $framesize = 64

    'LCD
    Config Lcdpin = Pin , Db4 = Pinc.3 , Db5 = Pinc.2 , Db6 = Pinc.1 , Db7 = _
    Pinc.0 , E = Pinc.4 , Rs = Pinc.5
    Config Lcd = 16 * 2
    Cls : Home : Cursor Off

    'Back Space Symbol
    Deflcdchar 0 , 32 , 4 , 12 , 31 , 12 , 4 , 32 , 32

    'Keypad
    Config Kbd = Portb

    [I/O
    Config Pind.0 = Output 'Active
    Config Pind.1 = Output 'Relay
    Config Pind.2 = Input 'Default
    Config Pind.3 = Output 'Speake[/img]r

    'Set Pullup Resistor For Default Key
    Set Portd.2 'Active Pullup Res

    'Aliases
    Active Alias Portd.0
    Relay Alias Portd.1
    Default Alias Pind.2
    Speaker Alias Pind.3

    'Var
    Dim Digits As Byte , Key As Byte , Result As Byte , Num As String * 4
    Dim Pass(8) As String * 1 , Pass1(8) As String * 1 , Pass2(8) As String * 1
    Dim Pass_eeprom(8) As Eram String * 1 , Rcv(8) As String * 1
    Dim Temp As Byte , Sel As Byte

    'Subroutines
    Declare Sub Main
    Declare Sub Default_pass
    Declare Sub Load2ram
    Declare Sub Getpass
    Declare Sub Check
    Declare Sub Change
    Declare Sub Menu
    Declare Sub Change_pass
    Declare Sub Confirm
    Declare Sub Check1
    'Declare Sub Cleardisp(byval Sel As Byte)

    'Function
    Declare Function Is_num(byval Num As String) As Byte

    'Main Prog Start Here:
    Call Main
    End

    '____________________________________________ ___________________________________

    'Main Sub, Check Default Key Status & Call Other Sub's
    Sub Main
    Sound Speaker , 120 , 20 'Startup Sound
    Active = 1 'Red LED=1
    If Default = 0 Then Call Default_pass
    Call Load2ram
    Call Getpass
    End Sub
    '____________________________________________ ___________________________________

    'Set Default Password (11111111)
    Sub Default_pass
    Sound Speaker , 120 , 30
    'Clear Pass
    For Temp = 1 To 8
    Pass_eeprom(temp) = "1"
    Waitms 20
    Next Temp
    Cursor Off
    Cls : Home : Lcd "Memoey Erased!"
    Lowerline : Lcd "Pass=11111111"
    Sound Speaker , 120 , 60
    Waitms 1500
    End Sub
    '____________________________________________ ___________________________________

    'Load Pass to SRAM
    Sub Load2ram
    For Temp = 1 To 8
    Pass(temp) = Pass_eeprom(temp)
    Waitms 20
    Next Temp
    End Sub
    '____________________________________________ ___________________________________

    'Get Password
    Sub Getpass
    Cls : Home : Lcd "Password? Cls=" ; Chr(0)
    Home L : Cursor Blink
    Sound Speaker , 120 , 60
    Digits = 0
    Waitms 500
    Do
    Key = Getkbd()
    Num = Lookupstr(key , Decode)
    If Num = "Cls" Then Call Getpass
    If Is_num(num) = 1 Then
    Sound Speaker , 120 , 50
    Sound Speaker , 120 , 40
    Incr Digits
    Locate 2 , Digits : Lcd "*"
    Rcv(digits) = Num
    If Digits = 8 Then 'Pass Entered
    Call Check
    If Result <> 8 Then
    'Error Pass
    Sound Speaker , 120 , 80
    Cls : Home : Lcd "Error!"
    Cursor Noblink
    Waitms 500
    Call Getpass
    Else
    'Successful Pass
    Call Menu
    End If
    End If
    Waitms 300
    End If
    Loop
    End Sub
    '____________________________________________ ___________________________________

    'Check Pressed Key Is A Number(0-9)? If Yes Is-num = 1 In No Is_num=0
    Function Is_num(byval Num As String) As Byte
    If Num = "0" Or Num = "1" Or Num = "2" Or Num = "3" Or Num = "4" _
    Or Num = "5" Or Num = "6" Or Num = "7" Or Num = "8" Or Num = "9" then
    Is_num = 1
    Else
    Is_num = 0
    End If
    End Function
    '____________________________________________ ___________________________________

    'Password Checker
    Sub Check
    Result = 0
    For Temp = 1 To 8
    If Rcv(temp) = Pass(temp) Then Incr Result
    Next Temp
    End Sub
    '____________________________________________ ___________________________________

    'Sub Menu (Open Door Or Cahnge pass)
    Sub Menu
    Cls : Home : Cursor Noblink : Lcd "1=Relay Exit"
    Lowerline : Lcd "2=Change"
    Sound Speaker , 120 , 100
    Sound Speaker , 120 , 80
    Sound Speaker , 120 , 60
    Waitms 500
    Do
    Key = Getkbd()
    Num = Lookupstr(key , Decode)
    If Num = "1" Then
    Toggle Relay
    If Relay = 0 Then
    Sound Speaker , 120 , 20
    Else
    Sound Speaker , 120 , 40
    End If
    Waitms 500
    End If
    If Num = "Exit" Then Call Getpass
    If Num = "2" Then Call Change_pass
    Loop
    End Sub
    '____________________________________________ ___________________________________

    'Change Password
    Sub Change_pass
    Cls : Home : Lcd "New Pass? Cls=" ; Chr(0)
    Lowerline : Lcd " Exit"
    Sound Speaker , 120 , 60
    Home L : Cursor Blink
    Digits = 0
    Waitms 500
    Do
    Key = Getkbd()
    Num = Lookupstr(key , Decode)
    If Num = "Cls" Then Call Change_pass
    If Num = "Exit" Then Call Getpass
    If Is_num(num) = 1 Then
    Sound Speaker , 120 , 50
    Sound Speaker , 120 , 40
    Incr Digits
    Pass1(digits) = Num
    Locate 2 , Digits : Lcd "*"
    Waitms 300
    If Digits = 8 Then Call Confirm
    End If
    Loop
    End Sub
    '____________________________________________ ___________________________________

    'Confirm Password
    Sub Confirm
    Digits = 0
    Cls : Home : Lcd "Confirm: Cls=" ; Chr(0)
    Sound Speaker , 120 , 60
    Home L
    Waitms 500
    Do
    Key = Getkbd()
    Num = Lookupstr(key , Decode)
    If Num = "Cls" Then Call Confirm
    If Is_num(num) = 1 Then
    Sound Speaker , 120 , 50
    Sound Speaker , 120 , 40
    Incr Digits
    Pass2(digits) = Num
    Locate 2 , Digits : Lcd "*"
    Waitms 300
    If Digits = 8 Then
    Call Check1
    Cursor Noblink
    If Result = 8 Then
    Cls : Home : Lcd "Pass Changed!"
    Sound Speaker , 120 , 100
    Sound Speaker , 120 , 80
    Sound Speaker , 120 , 60
    For Temp = 1 To 8
    Pass_eeprom(temp) = Pass1(temp)
    Waitms 20
    Next Temp
    Call Load2ram
    Call Getpass
    Else
    Sound Speaker , 120 , 80
    Cls : Home : Lcd "Error!"
    Waitms 500
    Call Change_pass
    End If
    End If
    End If
    Loop
    End Sub
    '____________________________________________ ___________________________________

    'Confirm Pass Checker
    Sub Check1
    Result = 0
    For Temp = 1 To 8
    If Pass1(temp) = Pass2(temp) Then Incr Result
    Next Temp
    End Sub
    '____________________________________________ ___________________________________

    '____________________________________________ ___________________________________

    'Keypad Decode Data Table
    Decode:
    Data "1" , "2" , "3" , ""
    Data "4" , "5" , "6" , ""
    Data "7" , "8" , "9" , ""
    Data "Exit" , "0" , "Cls" , "" , ""
    '____________________________________________ ___________________________________
    [/code]
    [img][/img]

    #2
    پاسخ : مشکل با قفل رمز باatmega8

    دوستان کسی نیست کمکم کنه؟اگه کسی یه قفل رمز خوب سراغ داره لطفا معرفی کنه.مرسی

    دیدگاه


      #3
      پاسخ : مشکل با قفل رمز باatmega8

      اساتید لطفا کمک کنیید :cry2:

      دیدگاه


        #4
        پاسخ : مشکل با قفل رمز باatmega8

        نوشته اصلی توسط gt2
        دوستان کسی نیست کمکم کنه؟اگه کسی یه قفل رمز خوب سراغ داره لطفا معرفی کنه.مرسی
        دوست عزیز لطفا درون انجمن رو بگردین بعد تاپیک بزارید...
        لینک زیر رو ببینید...
        http://www.eca.ir/forum2/index.php?topic=111706.0
        *****عیب جامعه این است که همه می خواند آدم مهمی باشند ولی هیچ کس نمی خواهد فرد مفیدی باشد.*****
        http://electerodl.ir/forum

        دیدگاه


          #5
          پاسخ : مشکل با قفل رمز باatmega8

          نوشته اصلی توسط ehsan2774
          دوست عزیز لطفا درون انجمن رو بگردین بعد تاپیک بزارید...
          لینک زیر رو ببینید...
          http://www.eca.ir/forum2/index.php?topic=111706.0
          دوست عزیزاگه خاطرتون باشه تو تاپیک شما هم مطرح کردم مشکلنو که لطف کردید و کامنتمو پاک کردین!تاپیک شما مفیده ولی من عجله دارم تا بحث شما کامل بشه زمان میبره.اگه کمکم کنین ممنون میشم

          دیدگاه

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