logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega8 - problem z napisaniem funkcji

michal54_87 23 Wrz 2016 21:22 1422 9
  • #1 15950725
    michal54_87
    Poziom 17  
    Witam nie moge sobie poradzic z napisaniem programu. Mam napisane zapalanie przyciskami ale nie moge sobie poradzic w napisaniu funkcji :
    -mam 4 przyciski i zapalaja 5 diod
    -jak przytrzymam 1-przycisk 2sek to maja sie zapalic wszystkie diody
    -jak przytrzymam przycisk 4- 2 sek to ma sie zapalic 1 dioda
    pomoze mi ktos?
    $regfile = "m8def.dat" 'informuje kompilator o pliku dyrektyw mikrokontrolera
    $crystal = 1000000 'informuje kompilator o częst. oscylatora taktującego mikrokontroler
    Config Portd = Input 'port D jako wejściowy
    Config Portc = Output 'port C jako wyjściowy
    Config Debounce = 100
    P1 Alias Portc.0 'przypisanie linii PC0 nazwy P1
    P2 Alias Portc.1 'przypisanie linii PC1 nazwy P2
    P3 Alias Portc.2 'przypisanie linii PC2 nazwy P3
    P4 Alias Portc.3 'przypisanie linii PC3 nazwy P4
    P5 Alias Portc.4 'przypisanie linii PC4 nazwy P5
    S1 Alias Pind. 0 'przypisanie linii PD0 nazwy S1
    S2 Alias Pind. 1 'przypisanie linii PD1 nazwy S2
    S3 Alias Pind. 2 'przypisanie linii PD2 nazwy S3
    S4 Alias Pind. 3 'przypisanie linii PD3 nazwy S4

    Portc = &B00000000
    Portd = &B11111111

    Do
    Debounce Pind.0 , 0 , Out1 , Sub
    Debounce Pind.1 , 0 , Out2 , Sub
    Debounce Pind.2 , 0 , Out3 , Sub
    Debounce Pind.3 , 0 , Out4 , Sub
    Loop

    End

    Out1:

    Toggle Portc.0
    Waitms 500
    If Pinc.0 = 0 Then
    Waitms 100
    End If
    If Pinc.0 = 0 Then
    Portc = &B11111111
    End If
    Waitms 500

    Return

    Out2:

    Toggle Portc.1
    Waitms 500

    Return

    Out3:

    Toggle Portc.2
    Waitms 500

    Return

    Out4:

    Toggle Portc.3
    Toggle Portc.4
    Waitms 500

    Return
  • #2 15951439
    Konto nie istnieje
    Konto nie istnieje  
  • #3 15951462
    excray
    Poziom 41  
    Nieźle. Ale jednoczesne wciśnięcie dwóch przycisków spowoduje zamieszanie. Ale łatwo to kolega może poprawić trochę przestawiając szyk kodu.
  • #4 15951471
    Konto nie istnieje
    Konto nie istnieje  
  • #5 15951497
    excray
    Poziom 41  
    Miałem na myśli, żebyś warunek " If S2 = 0 Then.." przeniósł w "else if" pierwszego. Tworzy się wtedy konstrukcja: testuj pierwszy, jak nie to testuj drugi, a jak też nie to zeruj licznik.
  • #6 15955136
    michal54_87
    Poziom 17  
    Dzięki za napisanie lecz nic się nie dzieje z układem.
  • #7 15955187
    Konto nie istnieje
    Konto nie istnieje  
  • #8 15956665
    michal54_87
    Poziom 17  
    Sorki ale nie umiem programować , coś nie tak działa jak chciałem pomożesz mi na prv?
  • #9 15970761
    michal54_87
    Poziom 17  
    Czy jest ktoś, kto by mi pomógł ?
  • #10 15970778
    excray
    Poziom 41  
    Pomógł w czym? Przecież kolega @niveasoft napisał już gotowca.
REKLAMA