$eeprom '************************************************************************ Niewaznybajt: 'zeby nie zapisywal do pierwszej komorki danych Data 255 'moze ulec skasowaniu po resecie procesora Kod1: Data 1 , 2 , 3 , 4 Kod2: Data 2 , 2 , 3 , 4 Kod3: Data 3 , 2 , 3 , 4 Kod4: Data 4 , 2 , 3 , 4 '************************************************************************ $data '************************************************************************ $regfile = "attiny2313.dat" $crystal = 4000000 Config Portb = &B11110001 Portb = &B1111111 Config Portd = &B1111111 Portd = &B1111111 '************************************************************************ Dim Cyfra As Byte Dim Licznik As Byte Dim Kod(4) As Byte Dim Kodwyzerowany As Bit Dim Kodpoprawny As Bit Dim Kodp1 As Bit , Kodp2 As Bit , Kodp3 As Bit , Kodp4 As Bit Dim Wb As Byte Dim N As Byte 'uniwersalna zmienna pomocnicza Dim Pierwadres As Byte , Adres As Byte Dim Urrejestr As Bit '************************************************************************ Reset Portb.7 Set Portb.4 'jezeli podczas wlaczenia napiecia wcisniete M C 2 5 to rejestracja '////////////////// If Pinb.3 = 1 And Pinb.2 = 0 And Pinb.1 = 1 Then Reset Portb.6 Set Portb.7 If Pinb.3 = 1 And Pinb.2 = 0 And Pinb.1 = 1 Then Reset Portb.5 Set Portb.6 If Pinb.3 = 1 And Pinb.2 = 1 And Pinb.1 = 1 Then Reset Portb.4 Set Portb.5 If Pinb.3 = 0 And Pinb.2 = 1 And Pinb.1 = 0 Then Gosub Rejestracja End If End If End If End If Gosub Migled Gosub Migled Gosub Migled Licznik = 1 Gosub Zerujkod '************************************************************************ Do Gosub Klawiatura If Cyfra < 12 Then 'jezeli jeden z klawiszy wcisniety '////////////////// If Cyfra < 10 Then 'klawisze liczbowe If Licznik < 5 Then Kod(licznik) = Cyfra Reset Kodwyzerowany Else Gosub Zerujkod Licznik = 5 'nigdy ni wyjdzie poza tego ifa jezeli bedzie wiecej niz 4 klikniecia End If Incr Licznik End If '////////////////// If Cyfra = 10 Then 'klawisz M If Kodwyzerowany = 1 Then Gosub Migled2 Licznik = 1 Gosub Zerujkod Else Gosub Sprawdzkod End If End If '////////////////// If Cyfra = 11 Then 'klawisz C Licznik = 1 Gosub Zerujkod End If '////////////////// End If Loop End '************************************************************************ Klawiatura: Cyfra = 255 Reset Portb.7 Set Portb.4 'ustaw 0 na wierszu 1(1,2,3) '////////////////// If Pinb.3 = 0 Then Cyfra = 1 Gosub Migled While Pinb.3 = 0 Wend End If If Pinb.2 = 0 Then Cyfra = 2 Gosub Migled While Pinb.2 = 0 Wend End If If Pinb.1 = 0 Then Cyfra = 3 Gosub Migled While Pinb.1 = 0 Wend End If '////////////////// Reset Portb.6 Set Portb.7 'ustaw 0 na wierszu 2(4,5,6) '////////////////// If Pinb.3 = 0 Then Cyfra = 4 Gosub Migled While Pinb.3 = 0 Wend End If If Pinb.2 = 0 Then Cyfra = 5 Gosub Migled While Pinb.2 = 0 Wend End If If Pinb.1 = 0 Then Cyfra = 6 Gosub Migled While Pinb.1 = 0 Wend End If '////////////////// Reset Portb.5 Set Portb.6 'ustaw 0 na wierszu 3(7,8,9) '////////////////// If Pinb.3 = 0 Then Cyfra = 7 Gosub Migled While Pinb.3 = 0 Wend End If If Pinb.2 = 0 Then Cyfra = 8 Gosub Migled While Pinb.2 = 0 Wend End If If Pinb.1 = 0 Then Cyfra = 9 Gosub Migled While Pinb.1 = 0 Wend End If '////////////////// Reset Portb.4 Set Portb.5 'ustaw 0 na wierszu 4(M,0,C) '////////////////// If Pinb.3 = 0 Then 'M Cyfra = 10 'Gosub Migled 'nie migaj po enter While Pinb.3 = 0 Wend End If If Pinb.2 = 0 Then Cyfra = 0 Gosub Migled While Pinb.2 = 0 Wend End If If Pinb.1 = 0 Then Cyfra = 11 'C Gosub Migled While Pinb.1 = 0 Wend End If '////////////////// Waitms 10 Return '************************************************************************ Zerujkod: Kod(1) = 100 Kod(2) = 100 Kod(3) = 100 Kod(4) = 100 Set Kodwyzerowany Return '************************************************************************ Testujkod: Set Kodpoprawny For N = 1 To 4 Adres = N + Pierwadres 'dodaje do adresu przesuniecie zeby mozna bylo porownywac wpisana wartosc z 1 2 3 i 4 kodem Readeeprom Wb , Adres If Wb <> Kod(n) Then Reset Kodpoprawny End If Next N Return '************************************************************************ Sprawdzkod: Pierwadres = 0 'porownuje z 1 kodem w pamieci Gosub Testujkod Kodp1 = Kodpoprawny 'jezeli wprowadzony kod jest rowny 1 kodowi to = 1 Pierwadres = 4 'porownuje z 2 kodem w pamieci Gosub Testujkod Kodp2 = Kodpoprawny 'jezeli wprowadzony kod jest rowny 2 kodowi Pierwadres = 8 'porownuje z 3 kodem w pamieci Gosub Testujkod Kodp3 = Kodpoprawny 'jezeli wprowadzony kod jest rowny 3 kodowi Pierwadres = 12 'porownuje z 4 kodem w pamieci Gosub Testujkod Kodp4 = Kodpoprawny 'jezeli wprowadzony kod jest rowny 4 kodowi If Kodp1 = 1 Or Kodp2 = 1 Or Kodp3 = 1 Or Kodp4 = 1 Then Gosub Migled Gosub Migled Gosub Migled If Kodp1 = 1 Then Gosub Uruchom1 End If If Kodp2 = 1 Then Gosub Uruchom2 End If If Kodp3 = 1 Then Gosub Uruchom3 End If If Kodp4 = 1 Then Gosub Uruchom4 End If Licznik = 1 Gosub Zerujkod Else Gosub Migled2 End If Return '************************************************************************ Rejestracja: Gosub Migled2 Waitms 500 Gosub Migled2 Waitms 500 Gosub Migled2 Licznik = 1 Do Gosub Klawiatura If Cyfra < 12 Then 'jezeli jeden z klawiszy wcisniety '////////////////// If Cyfra > 9 Then Cyfra = 100 Writeeeprom Cyfra , Licznik N = Licznik Mod 4 If N = 0 Then Gosub Migled2 Incr Licznik If Licznik = 17 Then Exit Do '////////////////// End If Loop 'zapisywanie do eeprom Return '************************************************************************ Migled: Reset Portb.0 Waitms 100 Set Portb.0 Waitms 100 Return '************************************************************************ Migled2: Reset Portb.0 Waitms 1000 Set Portb.0 'Waitms 1000 Return '************************************************************************ Uruchom1: Reset Portd.2 Waitms 800 Set Portd.2 'Waitms 400 Return '************************************************************************ Uruchom2: Reset Portd.3 Waitms 800 Set Portd.3 'Waitms 400 Return '************************************************************************ Uruchom3: Reset Portd.4 Waitms 800 Set Portd.4 'Waitms 400 Return '************************************************************************ Uruchom4: Reset Portd.5 Waitms 800 Set Portd.5 'Waitms 400 Return '************************************************************************