Witam, jestem w trakcie realizacji mojego 1wszego projektu na AT89S52.
Od niedawna jestem szczęśliwym posiadaczem klawiatury "telefonicznej" 12 przyciskowej(niestety nie jest to klawiatura matrycowa, i ma 14 wyprowadzeń) , dotychczas nie udało mi się jej dobrze "obsłużyć".
Chciałbym sczytywać 4 bajtowy kod wpisany z klawiatury (przykładowo 1234) a następnie zapisać go w rejestrze (w tym przypadku w rejestrach, ponieważ każdy może pomieścić 0-255) w celu porównania go z poprawnymi kodami znajdującymi się na przykład w TAB1.
proszę o pomoc.
dołączam moje próby :
no właśnie... i co ma być pod "DODAWANIE"(w domysle kolejnych cyfr - może w ogóle to usunąć?) i "WPISANE"
oraz jak porównać mój wynik z TAB1.
proszę o podpowiedzi, (także krytyczne) nawet pozornie błaha podpowiedz może posunąć wiele do przodu,mnie po prostu skończyły się pomysły.
pozdrawiam Dominik
Od niedawna jestem szczęśliwym posiadaczem klawiatury "telefonicznej" 12 przyciskowej(niestety nie jest to klawiatura matrycowa, i ma 14 wyprowadzeń) , dotychczas nie udało mi się jej dobrze "obsłużyć".
Chciałbym sczytywać 4 bajtowy kod wpisany z klawiatury (przykładowo 1234) a następnie zapisać go w rejestrze (w tym przypadku w rejestrach, ponieważ każdy może pomieścić 0-255) w celu porównania go z poprawnymi kodami znajdującymi się na przykład w TAB1.
proszę o pomoc.
dołączam moje próby :
MOV R0,#0
KLAWIATURA:
MOV P1,#11111111B ;
SETB P2.2 ;
SETB P2.3 ; to są porty na których mam podłączoną klawiaturę
SETB P2.4 ; wysyłam na nie 1 logiczną aby sterować nimi za pomocą "0"
SETB P2.5 ;
JNB P2.4,GWIAZDKA
JNB P1.0,ZERO
JNB P2.5,KRZYZ
JNB P1.7,SIEDEM
JNB P2.2,OSIEM ; tutaj sprawdzam czy któryś klawisz został wciśnięty
JNB P2.3,DZIEWIEC
JNB P1.4,CZTERY
JNB P1.5,PIEC
JNB P1.6,SZESC
JNB P1.1,JEDEN
JNB P1.2,DWA
JNB P1.3,TRZY
JMP KLAWIATURA
ZERO:
JNB P1.0,$ ; próba eliminacji drgań ?
MOV A,#00000000B ; wpisuję to co zostało naciśnięte do (czyli 0) do A
LCALL DODAWANIE ; tutaj miałem zamiar dodać te wartości (w 4 etapach, tysiace, setki do 1 rejestru, oraz dziesiątki i jedności do drugiego? itd)
MOV DPTR,#MESSAGE0 ; wysyłam na LCD wciśnięta wartość
CALL LCD_STRING ;jw
INC R0
CJNE R0,#4, KLAWIATURA ; sprawdzam która to cyfra z kolei jeśli 4 to skok do wpisane
JMP WPISANE ; jeśli nie to wracam do oczekiwania na kolejne przyciśniecie któregoś z klawiszów
JEDEN:
JNB P1.0,$
MOV A,#00000001B
DEC R0
LCALL DODAWANIE
MOV DPTR,#MESSAGE0
INC R0
CJNE R0,#4, KLAWIATURA
JMP WPISANE
itd.
no właśnie... i co ma być pod "DODAWANIE"(w domysle kolejnych cyfr - może w ogóle to usunąć?) i "WPISANE"
oraz jak porównać mój wynik z TAB1.
proszę o podpowiedzi, (także krytyczne) nawet pozornie błaha podpowiedz może posunąć wiele do przodu,mnie po prostu skończyły się pomysły.
pozdrawiam Dominik