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

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...

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.