Skocz do zawartości

[Bascom] Sterowanie rc5


bluehais

Pomocna odpowiedź

Witam, mam pytanie odnośnie tego programu (nie mojego autorstwa). Wszystko jasne tylko nie rozumiem tego fragmentu:

 Command = Command And &B01111111

0111 1111 to 1+2+4+8+16+32+64=127 dec . Skąd wiadomo że po pomnożeniu tej wartości przez wartość zmiennej Command pobranej z pilota da wynik np. 2 ,8,6,4 itd. Są do tego jakieś tablice?

Program:

$regfile = "m8def.DAT"                                   
$crystal = 8000000                                          

Config Rc5 = Pinb.0                                         'ustawienie pinb.0 jako odbiór sygnału IR

Dim Adres As Byte , Command As Byte                         'zmienne
Dim Speed As Integer

Enable Interrupts                                           'włączenie przerwań

Config Portc = Output                                       'port c  jako wyjścia
      Portc = &B00000000                                   'wszędzie stan spoczynkowy-0

'-------konfiguracja timera do generowania sygnału PWM warunkującego prędkość pojazdu
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1


Speed = 255                                                 'prędkośc na maksa



Do                                                          'poczatek programu

Getrc5(adres , Command)                                     'pobierz adres i komende z pilota

  Command = Command And &B01111111



Waitms 50
                        'warunki i odwołania do podprogramów

  If Command = 2 Then
     Gosub Przod
  End If

  If Command = 8 Then
     Gosub Tyl
  End If

  If Command = 4 Then
     Gosub Lewo
  End If

  If Command = 6 Then
     Gosub Prawo
  End If
     'regulacja prędkości. Dostosuj wartosci komend do swojego pilota!
  If Command = 32 Then
     Incr Speed
     If Speed = 251 Then
        Speed = 250
     End If
  End If

  If Command = 33 Then
     Decr Speed
     If Speed = 1 Then
        Speed = 2
     End If

  End If
     'koniec regulacji prędkości

 If Command = 127 Then Pwm1a = 0                           'komenda 127 podawana jest kiedy
 If Command = 127 Then Pwm1b = 0                           'procesor nie odbiera sygnału z nadajnika
                                                            'przy tej komendzie stój!

 Loop                                                      'koniec pętli

End                                                         '---------------------------------------------------

                                                          'podprogramy:

Przod:
Do


   Waitms 50
   ' gasienica prawa
   Pwm1a = Speed
   Set Portc.0
   Reset Portc.1
   ' gasienica lewa
   Pwm1b = Speed
   Set Portc.2
   Reset Portc.3

  If Command = 2 Then Return

Loop
End


Tyl:
Do

   Waitms 50
   ' gasienica prawa
   Pwm1a = Speed
   Set Portc.1
   Reset Portc.0
   ' gasienica lewa
   Pwm1b = Speed
   Set Portc.3
   Reset Portc.2

  If Command = 8 Then Return

Loop
End


Lewo:
Do

    Waitms 50
   ' gasienica prawa
   Pwm1a = Speed
   Set Portc.0
   Reset Portc.1
   ' gasienica lewa
   Pwm1b = Speed
   Set Portc.3
   Reset Portc.2

  If Command = 4 Then Return

Loop
End

Prawo:
   Waitms 50
   ' gasienica prawa
   Pwm1a = Speed
   Set Portc.1
   Reset Portc.0
   ' gasienica lewa
   Pwm1b = Speed
   Set Portc.2
   Reset Portc.3

  If Command = 6 Then Return
Return
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.