Skocz do zawartości

Problemy z kodem BASCOM AVR


Mateusz

Pomocna odpowiedź

Witam. Mam mały problem z kodem napisanym w BASIC. Powinien działać tak ze 3 diody migają na zmianę z opóźnieniem 40ms.

Po naciśnięciu pierwszego switcha zaczynają migać wolniej z prędkością 500ms. Ale chcę żeby ten stan była zapamiętany nawet po puszczeniu switcha.

No i po naciśnięciu 2-go switcha to samo tylko ze diody świecą szybciej 20ms.

Oto kod:

$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
  Toggle Portd.1
  Waitms 40
  Toggle Portd.1
  Toggle Portd.0
  Waitms 40
  Toggle Portd.0
  Toggle Portd.2
  Waitms 40
  Toggle Portd.2
                                                              'jeżeli przycisk jeden wciśnięty
If Pinb.1 = 0 Then                                          ' zapamiętaj stan przyciska jako 0
  Portb.1 = 0
                                                            ' dopóki przycisk 0 ma wartość 0 to pętla
     While Pinb.1 = 0


     Toggle Portd.1
     Waitms 500
     Toggle Portd.1
     Toggle Portd.0
     Waitms 500
     Toggle Portd.0
     Toggle Portd.2
     Waitms 500
     Toggle Portd.2
                                                       'jeżeli przycisk 0 wciśnięty to ustaw jego stan na 1
     If Pinb.1 = 1 Then
        Portb.1 = 1
     End If

     Wend


End If

If Pinb.0 = 0 Then
  Portb.0 = 0

     While Pinb.0 = 0

     Toggle Portd.1
     Waitms 20
     Toggle Portd.1
     Toggle Portd.0
     Waitms 20
     Toggle Portd.0
     Toggle Portd.2
     Waitms 20
     Toggle Portd.2

     If Pinb.0 = 1 Then
        Portb.0 = 1
     End If


     Wend


End If





Loop
                                                     'koniec pętli

End
Link do komentarza
Share on other sites

$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

Dim X As Bit
Do
  Toggle Portd.1
  Waitms 40
  Toggle Portd.1
  Toggle Portd.0
  Waitms 40
  Toggle Portd.0
  Toggle Portd.2
  Waitms 40
  Toggle Portd.2
                                                              'jeżeli przycisk jeden wciśnięty
If Pinb.1 = 0 Then
  X = 1                                                    ' zapamiętaj stan przyciska jako 0
  While X = 1                                              ' dopóki przycisk 0 ma wartość 0 to pętla

     Toggle Portd.1
     Waitms 500
     Toggle Portd.1

     If Pinb.0 = 0 Then
     X = 0
     End If

     Toggle Portd.0
     Waitms 500
     Toggle Portd.0

     If Pinb.0 = 0 Then
     X = 0
     End If

     Toggle Portd.2
     Waitms 500
     Toggle Portd.2

     If Pinb.0 = 0 Then
     X = 0
     End If
                                                       'jeżeli przycisk 0 wciśnięty to ustaw jego stan na 1
  Wend
End If


If Pinb.0 = 0 Then
  X = 1
  While X = 1

     Toggle Portd.1
     Waitms 20
     Toggle Portd.1

     If Pinb.1 = 0 Then
     X = 0
     End If

     Toggle Portd.0
     Waitms 20
     Toggle Portd.0

     If Pinb.1 = 0 Then
     X = 0
     End If

     Toggle Portd.2
     Waitms 20
     Toggle Portd.2

     If Pinb.1 = 0 Then
     X = 0
     End If


  Wend
End If





Loop
                                                     'koniec pętli

End

zobacz czy działa tak jakbyś sobie tego życzył 😃

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.