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

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.