logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.
REKLAMA
  • #1 6377331
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #2 6377340
    snow
    Poziom 31  
    Wykorzystaj pin Reset procesora to nie będziesz musiał nic dopisywać.
  • REKLAMA
  • #3 6377433
    bobekdt00
    Poziom 14  
    Albo poczytaj o obsłudze przerwań
  • Pomocny post
    #4 6377437
    dawid512
    Poziom 32  
    Wykorzystaj podprogram w którym umieścisz swoje instrukcje a na jego końcu umieść bitwait a potem tylko ponownie wywołaj ten podprogram.
  • #5 6377552
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #6 6378131
    _Robak_
    Poziom 33  
    Masa przycisk opornik nozka ;) Ustaw tylko pull up na tym pinie :)
  • #7 6378517
    dawid512
    Poziom 32  
    Jak pull-up to rezystora nie trzeba :)
  • REKLAMA
  • #8 6378664
    _Robak_
    Poziom 33  
    Heh, zawsze wychodza braki z elektroniki ;) Jako ze pull up musi byc to masa->przycisk->nozka->pull up ;)
    Edit: po blizszym zastanowieniu jest to raczej oczywiste ze nie musi byc rezystorka :)
  • #9 6379382
    janbernat
    Poziom 38  
    g_06-procesor zawsze coś robi dopóki ma zasilanie i zegar.
    Nawet jak czeka na bitwait to kręci się w kółko w pustej pętli.
    Do tego trzeba się przyzwyczaić że to nie człowiek który odpoczywa-to musi coś robić.
  • #10 6386348
    fiskusmati
    Użytkownik obserwowany
    Możesz dac takie coś:

    Na samym poczatku programu (jeszcze przed $regfile = "m8def.dat", $crystal = 8000000 ) wpisz tak pooprostu (pamietaj o drukropku), potem podlączasz przycisk jedną nózke do jakiegos pinu atmegi (wolnego portu) u mnie będzie Pin 13 Atmegi8 (PD7), druga nozka przycisku do rezystora 470 Ohma i po tym rezystorze do masy.

    Teraz w programie dodajesz konfigurację:

    
    Config Pind.7 = Input
    
    S1 Alias Pind.7
    
    Set Portd.7
    


    A potem dodajesz funkcje warunkową (po polsku: Jeżeli Przycisk jest nacisnięty idź do Początek [czyli program uruchomi się od nowa])

    To jest ta funkcja warunkowa
    
    Do
    
    If S1 = 0 Then
    Gosub Poczatek
    End if
    
    Loop
    


    If...Then To jednym słowem warunek :-)

    S1 - dlatego, że tak nazwaliśmy nasz przycisk (od Switch 1) A nazwe jego zmienilismy wpisując domyślną nazwę Pind.7 zmieniając ja na S1 ([nowa nazwa] Alias [stara nazwa])

    A dlaczego S1 = 0 ? Ponieważ tak to jest że 0 to taki stan w ktorym włącznik jest włączony, Jeżeli zamiast 0 dasz 1 to program zadziała wtedy kiedy przycisk będzie puszczony.


    To co jest Do...Loop (Pętla) to znaczy że ten programik (ten if...then) będzie sie ciągle odtwarzał dopóki nie nacisniesz, a jak nacisniesz to pojdzie na początek programu.

    Gosub to funkcja bascoma, za nią podajesz gdzie ma isc np Gosub Test1 i w programie umieszczasz napis Test1: (z dwukropkiem) i wtedy wautomatyzni przeskoczy i zacznie działac od tego miejsca.

    Myśle że duzo pomogłem, u mnie działa znakomicie.
  • #11 6387144
    LED5W
    Poziom 34  
    Wydaje mi się, że powinna tu być użyta instrukcja GOTO zamiast GOSUB. ;)
    GOSUB bez RETURN może przepełnić stos. (Jeżeli coś pokręciłem to proszę mnie uświadomić).

    Dodano po 2 [minuty]:

    Ale nie prościej zrobić tak:
    do
    ...
    loop until przycisk=0

    (?)
  • #12 6388257
    wader_669
    Poziom 28  
    Tssss hahaha
    Dawid512 juz na samym poczatku podal rozwiazanie.

    
    Decalre sub czekaj
    
    do
    
    call czekaj
    loop
    
    sub czekaj
    bitwait s1, reset
    waitms 45
    bitwait s1, set
    end sub
    


    Dodano po 52 [sekundy]:

    takie to trudne :D
REKLAMA