Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $large
- $sim
- $eeprom
- '-----------------------------
- 'DOPISAC DO EEPROMU DLUGOSC
- Deflcdchar 0 , 12 , 4 , 6 , 12 , 4 , 4 , 14 , 32 'ł
- Deflcdchar 1 , 2 , 4 , 14 , 16 , 14 , 1 , 30 , 32 'ś
- Deflcdchar 2 , 2 , 4 , 14 , 16 , 16 , 17 , 14 , 32 'ć
- Deflcdchar 3 , 32 , 32 , 14 , 17 , 31 , 16 , 14 , 4 'ę
- Deflcdchar 4 , 32 , 32 , 15 , 17 , 17 , 15 , 1 , 14 'g
- Deflcdchar 5 , 2 , 4 , 31 , 2 , 4 , 8 , 31 , 32 'ź
- Deflcdchar 6 , 2 , 4 , 14 , 17 , 17 , 17 , 14 , 32 'ó
- Deflcdchar 7 , 4 , 32 , 31 , 2 , 4 , 8 , 31 , 32 'ż
- 'Deflcdchar ? , 32 , 32 , 14 , 1 , 15 , 17 , 15 , 2 'ą
- Config Porta = Input
- Config Portb = Output
- Config Lcd = 16 * 2
- 'Config Lcdpin = Pin , Db4 = P3.4 , Db5 = P3.5 , Db6 = P3.6 , Db7 = P3.7 , E = P3.3 , Rs = P3.1 'konfig z zajec
- Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.2 , Rs = Portb.0
- 'Set Porta
- Dim Dlugosc As Byte
- Dim Stan As Byte
- Dim Flaga As Bit
- Dim I As Byte
- Dim J As Byte
- Dim Tajnyszyfriterator As Byte
- Dim Szyfr(9) As Byte
- Dim Szyfruser(9) As Byte
- Dim Tajnyszyfr(16) As Byte
- Dim Tajnyszyfruser(16) As Byte
- '-------------------------------------------
- Const Wsk_flaga = &H00
- Const Wsk_1 = &H01
- Const Wsk_2 = &H02
- Const Wsk_3 = &H03
- Const Wsk_4 = &H04
- Const Wsk_5 = &H05
- Const Wsk_6 = &H06
- Const Wsk_7 = &H07
- Const Wsk_8 = &H08
- Const Wsk_9 = &H09
- Const Wsk_dlugosc = &H0A
- Dim Szyfr_pamiec(9) As Byte
- Szyfr_pamiec(1) = Wsk_1
- Szyfr_pamiec(2) = Wsk_2
- Szyfr_pamiec(3) = Wsk_3
- Szyfr_pamiec(4) = Wsk_4
- Szyfr_pamiec(5) = Wsk_5
- Szyfr_pamiec(6) = Wsk_6
- Szyfr_pamiec(7) = Wsk_7
- Szyfr_pamiec(8) = Wsk_8
- Szyfr_pamiec(9) = Wsk_9
- Dim Flaga_eprom As Byte
- Flaga_eprom = 1
- '--------------------------------------------
- Tajnyszyfr(1) = 1
- Tajnyszyfr(2) = 2
- Tajnyszyfr(3) = 3
- Tajnyszyfr(4) = 4
- Tajnyszyfr(5) = 5
- Tajnyszyfr(6) = 6
- Tajnyszyfr(7) = 7
- Tajnyszyfr(8) = 8
- Tajnyszyfr(9) = 1
- Tajnyszyfr(10) = 2
- Tajnyszyfr(11) = 3
- Tajnyszyfr(12) = 4
- Tajnyszyfr(13) = 5
- Tajnyszyfr(14) = 6
- Tajnyszyfr(15) = 7
- Tajnyszyfr(16) = 8
- Stan = 0
- Dlugosc = 0
- Flaga = 0
- ' tablice w bascomie zaczynają się od 1 xDDD
- I = 1
- Tajnyszyfriterator = 8
- Declare Sub Wprowadz_dlugosc
- Declare Sub Wprowadz_szyfr1
- Declare Sub Wprowadz_szyfr2
- Declare Sub Sprawdz_szyfr
- Declare Sub Wprowadz_szyfr_otwieranie
- Declare Sub Sprawdz_szyfr_otwieranie
- Declare Sub Zmiana_szyfru
- Dim Pom As Byte
- Dim Pom2 As Byte
- Pom2 = 16
- '-----------------------------------------------------
- ' if eprom == 0 to stan = 0
- ' jezeli w epromie cos jest to stan = 3 i uzupelniamy tablice "szyfr" zawartoscia epromu
- 'zapisane_halo to flaga z adresu pamieci w ktorym trzymam info o tym czy haslojest zapisane w pamieci,
- ' jesli 1 to zapisane
- Dim Zapisane_haslo As Byte
- Readeeprom Zapisane_haslo , Wsk_flaga
- If Zapisane_haslo = 1 Then
- Stan = 3
- Tajnyszyfriterator = 8
- Readeeprom Dlugosc , Wsk_dlugosc
- Print Dlugosc
- I = 1
- For J = 1 To 9
- Readeeprom Szyfr(j) , Szyfr_pamiec(j)
- Print Szyfr(j)
- Next
- Else
- Stan = 0
- End If
- '-------------------------------------------------------
- ' aby zmienic haslo nalezy najpierw podac poprawny szyfr, a nastepnie podac tajny szyfr
- ' main
- Do
- Main:
- Pom = Dlugosc + 1
- If Tajnyszyfriterator = 17 Then Call Zmiana_szyfru
- If Stan = 0 Then Call Wprowadz_dlugosc
- If Stan = 1 Then Call Wprowadz_szyfr1
- If Stan = 2 Then Call Wprowadz_szyfr2
- If Stan = 3 Then Call Wprowadz_szyfr_otwieranie
- Print "dlugosc=" ; Dlugosc ; " i=" ; I ; " TajnySzyfrIterator=" ; Tajnyszyfriterator
- Loop
- End
- ' wprowadzanie dlugosci
- Sub Wprowadz_dlugosc
- If Flaga = 0 Then
- Cls
- Lcd "Jak d" ; Chr(0) ; "u" ; Chr(4) ; "i szyfr?"
- Lowerline
- Lcd " D" ; Chr(0) ; "u" ; Chr(4) ; "o" ; Chr(1) ; Chr(2) ; ": "
- Flaga = 1
- End If
- If Porta.0 = 1 Then
- Bitwait Porta.0 , Reset
- Cls
- Lcd " D" ; Chr(0) ; "u" ; Chr(4) ; "o" ; Chr(1) ; Chr(2) ; " szyfru "
- Lowerline
- Lcd " Pomi" ; Chr(3) ; "dzy 4 a 8 "
- Wait 5
- Flaga = 0
- Goto Main
- End If
- If Porta.1 = 1 Then
- Bitwait Porta.1 , Reset
- Cls
- Lcd " D" ; Chr(0) ; "u" ; Chr(4) ; "o" ; Chr(1) ; Chr(2) ; " szyfru "
- Lowerline
- Lcd " Pomi" ; Chr(3) ; "dzy 4 a 8 "
- Wait 5
- Flaga = 0
- Goto Main
- End If
- If Porta.2 = 1 Then
- Bitwait Porta.2 , Reset
- Cls
- Lcd " D" ; Chr(0) ; "u" ; Chr(4) ; "o" ; Chr(1) ; Chr(2) ; " szyfru "
- Lowerline
- Lcd " Pomi" ; Chr(3) ; "dzy 4 a 8 "
- Wait 5
- Flaga = 0
- Goto Main
- End If
- If Porta.3 = 1 Then
- Bitwait Porta.3 , Reset
- Lcd "4"
- Dlugosc = 5
- Stan = 1
- Flaga = 0
- End If
- If Porta.4 = 1 Then
- Bitwait Porta.4 , Reset
- Lcd "5"
- Dlugosc = 6
- Stan = 1
- Flaga = 0
- End If
- If Porta.5 = 1 Then
- Bitwait Porta.5 , Reset
- Lcd "6"
- Dlugosc = 7
- Stan = 1
- Flaga = 0
- End If
- If Porta.6 = 1 Then
- Bitwait Porta.6 , Reset
- Lcd "7"
- Dlugosc = 8
- Stan = 1
- Flaga = 0
- End If
- If Porta.7 = 1 Then
- Bitwait Porta.7 , Reset
- Lcd "8"
- Dlugosc = 9
- Stan = 1
- Flaga = 0
- End If
- End Sub
- ' wprowadzanie szyfru
- Sub Wprowadz_szyfr1
- If Flaga = 0 Then
- Cls
- Lcd " Podaj szyfr"
- Lowerline
- Lcd "Szyfr: "
- Flaga = 1
- End If
- If I = Dlugosc Then
- ' sprawdzanie czy podany przez uzytkownika szyfr przypadkiem
- ' nie pokrywa się z tajnymszyfrem
- ' jakby się pokrywał to zmiana hasła byłaby niemożliwa
- ' jeden
- Dim Spr2 As Bit
- Dim Jedenkrotszyoddlugosc As Byte
- Jedenkrotszyoddlugosc = Dlugosc - 1
- Spr2 = 0
- For J = 1 To Jedenkrotszyoddlugosc
- If Tajnyszyfr(j) <> Szyfr(j) Then
- Spr2 = 1
- Exit For
- Else
- Spr2 = 0
- End If
- Next J
- For J = 1 To Jedenkrotszyoddlugosc
- 'Print "szyfr: " ; Szyfr(j) ; " tajny szyfr: " ; Tajnyszyfr(j)
- Next J
- 'Print "spr2: " ; Spr2
- ' dwa
- Dim Dlugosc2 As Byte
- Dlugosc2 = Jedenkrotszyoddlugosc * 2
- Dim J2 As Byte
- J2 = Dlugosc
- If Dlugosc2 <= 16 And Spr2 <> 0 Then
- Spr2 = 0
- For J = 1 To Jedenkrotszyoddlugosc
- If Tajnyszyfr(j2) <> Szyfr(j) Then
- Spr2 = 1
- Else
- Spr2 = 0
- End If
- Incr J2
- Next J
- End If
- J2 = Dlugosc
- For J = 1 To Jedenkrotszyoddlugosc
- 'Print "szyfr: " ; Szyfr(j) ; " tajny szyfr: " ; Tajnyszyfr(j2)
- Incr J2
- Next J
- 'Print "spr2: " ; Spr2
- ' trzy
- Dlugosc2 = Jedenkrotszyoddlugosc * 3
- J2 = Dlugosc * 2
- J2 = J2 - 1
- If Dlugosc2 <= 16 And Spr2 <> 0 Then
- Spr2 = 0
- For J = 1 To Jedenkrotszyoddlugosc
- If Tajnyszyfr(j2) <> Szyfr(j) Then
- Spr2 = 1
- Exit For
- Else
- Spr2 = 0
- End If
- Incr J2
- Next J
- End If
- J2 = Dlugosc * 2
- J2 = J2 - 1
- For J = 1 To Jedenkrotszyoddlugosc
- 'Print "szyfr: " ; Szyfr(j) ; " tajny szyfr: " ; Tajnyszyfr(j2)
- Incr J2
- Next J
- 'Print "spr2: " ; Spr2
- ' cztery
- Dlugosc2 = Jedenkrotszyoddlugosc * 4
- J2 = Dlugosc * 3
- J2 = J2 - 2
- If Dlugosc2 <= 16 And Spr2 <> 0 Then
- Spr2 = 0
- For J = 1 To Jedenkrotszyoddlugosc
- If Tajnyszyfr(j2) <> Szyfr(j) Then
- Spr2 = 1
- Exit For
- Else
- Spr2 = 0
- End If
- Incr J2
- Next J
- End If
- J2 = Dlugosc * 3
- J2 = J2 - 2
- For J = 1 To Jedenkrotszyoddlugosc
- 'Print "szyfr: " ; Szyfr(j) ; " tajny szyfr: " ; Tajnyszyfr(j2)
- Incr J2
- Next J
- 'Print "spr2: " ; Spr2
- ' jezeli nie pokrywają się to idz do potwierdzenia
- If Spr2 = 1 Then
- Stan = 2
- Flaga = 0
- I = 1
- Goto Main
- ' jezeli pokrywają się to wróć to ustawiania długosci
- Else
- Stan = 0
- Flaga = 0
- I = 1
- Wait 5
- Lcd " wprowadzono "
- Lowerline
- Lcd " zaj" ; Chr(3) ; "ty szyfr "
- Goto Main
- End If
- End If
- If Porta.0 = 1 Then
- Bitwait Porta.0 , Reset
- Lcd "#"
- Szyfr(i) = 1
- Incr I
- End If
- If Porta.1 = 1 Then
- Bitwait Porta.1 , Reset
- Lcd "#"
- Szyfr(i) = 2
- Incr I
- End If
- If Porta.2 = 1 Then
- Bitwait Porta.2 , Reset
- Lcd "#"
- Szyfr(i) = 3
- Incr I
- End If
- If Porta.3 = 1 Then
- Bitwait Porta.3 , Reset
- Lcd "#"
- Szyfr(i) = 4
- Incr I
- End If
- If Porta.4 = 1 Then
- Bitwait Porta.4 , Reset
- Lcd "#"
- Szyfr(i) = 5
- Incr I
- End If
- If Porta.5 = 1 Then
- Bitwait Porta.5 , Reset
- Lcd "#"
- Szyfr(i) = 6
- Incr I
- End If
- If Porta.6 = 1 Then
- Bitwait Porta.6 , Reset
- Lcd "#"
- Szyfr(i) = 7
- Incr I
- End If
- If Porta.7 = 1 Then
- Bitwait Porta.7 , Reset
- Lcd "#"
- Szyfr(i) = 8
- Incr I
- End If
- End Sub
- ' potwierdzanie szyfru
- Sub Wprowadz_szyfr2
- If Flaga = 0 Then
- Flaga = 1
- Cls
- Lcd " Potwierd" ; Chr(5) ; " szyfr"
- Lowerline
- Lcd "Szyfr: "
- Flaga = 1
- End If
- If I = Dlugosc Then
- Stan = 2
- Flaga = 0
- I = 1
- Call Sprawdz_szyfr
- End If
- If Porta.0 = 1 Then
- Bitwait Porta.0 , Reset
- Lcd "#"
- Szyfruser(i) = 1
- Incr I
- End If
- If Porta.1 = 1 Then
- Bitwait Porta.1 , Reset
- Lcd "#"
- Szyfruser(i) = 2
- Incr I
- End If
- If Porta.2 = 1 Then
- Bitwait Porta.2 , Reset
- Lcd "#"
- Szyfruser(i) = 3
- Incr I
- End If
- If Porta.3 = 1 Then
- Bitwait Porta.3 , Reset
- Lcd "#"
- Szyfruser(i) = 4
- Incr I
- End If
- If Porta.4 = 1 Then
- Bitwait Porta.4 , Reset
- Lcd "#"
- Szyfruser(i) = 5
- Incr I
- End If
- If Porta.5 = 1 Then
- Bitwait Porta.5 , Reset
- Lcd "#"
- Szyfruser(i) = 6
- Incr I
- End If
- If Porta.6 = 1 Then
- Bitwait Porta.6 , Reset
- Lcd "#"
- Szyfruser(i) = 7
- Incr I
- End If
- If Porta.7 = 1 Then
- Bitwait Porta.7 , Reset
- Lcd "#"
- Szyfruser(i) = 8
- Incr I
- End If
- End Sub
- ' sprawdzanie czy podany szyfr zgadza sie z jego potwierdzeniem
- Sub Sprawdz_szyfr
- Flaga = 0
- Jedenkrotszyoddlugosc = Dlugosc - 1
- For J = 1 To Jedenkrotszyoddlugosc
- If Szyfr(j) <> Szyfruser(j) Then
- Flaga = 0
- Exit For
- Else
- Flaga = 1
- End If
- 'Print "J=" ; J ; " " ; Szyfr(j) ; " " ; Szyfruser(j) ; " flaga= " ; Flaga
- Next J
- 'Print "flaga=" ; Flaga
- If Flaga = 0 Then
- Cls
- Lcd " Podano r" ; Chr(6) ; Chr(7) ; "ne "
- Lowerline
- Lcd " szyfry! "
- Wait 5
- Stan = 0
- Flaga = 0
- I = 1
- Else
- Cls
- Lcd " Szyfr zosta" ; Chr(0) ; " "
- Lowerline
- Lcd " ustawiony! "
- '------------------------------------------------------------------
- ' Tutaj zrobić zapis tablicy "Szyfr" do EPROM!!!'
- Tajnyszyfriterator = 8
- For I = 1 To 9
- Writeeeprom Szyfr(i) , Szyfr_pamiec(i)
- Next
- Writeeeprom Flaga_eprom , Wsk_flaga
- Writeeeprom Dlugosc , Wsk_dlugosc
- '-----------------------------------------------------------------
- Wait 5
- Stan = 3
- Flaga = 0
- I = 1
- End If
- End Sub
- ' domyslny tryb pracy (otwieranie sejfu jezeli szyfr jest poprawny)
- Sub Wprowadz_szyfr_otwieranie
- If Flaga = 0 Then
- Cls
- Lcd " Podaj szyfr"
- Lowerline
- Lcd "Szyfr: "
- Flaga = 1
- End If
- If I = Dlugosc Then
- Stan = 2
- Flaga = 0
- I = 1
- Call Sprawdz_szyfr_otwieranie
- End If
- If Porta.0 = 1 Then
- Bitwait Porta.0 , Reset
- Lcd "#"
- Szyfruser(i) = 1
- Incr I
- Tajnyszyfruser(tajnyszyfriterator) = 1
- Incr Tajnyszyfriterator
- End If
- If Porta.1 = 1 Then
- Bitwait Porta.1 , Reset
- Lcd "#"
- Szyfruser(i) = 2
- Incr I
- Tajnyszyfruser(tajnyszyfriterator) = 2
- Incr Tajnyszyfriterator
- End If
- If Porta.2 = 1 Then
- Bitwait Porta.2 , Reset
- Lcd "#"
- Szyfruser(i) = 3
- Incr I
- Tajnyszyfruser(tajnyszyfriterator) = 3
- Incr Tajnyszyfriterator
- End If
- If Porta.3 = 1 Then
- Bitwait Porta.3 , Reset
- Lcd "#"
- Szyfruser(i) = 4
- Incr I
- Tajnyszyfruser(tajnyszyfriterator) = 4
- Incr Tajnyszyfriterator
- End If
- If Porta.4 = 1 Then
- Bitwait Porta.4 , Reset
- Lcd "#"
- Szyfruser(i) = 5
- Incr I
- Tajnyszyfruser(tajnyszyfriterator) = 5
- Incr Tajnyszyfriterator
- End If
- If Porta.5 = 1 Then
- Bitwait Porta.5 , Reset
- Lcd "#"
- Szyfruser(i) = 6
- Incr I
- Tajnyszyfruser(tajnyszyfriterator) = 6
- Incr Tajnyszyfriterator
- End If
- If Porta.6 = 1 Then
- Bitwait Porta.6 , Reset
- Lcd "#"
- Szyfruser(i) = 7
- Incr I
- Tajnyszyfruser(tajnyszyfriterator) = 7
- Incr Tajnyszyfriterator
- End If
- If Porta.7 = 1 Then
- Bitwait Porta.7 , Reset
- Lcd "#"
- Szyfruser(i) = 8
- Incr I
- Tajnyszyfruser(tajnyszyfriterator) = 8
- Incr Tajnyszyfriterator
- End If
- End Sub
- ' sprawdzanie czy podany przez uzytkownika szyfr jest poprawny
- Sub Sprawdz_szyfr_otwieranie
- Flaga = 0
- Jedenkrotszyoddlugosc = Dlugosc - 1
- For J = 1 To Jedenkrotszyoddlugosc
- If Szyfr(j) <> Szyfruser(j) Then
- Flaga = 0
- Exit For
- Else
- Flaga = 1
- End If
- Next J
- If Flaga = 1 Then
- Cls
- Lcd " Otwarte :) "
- Wait 60
- Stan = 3
- Flaga = 0
- I = 1
- Tajnyszyfriterator = 1
- Else
- 'SEBA: doisac sprawdzanie czy tajny szyfr jest poprawnie wprowadzany jesli nie to losowac liczbe
- Dim Spr As Bit
- Dim Jedenmniej As Byte
- Jedenmniej = Tajnyszyfriterator - 1
- For J = 1 To Jedenmniej
- 'Print "tajnyszyfr: " ; Tajnyszyfr(j) ; " tajny szyfr user: " ; Tajnyszyfruser(j)
- If Tajnyszyfruser(j) <> Tajnyszyfr(j) Then
- Spr = 0
- Exit For
- Else
- Spr = 1
- End If
- Next J
- If Spr = 0 Then
- ' reset zawartosci tablicy tajnyszyfruser coby przez przypadek nie udało się zmienić szyfru
- Tajnyszyfruser(1) = 0
- Tajnyszyfruser(2) = 0
- Tajnyszyfruser(3) = 0
- Tajnyszyfruser(4) = 0
- Tajnyszyfruser(5) = 0
- Tajnyszyfruser(6) = 0
- Tajnyszyfruser(7) = 0
- Tajnyszyfruser(8) = 0
- Tajnyszyfruser(9) = 0
- Tajnyszyfruser(10) = 0
- Tajnyszyfruser(11) = 0
- Tajnyszyfruser(12) = 0
- Tajnyszyfruser(13) = 0
- Tajnyszyfruser(14) = 0
- Tajnyszyfruser(15) = 0
- Tajnyszyfruser(16) = 0
- Tajnyszyfriterator = 8
- End If
- Cls
- Lcd " Podano b" ; Chr(0) ; Chr(3) ; "dny "
- Lowerline
- Lcd " szyfr! "
- Wait 5
- Stan = 3
- Flaga = 0
- I = 1
- End If
- End Sub
- ' sprawdzanie czy ukryty szyfr jest poprawny
- Sub Zmiana_szyfru
- Tajnyszyfriterator = 8
- Flaga = 0
- 'Break
- For J = 1 To Pom2
- If Tajnyszyfr(j) <> Tajnyszyfruser(j) Then
- Flaga = 0
- Exit For
- Else
- Flaga = 1
- End If
- 'Print Tajnyszyfr(j) ; " " ; Tajnyszyfruser(j)
- Next J
- For J = 1 To Pom2
- 'Print "TajnySzyfr= " ; Tajnyszyfr(j) ; " " ; "TajnySzyfrUser= " ; Tajnyszyfruser(j)
- Next J
- If Flaga = 1 Then
- Cls
- Lcd " wprowadzono "
- Lowerline
- Lcd " tajny szyfr "
- Wait 4
- Flaga = 0
- I = 1
- Stan = 0
- ' reset tablicy tajnyszyfruser, aby przez przypadek nie udało się zmienić
- ' szyfry bez podania prawidłowego szyfru
- Tajnyszyfruser(1) = 0
- Tajnyszyfruser(2) = 0
- Tajnyszyfruser(3) = 0
- Tajnyszyfruser(4) = 0
- Tajnyszyfruser(5) = 0
- Tajnyszyfruser(6) = 0
- Tajnyszyfruser(7) = 0
- Tajnyszyfruser(8) = 0
- Tajnyszyfruser(9) = 0
- Tajnyszyfruser(10) = 0
- Tajnyszyfruser(11) = 0
- Tajnyszyfruser(12) = 0
- Tajnyszyfruser(13) = 0
- Tajnyszyfruser(14) = 0
- Tajnyszyfruser(15) = 0
- Tajnyszyfruser(16) = 0
- Tajnyszyfriterator = 8
- Goto Main
- End If
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement