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

Atmega/bascom/obsluga klawiatury

Tonek88 04 Lip 2010 18:21 2017 1
REKLAMA
  • #1 8260262
    Tonek88
    Poziom 1  
    Witam
    Program do obslugi klawiatury na PS2.

    
    $crystal = 8000000
    
    Config Lcd = 16 * 2                                         
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5       
    
    
    Config Keyboard = Pinb.2 , Data = Pinb.3 , Keydata = Keydata       
    
    Dim Kod_kl As Byte                                          
    
    
    Cls                                                         
    Do
       Kod_kl = Getatkbd()
                                                                   
       If Kod_kl > 0 Then
          If Kod_kl > 31 And Kod_kl < 127 Then                  
    
    
             Lcd Chr(kod_kl)                                    
    
          End If
          If Kod_kl = 44 Then                                   
    
             Cls
          End If
          If Kod_kl = 13 Then                                   
    
             Lowerline                                          
    
          End If
      End If
    Loop
    End
                                              
    Keydata:                                                    
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,       
    Data &H5E , 0 , 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 ,
    Data 115 , 97 , 119 , 50 , 0 , 0 , 99 , 120 , 100 , 101 , 52 ,
    Data 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0 , 0 , 110 ,
    Data 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 ,
    Data 56 , 0 , 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 ,
    Data 108 , 48 , 112 , 43 , 0 , 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 ,
    Data 0 , 13 , 0 , 0 , 92 , 0 , 0 , 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 ,
    Data 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 48 , 44 , 50 , 53 , 54 , 56 ,
    Data 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
                                                                                  
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
    Data 0 , 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 ,
    Data 87 , 34 , 0 , 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 ,
    Data 70 , 84 , 82 , 37 , 0 , 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 ,
    Data 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0 , 0 , 59 , 75 , 73 , 79 ,
    Data 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0 , 0 , 0 , 0 ,
    Data 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0 , 0 , 62 ,
    Data 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0 , 48 ,
    Data 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
    


    Wszystko smiga elegancko. Jednak glownie chodzi mi o funkcje getatkbd, nauczyciel sie ze mna spiera i mowi ze tablica do zamiany z kodu klawisza na ascii jest zupelnie nie potrzebna(bo ta funkcja robi to sama w sobie). Z tego co mi sie udalo znalesc, wynika jasno ze tablica jest potrzebna do konwersji. Czy ktos moze potwierdzic moja wersje, albo ja obalic. Ewentualnie jezeli sie tak da to pomoc z usunieciem tych tablic ?
  • REKLAMA
  • #2 8260288
    ugh123
    Poziom 13  
    Witaj :D
    Według mnie tablica jest niezbedna poniewaz to w niej sa zapisane wlasciwe znaki , i wydaje mi sie ze nauczuciel sie myli bo samo polecenie getatkeyb() zwrocilo by numer wcisnietego klawisza a nie konkretna literke , liczbe czy znak . Przykladem moze byc fragment polskiego helpa do bascom-a w ktorym jest opisane dzialanie tego polecenia



    Cytat:
    Funkcja ta pozwala na odczyt danych z klawiatury PC AT, podłączonej bezpośrednio do mikrokontrolera. Sposób dołączenia jest pokazany w opisie instrukcji CONFIG KEYBOARD.

    Funkcja oczekuje na odebranie znaku z klawiatury. Przerwanie pętli oczekiwania może nastąpić przez ustawienie zmiennej ERR, na przykład w procedurze obsługi przerwania.

    GETATKBD używa dwóch bitów w rejestrze R6: bit 4 i 5 jest używany jako flagi stanu klawiszy Shift i Control.



    (c) Zbigniew Gibek, 2002-2003 (c) MCS Electronics, 1999-2003




    zmienna = GETATKBD()

    gdzie:

    zmienna zmienna typu Byte lub String, do której wpisany będzie odczytany znak lub jego kod. Funkcja zwraca zero gdy nie naciśnięto żadnego z klawiszy.




    To chyba bylo by na tyle ;D
    pozdrawiam Bartek
REKLAMA