logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Bascom: Jak połączyć dwa bajty (1 i 2) w jeden wynik 12?

solar1 30 Sty 2007 11:28 1247 6
REKLAMA
  • #1 3505885
    solar1
    Poziom 15  
    Posty: 185
    Pomógł: 2
    Ocena: 11
    jak dodac dwa bajty np 1 i 2 w sposob taki aby wyszlo 12 a nie 3 chodzi mi o wynik w bajcie .... bo umiem to zrobic na stringach
  • REKLAMA
  • #2 3505916
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    pierwszy bajt starszy np:=8
    drugi bajt młodszy np: =4
    8*10 +4=84; :)
  • REKLAMA
  • #3 3505968
    solar1
    Poziom 15  
    Posty: 185
    Pomógł: 2
    Ocena: 11
    ok a jak to wykonac w sposob inteligenty ... mam klawaitore matrycowa 4x4 i chce wprowadzac numer urzadzenia .. w ym wypadku musial bym podac 02 ... no ale to nie wchodzi w gre
  • REKLAMA
  • #4 3505997
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Przed odczytem zerujesz bajty.
    pierwszy bajt 0:
    drugi bajt 2: (po wcisnięciu)
    0*10+2=2;
  • REKLAMA
  • #5 3506570
    solar1
    Poziom 15  
    Posty: 185
    Pomógł: 2
    Ocena: 11
    hmm udalo mi sie zrobic taki kod... ale jest on ogromny! no i nie dziala poprawnie ;/ 10 da sie wprowadzic 11 tez 20 i 22 tez ale juz 21 nie ;/
    $sim
    Dim C As Byte                                                 ' liczba
    Dim Cn As Byte                                                ' wartosc wprowadzona z klawiatory niska
    Dim Cw As Byte                                                ' wartosc wartosc wprowadzana z kalwiatory wysoka
    Dim Pier As Bit                                               ' wystaw 1 jak pierwszy kalwisz
    Do
     C = 0
     Cn = 0
     Cw = 0
    Break
    Waitms 255
     If P0.0 = 0 Then
       If Pier = 0 Then
         Pier = 1
         C = 1
         End If
     Cw = 10 * C
     End If
    
    Break
     If P0.1 = 0 Then
        If Pier = 1 Then
        Cn = 2
        Pier = 0
        End If
    
     End If
    Break
     If P0.1 = 0 Then
       If Pier = 0 Then
         Pier = 1
         C = 2
         End If
    
     End If
    
    Break
     If P0.1 = 0 Then
        If Pier = 1 Then
        Cn = 2
        Pier = 0
        End If
    
     End If
    
    
      Cw = 10 * C
     Break
     C = Cw + Cn
     Break
     Print C
     Loop
    


    jak powina wygldac prawidlowo obsloga takiej klawiatory?
  • #6 3506997
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    solar1 napisał:
    ...jak powina wygldac prawidlowo obsloga takiej klawiatory?

    Jakiej klawiatury :?:
    Poza tym że jest to 4x4 , nic więcej nie podałeś , a to zdecydowanie za mało :(
    Jak jest podpięta do proca - pod jeden port :?:
    Jeśli jest na P0 , to czy masz zewnętrzne rezystory pull-up :?:
    Czy 4x4 oznacza klawiaturę matrycową o 4 rzędach i 4 kolumnach :?:
    Jak są rozmieszczone klawisze ... itd.

    Pytania typu: "popsuło mi się - co się mogło stać" - "leżą odłogiem" :(

    Piotrek
  • #7 3509771
    solar1
    Poziom 15  
    Posty: 185
    Pomógł: 2
    Ocena: 11
    nie mam problemu ze sprzetem... a z programem jest to klawiatora 4x4 matrycowa nie jest itsonte jak sa poukladane tak wyglda mniejwiecej kod:

    
    Sub Getkbd                                                    'skanowanie matrycy
    Set P3.4 : Set P3.5 : Set P3.6 : Set P3.7
    Reset P3.4
    Waitms 20
    Debounce P3.0 , 0 , Kew1                                      '1
    Debounce P3.1 , 0 , Kew2                                      '4
    Debounce P3.2 , 0 , Kew3                                      '7
    Debounce P3.3 , 0 , Kew4                                      'n
    Set P3.4 : Reset P3.5
    Waitms 20
    Debounce P3.0 , 0 , Kew5                                      '2
    Debounce P3.1 , 0 , Kew6                                      '5
    Debounce P3.2 , 0 , Kew7                                      '8
    Debounce P3.3 , 0 , Kew8                                      '0
    Set P3.5 : Reset P3.6
    Waitms 20
    Debounce P3.0 , 0 , Kew9                                      '3
    Debounce P3.1 , 0 , Kew10                                     '6
    Debounce P3.2 , 0 , Kew11                                     '9
    Debounce P3.3 , 0 , Kew12                                     't
    Set P3.6 : Reset P3.7
    Debounce P3.0 , 0 , Kew13                                     'f1
    Debounce P3.1 , 0 , Kew14                                     'f2
    Debounce P3.2 , 0 , Kew15                                     'f3
    Debounce P3.3 , 0 , Kew16                                     's
    Set P3.7
    Waitms 20
    Waitms 20
    Return
    End Sub
    

    nacisniecie klawisza wykonuje jakis podprogram natomiast nie wiem jak zarobic aby mozna bylo wpisac np 12 i f1 zatwierdza ... z TYM MaM problem a nie z PUllapami ani ZE sprzetem

    Cytat:
    Pytania typu: "popsuło mi się - co się mogło stać" - "leżą odłogiem"

    Piotrek

    pytanie zadalem jasno w 1 poscie

Podsumowanie tematu

✨ Dyskusja dotyczy problemu łączenia dwóch bajtów (np. 1 i 2) w jeden wynik o wartości 12, a nie sumy 3, w kontekście programowania w Bascom i obsługi klawiatury matrycowej 4x4. Propozycje rozwiązania obejmują traktowanie pierwszego bajtu jako starszego i mnożenie go przez 10, a następnie dodanie drugiego bajtu, co daje wynik 12 (np. 1*10 + 2 = 12). Autor próbuje zaimplementować to w kodzie, jednak napotyka problemy z poprawnym działaniem, zwłaszcza przy wprowadzaniu liczb dwucyfrowych z klawiatury matrycowej. W dyskusji pojawiają się pytania o szczegóły sprzętowe, takie jak sposób podłączenia klawiatury do mikrokontrolera, obecność rezystorów podciągających oraz układ klawiszy. Przykładowy fragment kodu pokazuje skanowanie matrycy klawiatury i przypisywanie wartości do zmiennych, jednak autor nadal poszukuje efektywnego i poprawnego rozwiązania programowego.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA