Advertisement
Guest User

Untitled

a guest
May 20th, 2017
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $large
  2. $sim
  3. $eeprom
  4.  
  5. Deflcdchar 0 , 12 , 4 , 6 , 12 , 4 , 4 , 14 , 32            
  6. Deflcdchar 1 , 2 , 4 , 14 , 16 , 14 , 1 , 30 , 32          
  7. Deflcdchar 2 , 2 , 4 , 14 , 16 , 16 , 17 , 14 , 32          
  8. Deflcdchar 3 , 32 , 32 , 14 , 17 , 31 , 16 , 14 , 4        
  9. Deflcdchar 4 , 32 , 32 , 15 , 17 , 17 , 15 , 1 , 14         'g
  10. Deflcdchar 5 , 2 , 4 , 31 , 2 , 4 , 8 , 31 , 32            
  11. Deflcdchar 6 , 2 , 4 , 14 , 17 , 17 , 17 , 14 , 32          
  12. Deflcdchar 7 , 4 , 32 , 31 , 2 , 4 , 8 , 31 , 32            
  13. 'Deflcdchar ? , 32 , 32 , 14 , 1 , 15 , 17 , 15 , 2            'ą
  14.  
  15. Config Porta = Input
  16. 'Set Porta
  17.  
  18. Dim Dlugosc As Byte
  19. Dim Stan As Byte
  20. Dim Flaga As Bit
  21. Dim I As Byte
  22. Dim J As Byte
  23. Dim Tajnyszyfriterator As Byte
  24.  
  25. Dim Szyfr(9) As Byte
  26. Dim Szyfruser(9) As Byte
  27. Dim Tajnyszyfr(16) As Byte
  28. Dim Tajnyszyfruser(16) As Byte
  29. '-------------------------------------------
  30. Const Wsk_flaga = &H00
  31. Const Wsk_1 = &H01
  32. Const Wsk_2 = &H02
  33. Const Wsk_3 = &H03
  34. Const Wsk_4 = &H04
  35. Const Wsk_5 = &H05
  36. Const Wsk_6 = &H06
  37. Const Wsk_7 = &H07
  38. Const Wsk_8 = &H08
  39. Const Wsk_9 = &H09
  40.  
  41. Dim Szyfr_pamiec(9) As Byte
  42. Szyfr_pamiec(1) = Wsk_1
  43. Szyfr_pamiec(2) = Wsk_2
  44. Szyfr_pamiec(3) = Wsk_3
  45. Szyfr_pamiec(4) = Wsk_4
  46. Szyfr_pamiec(5) = Wsk_5
  47. Szyfr_pamiec(6) = Wsk_6
  48. Szyfr_pamiec(7) = Wsk_7
  49. Szyfr_pamiec(8) = Wsk_8
  50. Szyfr_pamiec(9) = Wsk_9
  51.  
  52. Dim Flaga_eprom As Byte
  53. Flaga_eprom = 1
  54.  
  55. '--------------------------------------------
  56.  
  57. Tajnyszyfr(1) = 1
  58. Tajnyszyfr(2) = 2
  59. Tajnyszyfr(3) = 3
  60. Tajnyszyfr(4) = 4
  61. Tajnyszyfr(5) = 5
  62. Tajnyszyfr(6) = 6
  63. Tajnyszyfr(7) = 7
  64. Tajnyszyfr(8) = 8
  65. Tajnyszyfr(9) = 1
  66. Tajnyszyfr(10) = 2
  67. Tajnyszyfr(11) = 3
  68. Tajnyszyfr(12) = 4
  69. Tajnyszyfr(13) = 5
  70. Tajnyszyfr(14) = 6
  71. Tajnyszyfr(15) = 7
  72. Tajnyszyfr(16) = 8
  73.  
  74. Stan = 0
  75. Dlugosc = 0
  76. Flaga = 0
  77. ' tablice w bascomie zaczynają się od 1 xDDD
  78. I = 1
  79. Tajnyszyfriterator = 1
  80.  
  81. Declare Sub Wprowadz_dlugosc
  82. Declare Sub Wprowadz_szyfr1
  83. Declare Sub Wprowadz_szyfr2
  84. Declare Sub Sprawdz_szyfr
  85. Declare Sub Wprowadz_szyfr_otwieranie
  86. Declare Sub Sprawdz_szyfr_otwieranie
  87. Declare Sub Zmiana_szyfru
  88.  
  89. Dim Pom As Byte
  90. Dim Pom2 As Byte
  91. Pom2 = 16
  92. '-----------------------------------------------------
  93. ' STAS if eprom == 0 to stan = 0
  94. ' jezeli w epromie cos jest to stan = 3 i uzupelniamy tablice "szyfr" zawartoscia epromu
  95.  
  96.  
  97. 'zapisane_halo to flaga z adresu pamieci w ktorym trzymam info o tym czy haslojest zapisane w pamieci,
  98. ' jesli 1 to zapisane
  99. Dim Zapisane_haslo As Byte
  100. Readeeprom Zapisane_haslo , Wsk_flaga
  101.  
  102. If Zapisane_haslo = 1 Then
  103.    Stan = 3
  104.    For I = 1 To 9
  105.       Readeeprom Szyfr(i) , Szyfr_pamiec(i)
  106.    Next
  107. Else
  108.    Stan = 0
  109. End If
  110. '-------------------------------------------------------
  111.  
  112. ' aby zmienic haslo nalezy najpierw podac poprawny szyfr, a nastepnie podac tajny szyfr
  113.  
  114. ' main
  115. Do
  116.    Main:
  117.    Pom = Dlugosc + 1
  118.  
  119.    If Tajnyszyfriterator = 17 Then Call Zmiana_szyfru
  120.  
  121.    If Stan = 0 Then Call Wprowadz_dlugosc
  122.    If Stan = 1 Then Call Wprowadz_szyfr1
  123.    If Stan = 2 Then Call Wprowadz_szyfr2
  124.    If Stan = 3 Then Call Wprowadz_szyfr_otwieranie
  125.  
  126.    'Print "dlugosc=" ; Dlugosc ; " i=" ; I ; " TajnySzyfrIterator=" ; Tajnyszyfriterator
  127.  
  128. Loop
  129. End
  130.  
  131. ' wprowadzanie dlugosci
  132. Sub Wprowadz_dlugosc
  133.  
  134.    If Flaga = 0 Then
  135.       Cls
  136.       Lcd "Jak d" ; Chr(0) ; "u" ; Chr(4) ; "i szyfr?"
  137.       Lowerline
  138.       Lcd "  D" ; Chr(0) ; "u" ; Chr(4) ; "o" ; Chr(1) ; Chr(2) ; ": "
  139.       Flaga = 1
  140.    End If
  141.  
  142.    If Porta.0 = 1 Then
  143.       Bitwait Porta.0 , Reset
  144.       Cls
  145.       Lcd " D" ; Chr(0) ; "u" ; Chr(4) ; "o" ; Chr(1) ; Chr(2) ; " szyfru "
  146.       Lowerline
  147.       Lcd " Pomi" ; Chr(3) ; "dzy 4 a 8 "
  148.       Wait 5
  149.       Flaga = 0
  150.       Goto Main
  151.    End If
  152.  
  153.    If Porta.1 = 1 Then
  154.       Bitwait Porta.1 , Reset
  155.       Cls
  156.       Lcd " D" ; Chr(0) ; "u" ; Chr(4) ; "o" ; Chr(1) ; Chr(2) ; " szyfru "
  157.       Lowerline
  158.       Lcd " Pomi" ; Chr(3) ; "dzy 4 a 8 "
  159.       Wait 5
  160.       Flaga = 0
  161.       Goto Main
  162.    End If
  163.  
  164.    If Porta.2 = 1 Then
  165.       Bitwait Porta.2 , Reset
  166.       Cls
  167.       Lcd " D" ; Chr(0) ; "u" ; Chr(4) ; "o" ; Chr(1) ; Chr(2) ; " szyfru "
  168.       Lowerline
  169.       Lcd " Pomi" ; Chr(3) ; "dzy 4 a 8 "
  170.       Wait 5
  171.       Flaga = 0
  172.       Goto Main
  173.    End If
  174.  
  175.    If Porta.3 = 1 Then
  176.       Bitwait Porta.3 , Reset
  177.       Lcd "4"
  178.       Dlugosc = 5
  179.       Stan = 1
  180.       Flaga = 0
  181.    End If
  182.  
  183.    If Porta.4 = 1 Then
  184.       Bitwait Porta.4 , Reset
  185.       Lcd "5"
  186.       Dlugosc = 6
  187.       Stan = 1
  188.       Flaga = 0
  189.    End If
  190.  
  191.    If Porta.5 = 1 Then
  192.       Bitwait Porta.5 , Reset
  193.       Lcd "6"
  194.       Dlugosc = 7
  195.       Stan = 1
  196.       Flaga = 0
  197.    End If
  198.  
  199.    If Porta.6 = 1 Then
  200.       Bitwait Porta.6 , Reset
  201.       Lcd "7"
  202.       Dlugosc = 8
  203.       Stan = 1
  204.       Flaga = 0
  205.    End If
  206.  
  207.    If Porta.7 = 1 Then
  208.       Bitwait Porta.7 , Reset
  209.       Lcd "8"
  210.       Dlugosc = 9
  211.       Stan = 1
  212.       Flaga = 0
  213.    End If
  214.  
  215.  
  216. End Sub
  217.  
  218. ' wprowadzanie szyfru
  219. Sub Wprowadz_szyfr1
  220.  
  221.    If Flaga = 0 Then
  222.       Cls
  223.       Lcd "  Podaj szyfr"
  224.       Lowerline
  225.       Lcd "Szyfr: "
  226.       Flaga = 1
  227.    End If
  228.  
  229.    If I = Dlugosc Then
  230.       Stan = 2
  231.       Flaga = 0
  232.       I = 1
  233.       Goto Main
  234.    End If
  235.  
  236.    If Porta.0 = 1 Then
  237.       Bitwait Porta.0 , Reset
  238.       Lcd "#"
  239.       Szyfr(i) = 1
  240.       Incr I
  241.    End If
  242.  
  243.    If Porta.1 = 1 Then
  244.       Bitwait Porta.1 , Reset
  245.       Lcd "#"
  246.       Szyfr(i) = 2
  247.       Incr I
  248.    End If
  249.  
  250.    If Porta.2 = 1 Then
  251.       Bitwait Porta.2 , Reset
  252.       Lcd "#"
  253.       Szyfr(i) = 3
  254.       Incr I
  255.    End If
  256.  
  257.    If Porta.3 = 1 Then
  258.       Bitwait Porta.3 , Reset
  259.       Lcd "#"
  260.       Szyfr(i) = 4
  261.       Incr I
  262.    End If
  263.  
  264.    If Porta.4 = 1 Then
  265.       Bitwait Porta.4 , Reset
  266.       Lcd "#"
  267.       Szyfr(i) = 5
  268.       Incr I
  269.    End If
  270.  
  271.    If Porta.5 = 1 Then
  272.       Bitwait Porta.5 , Reset
  273.       Lcd "#"
  274.       Szyfr(i) = 6
  275.       Incr I
  276.    End If
  277.  
  278.    If Porta.6 = 1 Then
  279.       Bitwait Porta.6 , Reset
  280.       Lcd "#"
  281.       Szyfr(i) = 7
  282.       Incr I
  283.    End If
  284.  
  285.    If Porta.7 = 1 Then
  286.       Bitwait Porta.7 , Reset
  287.       Lcd "#"
  288.       Szyfr(i) = 8
  289.       Incr I
  290.    End If
  291.  
  292.  
  293. End Sub
  294.  
  295. ' potwierdzanie szyfru
  296. Sub Wprowadz_szyfr2
  297.  
  298.    If Flaga = 0 Then
  299.       Flaga = 1
  300.       Cls
  301.       Lcd " Potwierd" ; Chr(5) ; " szyfr"
  302.       Lowerline
  303.       Lcd "Szyfr: "
  304.       Flaga = 1
  305.    End If
  306.  
  307.    If I = Dlugosc Then
  308.       Stan = 2
  309.       Flaga = 0
  310.       I = 1
  311.       Call Sprawdz_szyfr
  312.    End If
  313.  
  314.    If Porta.0 = 1 Then
  315.       Bitwait Porta.0 , Reset
  316.       Lcd "#"
  317.       Szyfruser(i) = 1
  318.       Incr I
  319.    End If
  320.  
  321.    If Porta.1 = 1 Then
  322.       Bitwait Porta.1 , Reset
  323.       Lcd "#"
  324.       Szyfruser(i) = 2
  325.       Incr I
  326.    End If
  327.  
  328.    If Porta.2 = 1 Then
  329.       Bitwait Porta.2 , Reset
  330.       Lcd "#"
  331.       Szyfruser(i) = 3
  332.       Incr I
  333.    End If
  334.  
  335.    If Porta.3 = 1 Then
  336.       Bitwait Porta.3 , Reset
  337.       Lcd "#"
  338.       Szyfruser(i) = 4
  339.       Incr I
  340.    End If
  341.  
  342.    If Porta.4 = 1 Then
  343.       Bitwait Porta.4 , Reset
  344.       Lcd "#"
  345.       Szyfruser(i) = 5
  346.       Incr I
  347.    End If
  348.  
  349.    If Porta.5 = 1 Then
  350.       Bitwait Porta.5 , Reset
  351.       Lcd "#"
  352.       Szyfruser(i) = 6
  353.       Incr I
  354.    End If
  355.  
  356.    If Porta.6 = 1 Then
  357.       Bitwait Porta.6 , Reset
  358.       Lcd "#"
  359.       Szyfruser(i) = 7
  360.       Incr I
  361.    End If
  362.  
  363.    If Porta.7 = 1 Then
  364.       Bitwait Porta.7 , Reset
  365.       Lcd "#"
  366.       Szyfruser(i) = 8
  367.       Incr I
  368.    End If
  369.  
  370. End Sub
  371.  
  372. ' sprawdzanie czy podany szyfr zgadza sie z jego potwierdzeniem
  373. Sub Sprawdz_szyfr
  374.  
  375.    Flaga = 0
  376.  
  377.    For J = 1 To Dlugosc
  378.       If Szyfr(j) <> Szyfruser(j) Then
  379.          Flaga = 0
  380.          Exit For
  381.       Else
  382.          Flaga = 1
  383.       End If
  384.       'Print "J=" ; J ; " " ; Szyfr(j) ; " " ; Szyfruser(j) ; " flaga= " ; Flaga
  385.    Next J
  386.  
  387.    'Print "flaga=" ; Flaga
  388.  
  389.    If Flaga = 0 Then
  390.       Cls
  391.       Lcd " Podano r" ; Chr(6) ; Chr(7) ; "ne "
  392.       Lowerline
  393.       Lcd "     szyfry!    "
  394.       Wait 5
  395.       Stan = 0
  396.       Flaga = 0
  397.       I = 1
  398.    Else
  399.       Cls
  400.       Lcd "  Szyfr zosta" ; Chr(0) ; "  "
  401.       Lowerline
  402.       Lcd "   ustawiony!   "
  403.       '------------------------------------------------------------------
  404.       ' STAS: Tutaj zrobić zapis tablicy "Szyfr" do EPROM!!!'
  405.       For I = 1 To 9                                        'od 1 bo 0 to flaga
  406.          Writeeeprom Szyfr(i) , Szyfr_pamiec(i)
  407.       Next
  408.  
  409.       Writeeeprom Flaga_eprom , Wsk_flaga
  410.  
  411.       '-----------------------------------------------------------------
  412.       Wait 5
  413.       Stan = 3
  414.       Flaga = 0
  415.       I = 1
  416.    End If
  417.  
  418. End Sub
  419.  
  420. ' domyslny tryb pracy (otwieranie sejfu jezeli szyfr jest poprawny)
  421. Sub Wprowadz_szyfr_otwieranie
  422.  
  423.    If Flaga = 0 Then
  424.       Cls
  425.       Lcd "  Podaj szyfr"
  426.       Lowerline
  427.       Lcd "Szyfr: "
  428.       Flaga = 1
  429.    End If
  430.  
  431.    If I = Dlugosc Then
  432.       Stan = 2
  433.       Flaga = 0
  434.       I = 1
  435.       Call Sprawdz_szyfr_otwieranie
  436.    End If
  437.  
  438.    If Porta.0 = 1 Then
  439.       Bitwait Porta.0 , Reset
  440.       Lcd "#"
  441.       Szyfruser(i) = 1
  442.       Incr I
  443.       Tajnyszyfruser(tajnyszyfriterator) = 1
  444.       Incr Tajnyszyfriterator
  445.    End If
  446.  
  447.    If Porta.1 = 1 Then
  448.       Bitwait Porta.1 , Reset
  449.       Lcd "#"
  450.       Szyfruser(i) = 2
  451.       Incr I
  452.       Tajnyszyfruser(tajnyszyfriterator) = 2
  453.       Incr Tajnyszyfriterator
  454.    End If
  455.  
  456.    If Porta.2 = 1 Then
  457.       Bitwait Porta.2 , Reset
  458.       Lcd "#"
  459.       Szyfruser(i) = 3
  460.       Incr I
  461.       Tajnyszyfruser(tajnyszyfriterator) = 3
  462.       Incr Tajnyszyfriterator
  463.    End If
  464.  
  465.    If Porta.3 = 1 Then
  466.       Bitwait Porta.3 , Reset
  467.       Lcd "#"
  468.       Szyfruser(i) = 4
  469.       Incr I
  470.       Tajnyszyfruser(tajnyszyfriterator) = 4
  471.       Incr Tajnyszyfriterator
  472.    End If
  473.  
  474.    If Porta.4 = 1 Then
  475.       Bitwait Porta.4 , Reset
  476.       Lcd "#"
  477.       Szyfruser(i) = 5
  478.       Incr I
  479.       Tajnyszyfruser(tajnyszyfriterator) = 5
  480.       Incr Tajnyszyfriterator
  481.    End If
  482.  
  483.    If Porta.5 = 1 Then
  484.       Bitwait Porta.5 , Reset
  485.       Lcd "#"
  486.       Szyfruser(i) = 6
  487.       Incr I
  488.       Tajnyszyfruser(tajnyszyfriterator) = 6
  489.       Incr Tajnyszyfriterator
  490.    End If
  491.  
  492.    If Porta.6 = 1 Then
  493.       Bitwait Porta.6 , Reset
  494.       Lcd "#"
  495.       Szyfruser(i) = 7
  496.       Incr I
  497.       Tajnyszyfruser(tajnyszyfriterator) = 7
  498.       Incr Tajnyszyfriterator
  499.    End If
  500.  
  501.    If Porta.7 = 1 Then
  502.       Bitwait Porta.7 , Reset
  503.       Lcd "#"
  504.       Szyfruser(i) = 8
  505.       Incr I
  506.       Tajnyszyfruser(tajnyszyfriterator) = 8
  507.       Incr Tajnyszyfriterator
  508.    End If
  509.  
  510. End Sub
  511.  
  512. ' sprawdzanie czy podany przez uzytkownika szyfr jest poprawny
  513. Sub Sprawdz_szyfr_otwieranie
  514.  
  515.    Flaga = 0
  516.  
  517.    For J = 1 To Dlugosc
  518.       If Szyfr(j) <> Szyfruser(j) Then
  519.          Flaga = 0
  520.          Exit For
  521.       Else
  522.          Flaga = 1
  523.       End If
  524.    Next J
  525.  
  526.    If Flaga = 1 Then
  527.       Cls
  528.       Lcd "   Otwarte :)   "
  529.       Wait 60
  530.       Stan = 3
  531.       Flaga = 0
  532.       I = 1
  533.       Tajnyszyfriterator = 1
  534.    Else
  535.       Cls
  536.       Lcd "  Podano b" ; Chr(0) ; Chr(3) ; "dny  "
  537.       Lowerline
  538.       Lcd "     szyfr!   "
  539.       Wait 5
  540.       Stan = 3
  541.       Flaga = 0
  542.       I = 1
  543.    End If
  544.  
  545. End Sub
  546.  
  547. ' sprawdzanie czy ukryty szyfr jest poprawny
  548. Sub Zmiana_szyfru
  549.  
  550.    Tajnyszyfriterator = 1
  551.    Flaga = 0
  552.    'Break
  553.  
  554.    For J = 1 To Pom2
  555.       If Tajnyszyfr(j) <> Tajnyszyfruser(j) Then
  556.          Flaga = 0
  557.          Exit For
  558.       Else
  559.          Flaga = 1
  560.       End If
  561.       'Print Tajnyszyfr(j) ; " " ; Tajnyszyfruser(j)
  562.    Next J
  563.  
  564.    For J = 1 To Pom2
  565.       'Print "TajnySzyfr= " ; Tajnyszyfr(j) ; " " ; "TajnySzyfrUser= " ; Tajnyszyfruser(j)
  566.    Next J
  567.  
  568.    If Flaga = 1 Then
  569.       Cls
  570.       Lcd "  wprowadzono   "
  571.       Lowerline
  572.       Lcd "  tajny szyfr   "
  573.       Wait 4
  574.       Flaga = 0
  575.       I = 1
  576.       Stan = 0
  577.       Goto Main
  578.    End If
  579.  
  580. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement