Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Program zamka cyfrowego ATMEGA 8

wojlej 28 Paź 2009 21:18 2697 14
  • #1 28 Paź 2009 21:18
    wojlej
    Poziom 17  

    Witam.
    Zaprojektowałem schemat, wykonałem płytki, polutowałem, napisałem program na bazie innych i nie działa.

    Poniżej przedstawiam schemat:
    Zdjęcia należy wklejać tak:
    https://www.elektroda.pl/rtvforum/topic1229082.html
    Proszę poprawić.
    /prezeswal/.


    O to schematy

    Program zamka cyfrowego ATMEGA 8Program zamka cyfrowego ATMEGA 8
    Program:

    Code:
    '**********************************************************
    
    'Lejkowski Wojciech
    'Projekt zamka cyfrowego
    'Procesor ATmega 8
    'Kompilator BASCOM AVR
    '**********************************************************
    $regfile = "m8def.dat"
    $crystal = 8000000

    Dim Klawisz As Byte , Adm As Byte , Wynik As Byte
    Dim Licznik As Byte , Licznik1 As Byte
    Dim Kod1 As String * 10 , Kod0 As String * 10

    Portd = 255
    Portb = &B000100
    Licznik = 0
    Licznik1 = 0
    Kod0 = "[\]"
    Kod1 = ""
    Wynik = 0
    Adm = 0

    '**********************************************************
    'Petla glowna
    '**********************************************************

    Do
      Reset Pind.3
      Klawisz = 60
      Gosub Kolumna

      Reset Pind.4
      Klawisz = 70
      Gosub Kolumna

      Reset Pind.5
      Klawisz = 80
      Gosub Kolumna

      Reset Pind.6
      Klawisz = 90
      Gosub Kolumna
    Loop

    '**********************************************************
    'podprogram kolumna
    '**********************************************************
    Kolumna:

      If Pind.0 = 0 Then
         Pinb.4 = 1
         Klawisz = Klawisz + 1
         Waitms 20
         Bitwait Pind.0 , Set
         Waitms 100
         Pinb.4 = 0
         Gosub Kod
      End If

      If Pind.1 = 0 Then
         Pinb.4 = 1
         Klawisz = Klawisz + 2
         Waitms 20
         Bitwait Pind.1 , Set




         Waitms 100
         Pinb.4 = 0
         Gosub Kod
      End If

      If Pind.2 = 0 Then
         Pinb.4 = 1
         Klawisz = Klawisz + 3
         Waitms 20
         Bitwait Pind.2 , Set
         Waitms 100
         Pinb.4 = 0
         Gosub Kod
      End If

    Portd = 255

    Return

    '**********************************************************
    'podprogram kod
    '**********************************************************
    Kod:
      If Adm = 1 Then
        If Klawisz = 61 Then
           Adm = 0
           Wynik = 0
           Licznik1 = 0
           Gosub Kasuj
           Return
        End If
        Kod0 = Kod0 + Chr(klawisz)
        Incr Licznik1
        If Licznik1 = 10 Then
           Adm = 0
           Kod0 = ""
           Licznik1 = 0
           Gosub Kasuj
        End If
        Return
      End If

      If Klawisz = 61 Then
         Gosub Porownaj
         If Wynik = 1 Then
            Gosub Przekaznik
         End If
         Gosub Kasuj
         Return
      End If

      If Klawisz = 63 Then
         Gosub Porownaj
      End If

      If Klawisz = 63 Then
         If Wynik = 1 Then
            Adm = 1
            Kod0 = ""
            Licznik1 = 0
         End If
      Return
      End If

      Kod1 = Kod1 + Chr(klawisz)
      Incr Licznik

        If Licznik = 10 Then
           Gosub Kasuj
        End If
      Return

    '**********************************************************
    'podprogram porownaj
    '**********************************************************

    Porownaj:
      If Kod0 = Kod1 Then
         Wynik = 1
      End If
    Return

    '**********************************************************
    'podprogram kasuj
    '**********************************************************

    Kasuj:
      Kod1 = ""
      Licznik = 0
      Wynik = 0
    Return

    '**********************************************************
    'podprogram przekaznik
    '**********************************************************

    Przekaznik:
      If Pinb.3 = 0 Then
         Pinb.2 = Not Pinb.2
         Pinb.5 = Not Pinb.5
         Return
      End If

      Pinb.2 = 1
      Pinb.5 = 1
      Wait 4000
      Pinb.2 = 0
      Pinb.5 = 0
    Return


    Otóż, po naciśnięciu przycisku powinie piszczeć głośnik, jednak nic się nie dzieje. Po wpisaniu kodu 123* powinien zaskoczyc przekaźnik, nic. Do uP dochodzi napięcie, dokładnie 4,85V. Jak zewre emiter z kolektorem tranzystora głośnika to piszczy, tak samo z przekaźnikiem.

    Generalnie proszę o sprawdzenie programu, czy ma on prawo działać.

    Pozdrawiam i dzięki.

    EDIT:

    Sprawdziłem napięcie między bazą tranzystora a masą w momencie wciśnięcia przycisku. Żadne napięcie się nie pojawia, więc sugeruje, żę to może być wina programu.

    Proszę o sprawdzenie, Dziękuje z góry

    0 14
  • #2 29 Paź 2009 01:35
    gucio1
    Poziom 12  

    sprawdz

    Portb = &B000100 - ??
    czy ustawiłeś pb3 na wejście


    ta procedura to chyba niepotrzebna ?? później i tak ustawiasz bity na konkretne wartości
    Przekaznik:
    If Pinb.3 = 0 Then
    Pinb.2 = Not Pinb.2
    Pinb.5 = Not Pinb.5
    Return
    End If


    czy klawisze mają jakieś zasilanie? lub są zwarte do masy?

    0
  • #3 29 Paź 2009 18:56
    wojlej
    Poziom 17  

    Cytat:
    czy klawisze mają jakieś zasilanie? lub są zwarte do masy?


    Nie, to jest klawiatura martrycowa jak widać na schemacie, odczytuje wartości wiersz-kolumna.

    Cytat:
    czy ustawiłeś pb3 na wejście


    PB3 ma wartość 1, od zworki zależy tryb pracy? Czy to jest nie tak?

    0
  • #4 29 Paź 2009 19:05
    ATPAW
    Poziom 20  

    Dziwnie masz wykonany układ resetu.

    0
  • #5 29 Paź 2009 19:46
    gucio1
    Poziom 12  

    wolę sie upewnić czy liczysz bity od 0 czy od 1...
    bo wynika mi że ustawiony na wejście jest 3 licząc od 1

    Dodano po 36 [minuty]:

    nie widze zeby było sprawdzenie "klawisz=62" jest dwa razy 61 i 63
    poza tym - na początek pomiń kombinacje z kodem - zrób proste sprawdzenie i otwieranie zamka przyciskiem np.1 - i już - sprawdzisz czy procek daje sygnały na wyjście - a później kombinuj z klawiaturą.
    powodzenia

    0
  • #6 29 Paź 2009 23:59
    wader_669
    Poziom 28  

    nie chce mi sie sprawdzac kodu. Stawiam na to, ze nie przestawilem fusebitow

    0
  • #7 30 Paź 2009 14:27
    gucio1
    Poziom 12  

    jeszcze raz sie upre bo coś mi tu śmierdzi...

    pb2 pb4 pb5 wejście (zamek,głośnik dioda)

    pb3 wejście (nie wiem co to ...) sprawdzenie masy

    i jedziemy pb7 pb6 pb4 pb3 pb2 pb1 pb0
    ? ? 0 1 0 ? ?

    no to chyba powinno byc tak PB=B0001000 lub =8

    a Ty masz
    Portb = &B000100 - ??


    ja tu widze o jedno zero za mało ... :)

    0
  • #8 30 Paź 2009 20:00
    wojlej
    Poziom 17  

    OK, ale PORTB ma 6 wyjść. PB5, PB4, PB3, PB2, PB1, PB0

    Założenie jest takie, normalnie PB3 ma ustawione 1. Jeśli założona jest zworka to na wyjściu PB3 jest 0 i przekaźnik załącza się do momentu wpisania ponownie kodu, jeśli zworki nie ma to jest 1 i przekaźnik załącza się na 4s

    Cytat:
    Dziwnie masz wykonany układ Resetu


    Tam est tylko zworka która jest założona cały czas, no i szeregowo rezystor

    0
  • #9 30 Paź 2009 20:43
    xury
    Poziom 39  

    Nie widzę deklaracji pamięci na stosy, a program potrzebuje sporo pamięcina nie, bo co chwila jest skok do jakiegoś podprogramu. Nie chce mi sie go kopiowac i i emulować, ale założę sie, że za chwilę ujrzałbym na standardowych ustawieniach stosu taki fajny napis "...stack overlaped".

    0
  • #10 30 Paź 2009 21:00
    wojlej
    Poziom 17  

    W niedziele myślę, spróbuje wgrać prosty program do załączania przekaźnika za pomocą przycisku. To mój pierwszy projekt z uC. Xury? Czyli muszę zadeklarować wielkość stosu?

    gucio1? Czy dalej widzisz błąd w konfiguracji portów?

    Dzięki wszystkim i czekam dalej, w niedzielę myślę, dam znać.

    Pozdrawiam

    0
  • #11 30 Paź 2009 23:04
    xury
    Poziom 39  

    Musisz posprawdzać sobie ile potrzeba Ci pamięci na stosy. Każde polecenie gosub odkłada dwa bajty na stos. Pamięć ta jest zwracana przy wyjściu z podprogramu, ale jeśli z tego podprogramu uruchamiany jest następny podprogram, to nie dość że pamięć nie jest zwracana (bo nie ma prawidłowego wyjścia z podprogramu) to jeszcze następne dwa bajty są odkładane na stos. Jeśli z tego podpogramu uruchamiany jest następny itd. to można sobie łatwo wyobrazić że po pewnym czasie pamięć zadeklarowana na stos zapełni się i wejdzie na inny stos lub jeszcze dalej czyli na zmienne.
    Poczytaj sobie polskiego helpa do Bascoma - instrukcja STCHECK. Nie chodzi mi o samą instrukcję jak o opis działania stosów.
    Pisząc programy staraj się unikać zagnieżdżania podprogramów, a jeśli już musisz to staraj się to robić tak by po pewnym czasie zagnieżdżania prawidłowo opuszczały podprogramy. Pobieżnie analizując Twój program wygląda na prawidłowo wychodzący, ale stos można zwiększyć, bo i tak masz mało zmiennych więc można.
    Ajajaj teraz się dopatrzyłem:

    Code:
    Przekaznik: 
    
      If Pinb.3 = 0 Then
         Pinb.2 = Not Portb.2
         Pinb.5 = Not Portb.5
         Return
      End If

      Pinb.2 = 1
      Pinb.5 = 1
      Wait 4000
      Pinb.2 = 0


    Czyli próbujesz ustawiać piny - błąd bo powinno być:
    Code:
    Przekaznik: 
    
      If Pinb.3 = 0 Then
         Portb.2 = Not Pinb.2         'a nie lepiej Toggle Portb.2 ?
         Portb.5 = Not Pinb.5
         Return
      End If

      Portb.2 = 1
      Portb.5 = 1
      Wait 4000
      Portb.2 = 0


    I wszędzie tam gdzie próbujesz ustawiać np. Pinb.2 = 1 jest źle, bo za pomocą takiej konstrukcji można tylko odczytać stan końcówki.
    Aby ustawić trzeba użyć Portb.2 = 1.
    Pozmieniaj Pinx.x na Portx.x wszędzie tam gdzie chcesz ustawić stan logiczny. Pozostaw wszedzie tam gdzie odczytujesz czyli na przykład w instrukcjach IF

    A i jeszcze jedno - nie widzę konfiguracji wyjść. O ile po restarcie wszystkie końcówki są wejściami pływającymi to nie ani jedna nie jest wyjściem.
    Według schematu wyjściami są końcówki od PB2 do PB5 a nie widzę skonfigurowanych bitów DDRB.
    Jeszcze lepiej jakby też wejścia skonfigurować - no chyba że mogą być pływające.
    Jedyne co jest to:
    Code:
    Portd = 255 
    
    Portb = &B000100

    Co oznacza mniej więcej podciągnięcie wszystkich wejść portu D i co za tym idzie nie rozumiem jak ma działać klawiatura podpięta pod port D ? Wogóle nie rozumiem tej klawiatury. po naciśnięciu powinien się zmieniać stan na końcówkach ,ale jak skoro wszystkie są na jednakowym stanie? Wg mnie oprócz tego, że są zwierane ze sobą to powinny być także zwierane do masy.

    Druga linia to podciągnięcie PB.2 ale żada końcówka portu B nie jest wyjściem, bo nie zostały ustawione bity DDRB.

    Polecam skorzystanie z opcji config port lub config pin, bo są łatwiejsze niż ustawianie bitów w rejestrach DD
    I... jeszcze jedno.
    Budując klawiaturę matrycową to bym zrobił tak, że wiersze matrycy skonfigurowałbym jako wejścia, a kolumny jako wyjścia. Tak jak w książce Wiązani na stronie 230.
    Druga wersja to mniej więcej podobna do twojej z tym, że trzeba by określić tablicę konwersji stanu końcówek portu zwieranych z masą. Czyli np. stan niski na PD0 i PD7 to cyfra 1, stan niski na PD1 i PD7 to cyfra 2 itd.
    W tym momencie Twoja klawiatura nie ma prawa działać.

    0
  • #12 08 Lis 2009 15:22
    wojlej
    Poziom 17  

    Więc tak, przerobiłem schemat teraz wgralem program ze strony:
    http://www.mcselec.com/index.php?option=com_content&task=view&id=160&Itemid=57

    Wpisywanie kodu 5060 działa. Jednak nie można wpisać nowego. Po wpisaniu *506 już zaczyna wykonywać procedurę ERROR. Nie widzę w tym programie nawet żadnej procedury wpisania nowego kodu do zmiennej Mycode.

    Czy w tym programie powinienem móc wpisać nowy kod?

    0
  • Pomocny post
    #13 08 Lis 2009 15:52
    xury
    Poziom 39  

    To jest DEMO jak tam jest napisane. Musisz sobie zmodyfikować kod.

    0
  • #14 09 Lis 2009 20:59
    wojlej
    Poziom 17  

    Już powoli tracę cierpliwość. Zmieniłem oryginalny kod ale nie działa. Przypominam, że moim celem jest aby miał możliwość wpisania nowego kodu w taki sposób:

    *stary_kod#nowy_kod#

    No i w oryginalnym programie jest tak, że kod jest akceptowany po wpisaniu 4 cyfr, a ja chce, żeby trzeba było zatwierdzić kod #. Poniżej przedstawiam oryginalny kod, niżej zmodyfikowany:

    Code:
    $regfile = "m8def.dat"
    
    $crystal = 8000000

    Dim Keyread As Byte
    Dim Key As Byte
    Dim Code As Word
    Dim Mycode As Word
    Dim Digits As Byte
    Dim Point As Byte

    Ddrb = 255
    Portb = 0

    Relay Alias Portb.2
    Beep Alias Portb.4

    Config Kbd = Portd , Debounce = 40


    Mycode = 5060




    Do


        Set Beep
        Waitms 100
        Reset Beep
        Waitms 100

    Begin:
        Code = 0
        Digits = 0
        Point = 0


    Do
        Keyread = Getkbd()
            If Keyread <> 16 Then Gosub Gotkey
            Waitms 100
                If Digits = 4 Then
     If Code = Mycode Then
     Goto Opendoor
     Else
     Goto Error
     End If
                End If
    Loop

    Loop



    Gotkey:
        Ddrb = 255
        Set Beep
        Waitms 100
        Reset Beep
        Waitms 100

        Key = Lookup(keyread , Dta)

        Incr Digits
        Point = Digits + 6


        Code = Code * 10
        Code = Code + Key
    Return

    Dta:
        Data 12 , 9 , 6 , 3 , 0 , 8 , 5 , 2 , 11 , 7 , 4 , 1

    Error:


        Waitms 100
        Set Beep
        Wait 3
        Reset Beep
        Wait 20
        Goto Begin

    Ok:
        Waitms 100
        Set Beep
        Waitms 200
        Reset Beep
        Waitms 200
        Set Beep
        Waitms 200
        Reset Beep
        Return

    Opendoor:

        Gosub Ok


        Waitms 300
        Set Relay
        Wait 1
        Reset Relay
        Wait 1
        Goto Begin


    Zmodyfikowany:

    Code:
    $regfile = "m8def.dat"
    
    $crystal = 8000000

    Dim Keyread As Byte
    Dim Key As Byte
    Dim Code As Word
    Dim Mycode As Word
    Dim Digits As Byte
    Dim Point As Byte

    Ddrb = 255
    Portb = 0

    Relay Alias Portb.2
    Beep Alias Portb.4

    Config Kbd = Portd , Debounce = 40


    Mycode = 5060




    Do


        Set Beep
        Waitms 100
        Reset Beep
        Waitms 100

    Begin:
        Code = 0
        Digits = 0
        Point = 0


    Do
        Keyread = Getkbd()
            If Keyread <> 8 And Keyread <> 16 Then Gosub Gotkey
            Waitms 100
                If Keyread = 10 Then
     If Code = Mycode Then
     Goto Opendoor
     Else
     Goto Error
     End If
                End If
         If Keyread = 8 Then Gosub Newcode

    Loop

    Loop



    Gotkey:
        Ddrb = 255
        Set Beep
        Waitms 100
        Reset Beep
        Waitms 100

        Key = Lookup(keyread , Dta)

        Incr Digits
        Point = Digits + 6


        Code = Code * 10
        Code = Code + Key
    Return

    Dta:
        Data 12 , 9 , 6 , 3 , 0 , 8 , 5 , 2 , 11 , 7 , 4 , 1

    Error:


        Waitms 100
        Set Beep
        Wait 3
        Reset Beep
        Wait 20
        Goto Begin

    Ok:
        Waitms 100
        Set Beep
        Waitms 200
        Reset Beep
        Waitms 200
        Set Beep
        Waitms 200
        Reset Beep
        Return

    Opendoor:

        Gosub Ok


        Waitms 300
        Set Relay
        Wait 1
        Reset Relay
        Wait 1
        Goto Begin

    Newcode:

        Waitms 200
        Set Beep
        Waitms 200
        Reset Beep
        Waitms 500
        Set Beep
        Waitms 200
        Reset Beep

        Gosub Gotkey
        Waitms 100
        If Keyread = 10 Then
                If Code = Mycode Then
                Gosub Gotkey
                Waitms 100
                   If Keyread = 10 Then
                   Mycode = Code

        End If
                  Else
                   Gosub Error
                   End If
                   End If


    Moja klawiatura dla * zwraca wartość 8 a dla # wartość 10

    Proszę o pomoc. Dzięki

    EDIT:

    Dzisiaj siedzę dalej nad kodem, udało mi się zrobić akceptacje kodu po wciśnięciu kratki. Dokładnie po wciśnięciu kratki zmiennej D przypisuje wartość 1. Wtedy jest warunek, że jeśli D = 1 to program ma wykonać sprawdzenie kodu.

    Poniżej kod:
    Code:
    $regfile = "m8def.dat"
    
    $crystal = 8000000

    Dim Keyread As Byte
    Dim Key As Byte
    Dim Code As Word
    Dim Mycode As Word
    Dim Digits As Byte
    Dim Point As Byte
    Dim D As Byte

    Ddrb = 255
    Portb = 0

    Relay Alias Portb.2
    Beep Alias Portb.4

    Config Kbd = Portd , Debounce = 40


    Mycode = 5067




    Do


        Set Beep
        Waitms 100
        Reset Beep
        Waitms 100

    Begin:
        Code = 0
        Digits = 0
        Point = 0
        D = 0

    Do

        Keyread = Getkbd()
            If Keyread <> 16 Then Gosub Gotkey
            Waitms 100
                If D = 1 Then
     If Code = Mycode Then
     Goto Opendoor
     Else
     Goto Error
     End If
            End If




    Loop

    Loop



    Gotkey:
        Ddrb = 255
        Set Beep
        Waitms 100
        Reset Beep
        Waitms 100

        Key = Lookup(keyread , Dta)

        If Key = 12 Then
        D = 1
        Return
        Else
        Incr Digits
        Point = Digits + 6


        Code = Code * 10
        Code = Code + Key
        End If

    Return

    Dta:
        Data 12 , 9 , 6 , 3 , 0 , 8 , 5 , 2 , 11 , 7 , 4 , 1

    Error:


        Waitms 100
        Set Beep
        Wait 3
        Reset Beep
        Wait 20
        Set Beep
        Waitms 200
        Reset Beep
        Goto Begin

    Ok:
        Waitms 100
        Set Beep
        Waitms 200
        Reset Beep
        Waitms 200
        Set Beep
        Waitms 200
        Reset Beep
        Return

    Opendoor:

        Gosub Ok


        Waitms 300
        Set Relay
        Wait 1
        Reset Relay
        Wait 1
        Goto Begin


    Teraz myślę, jak rozwiązać możliwość wpisania nowego kodu. Może ma ktoś jakiś pomysł?

    Pozdrawiam


    Dodano:

    Działa, po ciężkich trudach udało mi się.
    Może trochę mało przejrzysty kod, ale działa. Jest to mój pierwszy projekt na uC, więc jestem z siebie zadowolony. Panu przedmówcy daje pomógł bo na prawdę pomógł.

    Przypominam. Pierwszy kod 1234 i akceptacja #.
    Ponowne wpisanie to *stary kod#nowy kod#

    Pozdrawiam

    Code:
    $regfile = "m8def.dat"
    
    $crystal = 8000000

    Dim Keyread As Byte
    Dim Key As Byte
    Dim Code As Word
    Dim Mycode As Word
    Dim Digits As Byte
    Dim Point As Byte
    Dim D As Byte
    Dim K As Byte
    Dim C As Byte
    Dim E As Byte

    Ddrb = 255
    Portb = 0

    Relay Alias Portb.2
    Beep Alias Portb.4
    Led Alias Portb.5

    Config Kbd = Portd , Debounce = 40


    Mycode = 1234




    Do


        Set Beep
        Waitms 100
        Reset Beep
        Waitms 100

    Begin:
        Code = 0
        Digits = 0
        Point = 0
        D = 0
        K = 0
        C = 0
        E = 0

    Do

        Keyread = Getkbd()

            If Keyread <> 16 Then Gosub Gotkey
            Waitms 100
                If K = 1 Then
                Goto Checkcode
                End If
                If D = 1 Then
     If Code = Mycode Then
     Goto Opendoor
     Else
     Goto Error
     End If
            End If




    Loop

    Loop



    Gotkey:
        Ddrb = 255
        Set Beep
        Waitms 100
        Reset Beep
        Waitms 100

        Key = Lookup(keyread , Dta)

        If Key = 12 Then
        D = 1
        Return

        Elseif Key = 11 Then
        K = 1
        Return

        Else
        Incr Digits
        Point = Digits + 6


        Code = Code * 10
        Code = Code + Key
        End If

    Return

    Oldcode:
        Ddrb = 255

        Set Beep
        Waitms 100
        Reset Beep
        Waitms 100

        Key = Lookup(keyread , Dta)

        If Key = 12 Then
        C = 1
        Return
        Else
        Incr Digits
        Point = Digits + 6


        Code = Code * 10
        Code = Code + Key
        End If

    Return

    New_code:
        Ddrb = 255

        Set Beep
        Waitms 100
        Reset Beep
        Waitms 100

        Key = Lookup(keyread , Dta)

        If Key = 12 Then
        E = 1
        Return
        Else
        Incr Digits
        Point = Digits + 6


        Code = Code * 10
        Code = Code + Key
        End If

    Return

    Dta:
        Data 12 , 9 , 6 , 3 , 0 , 8 , 5 , 2 , 11 , 7 , 4 , 1

    Error:


        Waitms 100
        Set Beep
        Wait 3
        Reset Beep
        Set Led
        Wait 20
        Set Beep
        Reset Led
        Waitms 200
        Reset Beep
        Goto Begin

    Ok:
        Waitms 100
        Set Beep
        Waitms 200
        Reset Beep
        Waitms 200
        Set Beep
        Waitms 200
        Reset Beep
        Return

    Opendoor:

        Gosub Ok


        Waitms 300
        Set Relay
        Set Led
        Wait 5
        Reset Relay
        Reset Led
        Wait 1
        Goto Begin


    Checkcode:

       Waitms 100
       Set Beep
       Waitms 200
       Reset Beep
       Waitms 50
       Set Beep
       Waitms 200
       Reset Beep
       Waitms 50
       Set Beep
       Waitms 200
       Reset Beep
       C = 0
       Code = 0
       Digits = 0
       Point = 0
    Do

        Keyread = Getkbd()
       If Keyread <> 16 Then Gosub Oldcode
          Waitms 100
                If C = 1 Then
                   If Code = Mycode Then

                         E = 0
                         Code = 0
                         Digits = 0
                         Point = 0
                         Do
                         Keyread = Getkbd()
                         If Keyread <> 16 Then Gosub New_code
                            Waitms 100
                               If E = 1 Then
                               Mycode = Code
                               Goto Begin
                         End If
                         Loop



                   Else
                   Goto Error
                   End If

       End If
    Loop

    0
  • #15 11 Lis 2009 23:26
    xury
    Poziom 39  

    Cieszę się, że się udało. Nie miałem możliwości wcześniej tu zajrzeć.

    0