- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: Enigma auf dem µC

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Anzeige

    Powerstation Test
    Zitat Zitat von Che Guevara Beitrag anzeigen
    Aber Walze_1(26) wird doch noch vor Walze_1_inv(Walze_1(pointer_1)) beschrieben... Ich glaube, ich verstehe nicht, was du meinst..
    Ich denke Du hattest während ich geantwortet hab' den Code geändert.
    Der Code wie jetzt oben angezeigt funktioniert. Wo ist dann das Problem ?

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    Beiträge
    1.578
    Oh, tut mir leid, ich hättes dazu schreiben sollen!
    Also bei mir funktionierts leider nicht, ab und zu stimmt der Ein- und Ausgangstext nicht überein. Bist du dir sicher, dass es funktioniert?

    Gruß
    Chris

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Che Guevara Beitrag anzeigen
    Also bei mir funktionierts leider nicht, ab und zu stimmt der Ein- und Ausgangstext nicht überein.
    So steht's bei mir im Terminal des Simulators:
    Ausg: 4:20:8:8
    Chiff: 16:11:7:3
    Dechiff: 4:20:8:8

    Ausg: 16:21:8:13
    Chiff: 4:23:7:1
    Dechiff: 16:21:8:13

    Ausg: 22:4:23:12
    Chiff: 24:17:15:25
    Dechiff: 22:4:23:12

    Ausg: 21:16:15:5
    Chiff: 12:24:23:16
    Dechiff: 21:16:15:5

    Ausg: 2:24:5:15
    Chiff: 15:16:25:2
    Dechiff: 2:24:5:15

    Ausg: 7:18:1:10
    Chiff: 1:7:18:20
    Dechiff: 7:18:1:10

    Ausg: 18:22:3:6
    Chiff: 5:12:16:7
    Dechiff: 18:22:3:6

    Ausg: 23:8:1:6
    Chiff: 13:9:18:7
    Dechiff: 23:8:1:6

    Ausg: 8:4:16:19
    Chiff: 19:17:3:21
    Dechiff: 8:4:16:19

    Ausg: 4:25:3:13
    Chiff: 16:13:16:1
    Dechiff: 4:25:3:13

    Ausg: 18:9:15:18
    Chiff: 5:8:23:9
    Dechiff: 18:9:15:18

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    Beiträge
    1.578
    Also ich teste gerade an der Hardware, und bei mir funktionierts nicht immer! Schon der zweite "zufällig" generierte Text "16:9:9:3" wird zu "16:9:15:18" ! Ich weiß aber nicht, worans liegt...

    Gruß
    Chris

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Hier mein Testcode:
    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    $framesize = 80
    $hwstack = 80
    $swstack = 80
    $sim
    
    
    Declare Sub Init_system()
    Declare Function Tastatur() As Byte
    Declare Sub Walze_drehen()
    Declare Function Codieren(byval Codieren_in As Byte) As Byte
    Declare Function Reflektor(byval Reflektor_in As Byte) As Byte
    
    
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
    Config Lcdbus = 4
    Initlcd
    Cls
    Cursor Off Noblink
    Deflcdchar 0 , 32 , 32 , 1 , 18 , 20 , 24 , 16 , 32
    
    Dim Walze_1(26) As Byte
    Dim Walze_1_inv(26) As Byte
    
    Dim Pointer_1 As Byte
    
    Dim Ar_out(4) As Byte
    Dim Ar_out_old(4) As Byte
    
    Dim Tmp As Byte
    Dim I As Byte
    
    Dim _out As Byte                                            'ascii-wert (skaliert auf 1-26)
    Dim _in As Byte                                             'ascii-wert (skaliert auf 1-26)
    
    Const _a = 1
    Const _b = 2
    Const _c = 3
    Const _d = 4
    Const _e = 5
    Const _f = 6
    Const _g = 7
    Const _h = 8
    Const _i = 9
    Const _j = 10
    Const _k = 11
    Const _l = 12
    Const _m = 13
    Const _n = 14
    Const _o = 15
    Const _p = 16
    Const _q = 17
    Const _r = 18
    Const _s = 19
    Const _t = 20
    Const _u = 21
    Const _v = 22
    Const _w = 23
    Const _x = 24
    Const _y = 25
    Const _z = 26
    
    Call Init_system()
    
    Do
    
    Ar_out(1) = Tastatur()
    Ar_out(2) = Tastatur()
    Ar_out(3) = Tastatur()
    Ar_out(4) = Tastatur()
    
    Locate 1 , 1
    Lcd "AUSGANGSSTELLUNG"
    Locate 2 , 1
    Lcd Ar_out(1) ; ":" ; Ar_out(2) ; ":" ; Ar_out(3) ; ":" ; Ar_out(4) ; "  "
    Print "Ausg: " ; Ar_out(1) ; ":" ; Ar_out(2) ; ":" ; Ar_out(3) ; ":" ; Ar_out(4) ; "  "
    Locate 2 , 16
    Lcd " "
    
    Waitms 500
    Cls
    
    Locate 1 , 1
    Lcd "CHIFFRIERT:"
    Locate 2 , 1
    Lcd "DECHIFFRIERT:"
    
    Waitms 500
    Cls
    
    Ar_out_old(1) = Ar_out(1)
    Ar_out_old(2) = Ar_out(2)
    Ar_out_old(3) = Ar_out(3)
    Ar_out_old(4) = Ar_out(4)
    
    Call Init_system()
    Ar_out(1) = Codieren(ar_out(1))
    Ar_out(2) = Codieren(ar_out(2))
    Ar_out(3) = Codieren(ar_out(3))
    Ar_out(4) = Codieren(ar_out(4))
    Locate 1 , 1
    Lcd Ar_out(1) ; ":" ; Ar_out(2) ; ":" ; Ar_out(3) ; ":" ; Ar_out(4) ; "  "
    Print "Chiff: " ; Ar_out(1) ; ":" ; Ar_out(2) ; ":" ; Ar_out(3) ; ":" ; Ar_out(4) ; "  "
    
    Call Init_system()
    Ar_out(1) = Codieren(ar_out(1))
    Ar_out(2) = Codieren(ar_out(2))
    Ar_out(3) = Codieren(ar_out(3))
    Ar_out(4) = Codieren(ar_out(4))
    Locate 2 , 1
    Lcd Ar_out(1) ; ":" ; Ar_out(2) ; ":" ; Ar_out(3) ; ":" ; Ar_out(4) ; "  "
    Print "Dechiff: " ; Ar_out(1) ; ":" ; Ar_out(2) ; ":" ; Ar_out(3) ; ":" ; Ar_out(4) ; "  "
    Print
    
    If Ar_out_old(1) = Ar_out(1) And Ar_out_old(2) = Ar_out(2) And Ar_out_old(3) = Ar_out(3) And Ar_out_old(4) = Ar_out(4) Then
       Locate 2 , 16
       Lcd Chr(0)
    Else
       Locate 2 , 16
       Lcd " "
    End If
    
    Waitms 500
    
    Loop
    
    '(
    Sub Walze_drehen()
    Local Cell_1 As Byte
      Cell_1 = Walze_1(1)
    For Pointer_1 = 1 To 26
       Tmp = Pointer_1 + 1
       If Tmp = 27 Then
         Walze_1(pointer_1) = Cell_1
       Else
         Walze_1(pointer_1) = Walze_1(tmp)
       End If
         Walze_1_inv(walze_1(pointer_1)) = Pointer_1
    Next Pointer_1
    End Sub
    ')
    Sub Walze_drehen()
    Local Tmp2 As Byte
    Tmp2 = Walze_1(1)
    For Pointer_1 = 1 To 26
       Tmp = Pointer_1 + 1
       If Tmp = 27 Then Tmp = 1
       Walze_1(pointer_1) = Walze_1(tmp)
       If Pointer_1 = 26 Then
          Walze_1(26) = Tmp2
       End If
       Walze_1_inv(walze_1(pointer_1)) = Pointer_1
    Next Pointer_1
    End Sub
    
    Function Tastatur() As Byte
    Tastatur = Rnd(25) + 1
    End Function
    
    
    Function Codieren(byval Codieren_in As Byte) As Byte
       Tmp = Walze_1(codieren_in)
       Tmp = Reflektor(tmp)
       Codieren = Walze_1_inv(tmp)
       Call Walze_drehen()
    End Function
    
    
    Function Reflektor(byval Reflektor_in As Byte) As Byte
    If Reflektor_in.0 = 0 Then
       Reflektor = Reflektor_in + 1
       If Reflektor = 27 Then Reflektor = 1
    Else
       Reflektor = Reflektor_in - 1
       If Reflektor = 0 Then Reflektor = 26
    End If
    End Function
    
    
    Sub Init_system()
    Walze_1(1) = 23
    Walze_1(2) = 15
    Walze_1(3) = 9
    Walze_1(4) = 24
    Walze_1(5) = 7
    Walze_1(6) = 1
    Walze_1(7) = 22
    Walze_1(8) = 17
    Walze_1(9) = 12
    Walze_1(10) = 13
    Walze_1(11) = 26
    Walze_1(12) = 2
    Walze_1(13) = 5
    Walze_1(14) = 21
    Walze_1(15) = 14
    Walze_1(16) = 25
    Walze_1(17) = 11
    Walze_1(18) = 6
    Walze_1(19) = 16
    Walze_1(20) = 8
    Walze_1(21) = 3
    Walze_1(22) = 18
    Walze_1(23) = 4
    Walze_1(24) = 19
    Walze_1(25) = 10
    Walze_1(26) = 20
    
    Walze_1_inv(23) = 1
    Walze_1_inv(15) = 2
    Walze_1_inv(9) = 3
    Walze_1_inv(24) = 4
    Walze_1_inv(7) = 5
    Walze_1_inv(1) = 6
    Walze_1_inv(22) = 7
    Walze_1_inv(17) = 8
    Walze_1_inv(12) = 9
    Walze_1_inv(13) = 10
    Walze_1_inv(26) = 11
    Walze_1_inv(2) = 12
    Walze_1_inv(5) = 13
    Walze_1_inv(21) = 14
    Walze_1_inv(14) = 15
    Walze_1_inv(25) = 16
    Walze_1_inv(11) = 17
    Walze_1_inv(6) = 18
    Walze_1_inv(16) = 19
    Walze_1_inv(8) = 20
    Walze_1_inv(3) = 21
    Walze_1_inv(18) = 22
    Walze_1_inv(4) = 23
    Walze_1_inv(19) = 24
    Walze_1_inv(10) = 25
    Walze_1_inv(20) = 26
    End Sub
    
    End

  6. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    Beiträge
    1.578
    Hm, also dein Code funktioniert bei mir auch! Mittlerweile habe ich über 5000 Durchläufe ohne auch nur einen Fehler Vielen vielen Dank
    ABER: Wo ist der Unterschied?
    Hier ist mein momentaner Code (funktioniert nicht):
    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    $framesize = 80
    $hwstack = 80
    $swstack = 80
    
    
    
    Declare Sub Init_system()
    Declare Function Tastatur() As Byte
    Declare Sub Walze_drehen()
    Declare Function Codieren(byval Codieren_in As Byte) As Byte
    Declare Function Reflektor(byval Reflektor_in As Byte) As Byte
    
    
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
    Config Lcdbus = 4
    Initlcd
    Cls
    Cursor Off Noblink
    Deflcdchar 0 , 32 , 32 , 1 , 18 , 20 , 24 , 16 , 32
    
    
    
    Dim Walze_1(26) As Byte
    Dim Walze_1_inv(26) As Byte
    
    Dim Pointer_1 As Byte
    
    Dim Ar_out(4) As Byte
    Dim Ar_out_old(4) As Byte
    
    Dim Tmp As Byte
    Dim Tmp2 As Byte
    Dim I As Byte
    
    Dim _out As Byte                                            'ascii-wert (skaliert auf 1-26)
    Dim _in As Byte                                             'ascii-wert (skaliert auf 1-26)
    
    
    
    Const _a = 1
    Const _b = 2
    Const _c = 3
    Const _d = 4
    Const _e = 5
    Const _f = 6
    Const _g = 7
    Const _h = 8
    Const _i = 9
    Const _j = 10
    Const _k = 11
    Const _l = 12
    Const _m = 13
    Const _n = 14
    Const _o = 15
    Const _p = 16
    Const _q = 17
    Const _r = 18
    Const _s = 19
    Const _t = 20
    Const _u = 21
    Const _v = 22
    Const _w = 23
    Const _x = 24
    Const _y = 25
    Const _z = 26
    
    
    
    
    Call Init_system()
    
    
    
    
    
    
    Do
    
    
    
    Ar_out(1) = Tastatur()
    Ar_out(2) = Tastatur()
    Ar_out(3) = Tastatur()
    Ar_out(4) = Tastatur()
    
    Locate 1 , 1
    Lcd "AUSGANGSSTELLUNG"
    Locate 2 , 1
    Lcd Ar_out(1) ; ":" ; Ar_out(2) ; ":" ; Ar_out(3) ; ":" ; Ar_out(4) ; "  "
    Locate 2 , 16
    Lcd " "
    
    Waitms 1000
    Cls
    
    
    
    Ar_out_old(1) = Ar_out(1)
    Ar_out_old(2) = Ar_out(2)
    Ar_out_old(3) = Ar_out(3)
    Ar_out_old(4) = Ar_out(4)
    
    
    Call Init_system()
    Ar_out(1) = Codieren(ar_out(1))
    Ar_out(2) = Codieren(ar_out(2))
    Ar_out(3) = Codieren(ar_out(3))
    Ar_out(4) = Codieren(ar_out(4))
    Locate 1 , 1
    Lcd Ar_out(1) ; ":" ; Ar_out(2) ; ":" ; Ar_out(3) ; ":" ; Ar_out(4) ; "  "
    
    
    Call Init_system()
    Ar_out(1) = Codieren(ar_out(1))
    Ar_out(2) = Codieren(ar_out(2))
    Ar_out(3) = Codieren(ar_out(3))
    Ar_out(4) = Codieren(ar_out(4))
    Locate 2 , 1
    Lcd Ar_out(1) ; ":" ; Ar_out(2) ; ":" ; Ar_out(3) ; ":" ; Ar_out(4) ; "  "
    
    If Ar_out_old(1) = Ar_out(1) And Ar_out_old(2) = Ar_out(2) And Ar_out_old(3) = Ar_out(3) And Ar_out_old(4) = Ar_out(4) Then
       Locate 2 , 16
       Lcd Chr(0)
    Else
       Locate 2 , 16
       Lcd " "
    End If
    
    
    Waitms 1000
    
    
    
    Loop
    
    
    
    Sub Walze_drehen()
    Tmp2 = Walze_1(1)
    For Pointer_1 = 1 To 26
       Tmp = Pointer_1 + 1
       If Tmp = 27 Then Tmp = 1
       Walze_1(pointer_1) = Walze_1(tmp)
       If Pointer_1 = 26 Then
          Walze_1(26) = Tmp2
       End If
       Walze_1_inv(walze_1(pointer_1)) = Pointer_1
    Next Pointer_1
    End Sub
    
    
    Function Tastatur() As Byte
       Tastatur = Rnd(25) + 1
    End Function
    
    
    Function Codieren(byval Codieren_in As Byte) As Byte
       Tmp = Walze_1(codieren_in)
       Tmp = Reflektor(tmp)
       Codieren = Walze_1_inv(tmp)
       Call Walze_drehen()
    End Function
    
    
    Function Reflektor(byval Reflektor_in As Byte) As Byte
    If Reflektor_in.0 = 0 Then
       Reflektor_in = Reflektor_in + 1
       If Reflektor_in = 27 Then Reflektor_in = 1
    Else
       Reflektor_in = Reflektor_in - 1
       If Reflektor_in = 0 Then Reflektor_in = 26
    End If
    Reflektor = Reflektor_in
    End Function
    
    
    Sub Init_system()
    Walze_1(1) = 23
    Walze_1(2) = 15
    Walze_1(3) = 9
    Walze_1(4) = 24
    Walze_1(5) = 7
    Walze_1(6) = 1
    Walze_1(7) = 22
    Walze_1(8) = 17
    Walze_1(9) = 12
    Walze_1(10) = 13
    Walze_1(11) = 26
    Walze_1(12) = 2
    Walze_1(13) = 5
    Walze_1(14) = 21
    Walze_1(15) = 14
    Walze_1(16) = 25
    Walze_1(17) = 11
    Walze_1(18) = 6
    Walze_1(19) = 16
    Walze_1(20) = 8
    Walze_1(21) = 3
    Walze_1(22) = 18
    Walze_1(23) = 4
    Walze_1(24) = 19
    Walze_1(25) = 10
    Walze_1(26) = 20
    
    Walze_1_inv(23) = 1
    Walze_1_inv(15) = 2
    Walze_1_inv(9) = 3
    Walze_1_inv(24) = 4
    Walze_1_inv(7) = 5
    Walze_1_inv(1) = 6
    Walze_1_inv(22) = 7
    Walze_1_inv(17) = 8
    Walze_1_inv(12) = 9
    Walze_1_inv(13) = 10
    Walze_1_inv(26) = 11
    Walze_1_inv(2) = 12
    Walze_1_inv(5) = 13
    Walze_1_inv(21) = 14
    Walze_1_inv(14) = 15
    Walze_1_inv(25) = 16
    Walze_1_inv(11) = 17
    Walze_1_inv(6) = 18
    Walze_1_inv(16) = 19
    Walze_1_inv(8) = 20
    Walze_1_inv(3) = 21
    Walze_1_inv(18) = 22
    Walze_1_inv(4) = 23
    Walze_1_inv(19) = 24
    Walze_1_inv(10) = 25
    Walze_1_inv(20) = 26
    End Sub
    
    
    End
    Gruß
    Chris
    Geändert von Che Guevara (13.09.2011 um 12:25 Uhr)

  7. #17
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Che Guevara Beitrag anzeigen
    Mittlerweile habe ich über 5000 Durchläufe ohne auch nur einen Fehler
    Auch auf echter HW ?
    ABER: Wo ist der Unterschied?
    Kann ich jetzt auch nicht sagen...

  8. #18
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    Beiträge
    1.578
    Ja, auf echter Hardware ATMEGA32 aufm RN-Control. Funktioniert einwandfrei Nur mein Code funktioniert nicht, obwohls fast der gleiche ist?! ...

    Gruß
    Chris

  9. #19
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Che Guevara Beitrag anzeigen
    ... obwohls fast der gleiche ist?! ...
    Mit kleinen Ausnahmen:
    Code:
    Else
       Reflektor_in = Reflektor_in - 1
       If Reflektor_in = 0 Then Reflektor = 26
    End If
    Reflektor = Reflektor_in
    End Function

  10. #20
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    Beiträge
    1.578
    Oh, jetzt sehe ich es auch... Danke!
    Dann werde ich jetzt mal am Projekt weiterbasteln

    Vielen Dank & Gruß
    Chris

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen