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

obsługa klawiatury matrycowej 3x4 dsm - 51

Darek199518 22 Mar 2015 12:39 735 8
  • #1 22 Mar 2015 12:39
    Darek199518
    Poziom 9  

    Chciałbym zrobić program obsługi klawiatury matrycowej 3x4 na dsma 51.Nie wiem jak to zrobić żeby wyświetlało mi zamiast enter -# i zamiast esc- * .Proszę o wskazówki
    -[1]-[2]-[3] 
    -[4]-[5]-[6] 
    -[7]-[8]-[9] 
    -[*]-[0]-[#] 

    0 8
  • #2 22 Mar 2015 12:46
    pawlik118
    Poziom 24  

    Najlepiej poszukać w książce Pana Gałki. Z tego co pamiętam, wbudowana w DSM-51 funkcja zwraca w formie wyniku bajtowego wartość, odpowiadającą naciśniętemu klawiszowi. Można zatem, z polecenia "If zmienna = enter then zmienna = #". Oczywiście w assemblerze, więc
    MOV A,zmienna
    CJNE A,#(tutaj wpisać wartość którą zwraca funkcja dla enter",pomin_poprawianie_znaku ;jeśli A jest równe temu co w nawiasie, poniższy wiersz się wykona
    MOV zmienna,#(wartosc znaku dla #)
    pomin_poprawianie_znaku:

    0
  • #3 22 Mar 2015 14:32
    Darek199518
    Poziom 9  

    Czy program będzie wyglądał tak bo on nie chcę działać :

    Kod: asm
    Zaloguj się, aby zobaczyć kod

    0
  • #4 22 Mar 2015 18:03
    pawlik118
    Poziom 24  

    nie wiem czy będzie działał, DSM-51 to taki niby asembler ale z dodatkami.
    mov a,23h - do akumulatora jest kopiowana wartość komórki pamięci o adresie 23h. Jeśli chcemy do A skopiować wartość 23h należy wpisać MOV a,#23h

    więc jak już to:

    lcall wait_key
    add a,#30h
    ;mov R2,a
    ;mov A,23h ;23h-# w tabeli asci
    cjne A,#3fh,pomin_poprawienie_znaku ;3fh- funkcja enter w tabeli asci
    mov A,#23h
    pomin poprawienie znaku:

    0
  • #5 22 Mar 2015 20:10
    Darek199518
    Poziom 9  

    Niestety program nie działa nie zamienia enter na #.Może mój program do obsługi klawiatury matrycowej jeat zły i dlatego nie mogę zmienić entera na #

    0
  • #6 22 Mar 2015 21:00
    pawlik118
    Poziom 24  

    może sprawdź w pierwszej kolejności, jaką wartość funkcja wait_key zwraca dla wybranych przycisków. Można to zrobić poprzez wyświetlenie wartości A akumulatora na LCD. To będzie jakiś krok do sprawdzenia do którego miejsca program działa

    0
  • #7 23 Mar 2015 06:41
    Darek199518
    Poziom 9  

    Udało mi się to zrobić teraz chciałbym zrobić aby każdy klawisz był wprowadzany do rejestru od R0 do R7.Czy lepiej zrobić to w inny sposób ?

    0
  • #8 23 Mar 2015 20:46
    pawlik118
    Poziom 24  

    W jaki sposób rozwiązałeś problem? możesz wkleić swój kawałek softu za to odpowiedzialny?
    Co do wprowadzania numeru klawisza (znaku) do rejestrów R0-7 - nie rozumiem idei - po co?

    0
  • #9 23 Mar 2015 21:04
    Darek199518
    Poziom 9  

    Chce zrobić program zamka cyfrowego i dlatego chce aby klawisze zapisywanie były w rejestrach czyli zapis kodu aby potem z rejestrami program porównywał kod do otwarcia zamka. Dlatego najlepiej by było jak by zapisał w rejeatrach a potem już nie tylko np porównywał rejeatry z komórkami pamięci aby przy wprowadzeniu właściwego otworzył zamek A kratkę zrobiłem w twn sposób:

    Kod: asm
    Zaloguj się, aby zobaczyć kod

    0