Laboratorium podstaw systemów mikroprocesorowych
Ćwiczenie Nr 3
Imię i nazwisko: Piotr Jurek ,
Semestr
5
Grupa
ED 5.1
Rok akad.
1998/99
Temat ćwiczenia: Klawiatura przeglądana sekwencyjnie
Klawiatura matrycowa.
Data
30.11.98
Ocena
System mkrokontrolera DSM-51 wyposażony jest w dwie klawiatury:
- klawiaturę przeglądaną sekwencyjnie, w której styki każdego klawisza dołączone są do linii bufora wyboru wskaźnika LED o nazwie CSDS i do linii portu P3.5. Odczyt polega na wysłaniu do CSDS danej odpowiadającej wybranemu klawiszowi i sprawdzeniu stanu P3.5.
- klawiaturę matrycową, w której klawisze ułożone są w dwóch kolumnach. Odczyt klawisza polega na odczycie danej z bufora klawiatury (CSKB0 dla pierwszej kolumny lub CSKB1 – dla drugiej)
1) Cel ćwiczenia:
Zapoznanie się z zasadami korzystania z określonego typu klawiatury oraz realizacji programowej nad odczytem wybranych klawiszy.
2) Klawiatura przeglądana sekwencyjnie.
a)odczyt pojedyńczej linii
;************************************************;LEKCJA 7 - KLAWIATURA PRZEGLĄDANA SEKWENCYJNIE
;PRZYKťAD 1 - ODCZYT POJEDYNCZEJ LINII
;************************************************
LED EQU P1.7
KEY EQU P3.5 ;odczyt klawiatury
KEY_COD EQU 00001001B ;wybrane klawisze - 1i4
LJMP START
ORG 100H
START:
MOV R0,#CSDS ;adres wyboru klawisza
MOV A,#KEY_COD
MOVX @R0,A ;wpisz wybrane klawisze
LOOP:
MOV C,KEY ;czytaj stan klawiszy
CPL C ;neguj
MOV LED,C ;zapal diodę TEST gdy
klawisz jest naciśnięty
SJMP LOOP
Działanie tego programu polega na zapaleniu diody TEST w momencie, gdy zostanie naciśnięty klawisz 1 lub 4. Uaktywnienie innych klawiszy sprowadza się do wpisaniu jedynek na odpowiednich pozycjach stałej KEY_COD.
b)eliminacja drgań styków
;************************************************;LEKCJA 7 - KLAWIATURA PRZEGLĄDANA SEKWENCYJNIE;PRZYKťAD 3 - ELIMINACJA DRGAŃ STYKÓW;************************************************
KEY_COD EQU 00001001B ;wybrane klawisze-1i4
LOOP_NO:
JNB KEY,LOOP_NO ;czekaj na naciśnięcie
;klawisza
MOV A,#10 ;eliminacja drgaä styków
LCALL DELAY_MS
JNB KEY,LOOP_NO ;czy nadal naciśnięty
CPL LED ;neguj stan diody TEST
;przy naciśnięciu klaw.
LOOP_YES:
JB KEY,LOOP_YES ;czekaj na zwolnienie
JB KEY,LOOP_YES ;czy klawisz zwolniony
SJMP LOOP_NO ;powrót do pętli czekania
;na klawisz
Eliminacja drgań w powyższym programie realizowana jest poprzez zastosowanie procedury DELAY_MS, która powoduje opóźnienie reakcji programu na naciśnięcie oraz puszczenie klawisza do momentu, gdy drgania zanikną.
c)program który przegląda kolejne klawisze i wyświetla na LCD numer naciśniętego klawisza
1 ;************************************************
2 ;kolejny odczyt wszystkich klawiszy klawiatury
3 ;sekwencyjnej z eliminacją drgaä i wyświetlaniem
4 ;numeru naciśniętego klawisza na LCD
5 ;************************************************
6
7 00B5 KLAW EQU P3.5 ;odczyt klawiatury
8
9 0000: 02 01 00 LJMP START
10 0100: ORG 100H
11 0100: START:
12 0100: 7D 01 MOV R5, #01H ;wybór klawisza
13 0102: 78 30 MOV R0, #CSDS ;adres wyboru klawisza
14 0104: LOOP_K:
15 0104: ED MOV A, R5
16 0105: F2 MOVX @R0, A ;wpisz wybrany klawisz
17 0106: 30 B5 09 JNB KLAW, OBSL_K ;jeśli klaw. naciśnięty to
18 ;skocz do procedury obsługi
19 0109: ED MOV A, R5 ;wybierz nast. klawisz
20 010A: 23 RL A
21 010B: FD MOV R5, A
22 010C: 24 C0 ADD A, #192 ;zacznij od początku jeśli
23 010E: 70 F4 JNZ LOOP_K ;sprawdzone wszystkie klawisze
24 0110: 80 EE SJMP START
25 ;procedura obsługi klawisza
26 0112: OBSL_K:
27 0112: 74 0A MOV A, #10 ;odczekaj 10ms -
28 0114: 12 81 10 LCALL DELAY_MS ;eliminacja drgań styków
29 0117: 20 B5 0E JB KLAW, NIE ;sprawdź klawisz, pomiń dalsze
30 ;instrukcje, jeśli puszczony
31 011A: ED MOV A, R5
32 011B: 7A FF MOV R2, #255
33 011D: LOOP_NR:
34 011D: 0A INC R2 ;zwiększ licznik o jeden
35 011E: 13 RRC...
tomasz.kubiak.sap