Skocz do zawartości

[AVR] zapalanie diody i gaszenie tym samym przyciskiem


Pomocna odpowiedź

Napisano

wgrałem do atmega 16 parę programów na zapalanie diody LED i gaszenie jednym przyciskiem (przyciśnij zaświeć przyciśnij zgaś)z forum,lecz zawsze buły jakieś problemy czy któryś z kolegów posiada sprawdzony i pewny program?

$regfile = "attiny2313.dat"                                 'model proca
   $crystal = 1000000                                          'taktowanie

   Config Portb = Input                                        'port b  jako wejścia
           Portb = &B11111111                                  'stan spoczynkowy-0
   Config Portd = Output
           Portd = &B10111111                                  'końcówki PD0 do PD3 jako wyjścia, a od PD4 do PD6 końcówki jako wejścia


   Do

    waitms 30
    If Pinb.1 = 0 And Portd.0 = 0 Then                               'jeżeli przycisk 1 są wciśnięte
      Toggle Portd.0                                                          'zmień stan wyprowadzenia
    End If
   While Pinb.1 = 0
   Wend
    waitms 30
    If Pinb.1 = 0 And Portd.0 = 1 Then                                   'jeżeli przycisk 1 są wciśnięte
      Portd.0 = 0                                                                    'zmień stan wyprowadzenia
    End If
   While Pinb.1 = 0
   Wend

   Loop
                                                         'koniec pętli

   End

[ Dodano: 19 Sty 10 10:11 ]

lopez321, $regfile = "attiny2313.dat" 'model proca

$crystal = 1000000 'taktowanie

Config Portb = Input 'port b jako wejścia

Portb = &B11111111 'stan spoczynkowy-0

Config Portd = Output

Portd = &B10111111 'końcówki PD0 do PD3 jako wyjścia, a od PD4 do PD6 końcówki jako wejścia

Do

waitms 30

If Pinb.1 = 0 And Portd.0 = 0 Then 'jeżeli przycisk 1 są wciśnięte

Toggle Portd.0 'zmień stan wyprowadzenia

End If

While Pinb.1 = 0

Wend

waitms 30

If Pinb.1 = 0 And Portd.0 = 1 Then 'jeżeli przycisk 1 są wciśnięte

Portd.0 = 0 'zmień stan wyprowadzenia

End If

While Pinb.1 = 0

Wend

Loop

'koniec pętli

End

attiny2313 nie pasuje - ty masz m16, nie rozumiem tej linijki:

If Pinb.1 = 0 And Portd.0 = 0

Wystarczy samo

if pinb.1 = 0 then
toggle Portd.0
endif

Ewentualnie jeszcze można bawić się z debounce.

Czy tak miało to wyglądać?

$regfile = "m16def.dat"

$crystal = 16000000

Config Portb = Input

Portb = &B11111111

Config Portd = Output

Portd = &B11111111

Do

If Pinb.0 = 0 Then

Toggle Portd.0

End If

Loop

LED nie zawsze działa na przycisk.

Config Portd = Output
Portd = &B10111111 'końcówki PD0 do PD3 jako wyjścia, a od PD4 do PD6 końcówki jako wejścia 

Tu masz wszystkie jako wyjścia ustawione więc taki mały błąd w komentarzu;p

I jak bym jeszcze ustawił wszystkie porty na 0. Ale to już zależy jak masz podłączone przełączniki. Najlepiej jak masz daj schemat ;]

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...