MICRO7~1.DOC

(43 KB) Pobierz
POLITECHNIKA LUBELSKA

Politechnika     

Lubelska            

Laboratorium podstaw systemów mikroprocesorowych

 

Ćwiczenie  Nr 3 

Imię i nazwisko: Piotr Jurek  ,

Tadeusz Klukowski

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
;************************************************

 

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_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

                                                                                    ;klawisza

              MOV              A,#10                                                        ;eliminacja drgaä styków

              LCALL              DELAY_MS

              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...

Zgłoś jeśli naruszono regulamin