Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Bascom] - Konwersja wejść portu na liczbe binarną

29 Kwi 2016 07:48 963 7
  • Poziom 16  
    Witam,

    Do wejść Portu mam podłączone 5 odbiorników zbliżeniowych. Odczytują zagłębienia w tarczy kodowej. Niestety nie są one uporządkowane tzn bit0 na tarczy jest przypisany do PORTx.4 a bit1 do PORTx.2 itd
    Próbowałem wcisnąć do zmiennej typu string *6 odczyt z poszczególnych czujników na zasadzie
    I = $bit5; $bit4; $bit3.... a później przekształcić ze stringa do bin funkcja var = Binval( s). Niestety coś idzie nie po mojej myśli i wyskakują dziwne rzeczy
    Wiem jak to zrobić na ifach i dodawać poszczególne bity do siebie ale czy jest jakis szybszy sposób do konwersji stanów całego portu do liczy ?
  • Poziom 22  
    levy^ napisał:
    Witam,

    Do wejść Portu mam podłączone 5 odbiorników zbliżeniowych. Odczytują zagłębienia w tarczy kodowej. Niestety nie są one uporządkowane tzn bit0 na tarczy jest przypisany do PORTx.4 a bit1 do PORTx.2 itd
    Próbowałem wcisnąć do zmiennej typu string *6 odczyt z poszczególnych czujników na zasadzie
    I = $bit5; $bit4; $bit3.... a później przekształcić ze stringa do bin funkcja var = Binval( s). Niestety coś idzie nie po mojej myśli i wyskakują dziwne rzeczy
    Wiem jak to zrobić na ifach i dodawać poszczególne bity do siebie ale czy jest jakis szybszy sposób do konwersji stanów całego portu do liczy ?


    zmienna = PORTx
    i pozamiatane.
  • Poziom 15  
    Cytat:
    Niestety nie są one uporządkowane tzn bit0 na tarczy jest przypisany do PORTx.4 a bit1 do PORTx.2 itd

    Nie ma to znaczenia.
    Dla przykładu gdy stan wejść całego poru jest równy b00011111 to liczba dla tej wartości binarnej wynosi 248.
    Począwszy od pinu numer 0.
    Czy dla Ciebie istotne są wyłącznie piny np. 4 do 0 ?, czy też piny 7 do 5 są nie używane ?
    W pierwszym przypadku należy użyć maski dla odpowiednich pinów, po czym sprawdzać na których pinach wystąpiła jedynka, lub zero.
    Drugi jest prostszy, wystarczy sprawdzić stan całego portu.

    Cytat:
    a później przekształcić ze stringa do bin funkcja var = Binval( s)


    Na przykład tak :
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    W zmiennej B Masz właśnie liczbę w postaci binarnej.

    Cytat:
    czy jest jakis szybszy sposób do konwersji stanów całego portu do liczby

    I tu nasuwa się pytanie.
    Do jakiej liczby w sensie sposobu zapisu ?

    A jeżeli potrzebujesz odwzorować stan portu na innym porcie to np. tak :

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    I obyło sie bez zmiennej ;)
  • Użytkownik usunął konto  
  • Pomocny post
    Poziom 36  
    levy^ napisał:
    Witam,

    Do wejść Portu mam podłączone 5 odbiorników zbliżeniowych. Odczytują zagłębienia w tarczy kodowej. Niestety nie są one uporządkowane tzn bit0 na tarczy jest przypisany do PORTx.4 a bit1 do PORTx.2 itd
    Próbowałem wcisnąć do zmiennej typu string *6 odczyt z poszczególnych czujników

    Inaczej mówiąc, potrzebujesz przemapowac pojedyncze bity po ich odczytaniu z portu.
    Jeżeli tak, to twój koncept nie jest wcale zły....
    Masz do przemapowania tylko 5 bitów;
    Utwórz 5-elementowy array dla string*1, na przykład:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    e marcus
  • Pomocny post
    Użytkownik usunął konto  
  • Poziom 35  
    w sumie to się koledzy robi tak czyta się PINx robi się tabelkę z 255 wartościami i czyta się wartość z tabeli z adresu na ,który wskazuje port
    lookup a (DTA)
    DTA 10,15,70,100,250... itd.
  • Poziom 16  
    Dziękuję wszystkim za zainteresowanie. Odpisuję dopiero teraz, bo byłem poza miejscem zamieszkania. Użytkownik emarcus i niveasoft trafili w sedno. Bardzo dziękuję za rozwiązanie - człowiek całe życie się uczy. Wykorzystam rozwiązanie bez dodawania kolejnej zmiennej bo będzie wywoływane w przerwaniu
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Zapomniałem dodać ze bit 4 jest dodatkowo na porcie pinc.0