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

Jak napisać program obsługi klawiatury matrycowej 3x4 na DSM-51?

Darek199518 22 Mar 2015 12:39 1233 8
REKLAMA
  • #1 14551185
    Darek199518
    Poziom 9  
    Posty: 50
    Ocena: 2
    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]-[#] 
  • REKLAMA
  • #2 14551212
    pawlik118
    Poziom 33  
    Posty: 2405
    Pomógł: 201
    Ocena: 596
    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:
  • #3 14551602
    Darek199518
    Poziom 9  
    Posty: 50
    Ocena: 2
    Czy program będzie wyglądał tak bo on nie chcę działać :

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #4 14552292
    pawlik118
    Poziom 33  
    Posty: 2405
    Pomógł: 201
    Ocena: 596
    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:
  • #5 14552746
    Darek199518
    Poziom 9  
    Posty: 50
    Ocena: 2
    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 #
  • #6 14553003
    pawlik118
    Poziom 33  
    Posty: 2405
    Pomógł: 201
    Ocena: 596
    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
  • REKLAMA
  • #7 14553751
    Darek199518
    Poziom 9  
    Posty: 50
    Ocena: 2
    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 ?
  • REKLAMA
  • #8 14555711
    pawlik118
    Poziom 33  
    Posty: 2405
    Pomógł: 201
    Ocena: 596
    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?
  • #9 14555772
    Darek199518
    Poziom 9  
    Posty: 50
    Ocena: 2
    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: text
    Zaloguj się, aby zobaczyć kod

Podsumowanie tematu

✨ Użytkownik poszukiwał wskazówek dotyczących napisania programu obsługi klawiatury matrycowej 3x4 na DSM-51, z zamianą klawisza Enter na '#' oraz klawisza Esc na '*'. Otrzymał porady dotyczące użycia asemblera, w tym instrukcji MOV i CJNE do modyfikacji wartości zwracanych przez funkcję wait_key. Po kilku próbach i poprawkach, użytkownik zdołał zrealizować zamianę klawiszy, a następnie zapytał o możliwość zapisywania wprowadzonych wartości w rejestrach R0-R7 w kontekście tworzenia programu zamka cyfrowego. Dyskusja obejmowała również sugestie dotyczące debugowania programu oraz wyświetlania wartości akumulatora na LCD w celu weryfikacji działania.
Wygenerowane przez model językowy.
REKLAMA