Mikroprocesory, moje9, POLITECHNIKA LUBELSKA


LABORATORIUM PODSTAW SYSTEMÓW MIKROPROCESOROWYCH

WYDZIAŁ ELEKTRYCZNY

KLAWIATURA PRZEGLĄDANA SEKWENCYJNIE.

KLAWIATURA MATRYCOWA.

Data wykonania ćwiczenia: 05.12.97

Wykonawcy:Marcin Grabowiecki

Sebastian Chmielowiec

Jacek Gawęda

Cel ćwiczenia:

Celem ćwiczenia było zapoznanie się z ze sposobami obsługi klawiatury w systemie DSM-51, zarówno sekwencyjnej jak i matrycowej.

Zadanie 1.

W zadaniu tym przeanalizowany został program obsługujący klawiaturę sekwencyjną i reagujący tylko na klawisze 1 i 4.

W celu uaktywnienia innych klawiszy należy zmienić maskę KEY_COD . Program ,który będzie

reagował na wszystkie klawisze powinien więc mieć następującą postać:

LED EQU P1.7

KEY EQU P3.5

KEY_COD EQU 11111111B

LJMP START

ORG 100H

START:

MOV R0,#CSDS

MOV A,#KEY_COD

MOVX @R0,A

LOOP:

MOV C,KEY

CPL C

MOV LED,C

SJMP LOOP

Zadanie 2.

W tym zadaniu został przeanalizowany poprzedni program lecz uwzględniający drgania zestyków klawiatury. W celu ich eliminacji zastosowano opóznienie czasowe i powtórne sprawdzanie klawiatury.

Zadanie 3.

Modyfikacja programu z zadania 2. Program eliminuje drgania zestyków klawiatury oraz rozpoznaje kod naciśniętego klawisza i wyświetla go na wyświetlaczu.

LED EQU P1.7

KEY EQU P3.5

KEY_COD EQU 01H

LJMP START

ORG 100H

START:

LCALL LCD_CLR

MOV R0,#CSDS

MOV A,#KEY_COD ; do ACC liczba 01H

LOOP_NO:

RR A ; ACC jest przesuwany w prawo

MOVX @R0,A ;wpisz wybrane klawisze

JNB KEY,LOOP_NO

PUSH ACC ; ACC na stos

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

LCALL DELAY_MS

POP ACC

JNB KEY,LOOP_NO ;czy nadal naciśnięty

LCALL WRITE_HEX ; wyświetl kod klawisza

LOOP_YES:

JB KEY,$ ; czekaj na puszczenie klawisza

MOV A,#10 ; eliminacja drgań zestyków

LCALL DELAY_MS

JB KEY,LOOP_YES

MOV A,#KEY_COD ; wróć do początku programu

AJMP LOOP_NO

Jak widać program ten umożliwia rozróżnianie naciśniętych klawiszy poprzez zmianę maski która wysyłana jest do bufora CSDS. Maska ta jest zmieniana w akumulatorze poprzez zastosowanie instrukcji RR ,która przesuwa zawartość akumulatora w prawo. W tym przypadku przesuwana jest liczba 01H, dzięki czemu po każdym przesunięciu i wysłaniu maski do bufora program czeka na naciśnięcie jednego specyficznego klawisza określonego tą maską. Następnie kod odpowiadający temu klawiszowi jest wyświetlany. Eliminacja drgań zestyków jest realizowana tak jak w poprzednim przykładzie.

Zadania 4,5.

Został przeanalizowany program obsługujący klawiaturę matrycową (klawisze 0-7).

Modyfikacja programu polega na eliminacji drgań zestyków klawiatury oraz obsługę klawiszy 8-15.

LJMP START

ORG 100H

START:

LCALL LCD_CLR

MOV R0,#CSKB0 ;adres klawiszy 0..7

MOV R1,#CSKB1 ;adres klawiszy 8..15

LOOP_NO:

MOV B,#0

MOVX A,@R0 ;odczyt stanu klawiszy (0-7)

CPL A

JNZ WYJSCIE ;czy klawisz naciśnięty (0-7)

ACALL 10MS

JNZ WYJSCIE

MOV B,#08H

MOVX A,@R1 ; odczyt stanu klawiszy (8-15)

CPL A

JZ LOOP_NO ; czy klawisz naciśnięty (8-15)

ACALL 10MS

JZ LOOP_NO

WYJSCIE:

MOV R2,#0FFH

LOOP_NR:

INC R2

RRC A

JNC LOOP_NR

MOV A,R2

ADD A,B ;przekoduj nr klawisza

LCALL WRITE_HEX ;wypisz kod klawisza

LOOP_YES:

MOVX A,@R0 ;odczyt stanu klawiszy (0-7)

CPL A

JNZ LOOP_YES ;czy klawisz zwolniony (0-7)

ACALL 10MS

JNZ LOOP_YES

MOVX A,@R1 ;odczyt stanu klawiszy (8-15)

CPL A

JNZ LOOP_YES ;czy klawisz zwolniony (8-15)

ACALL 10MS

JNZ LOOP_YES

SJMP LOOP_NO ;powrót do oczekiwania na

;naciśnięcie klawisza

10MS : PUSH ACC

MOV A,#10

LCALL DELAY_MS

POP ACC

Program obsługuje teraz klawisze 8-15 dzięki sprawdzaniu bufora CSKB1, który jest adresowany przez rejestr R1. Jeśli naciśnięto którykolwiek z klawiszy realizowane jest opóźnienie czasowe po czym stan klawiatury jest sprawdzany ponownie. W zależności od tego czy naciśnięty jest klawisz z dolnej czy z górnej grupy do rejestru B jest wpisywana wartość 0 albo 8 ,która pózniej służy do przenumerowania kodu klawisza. Rozpoznawanie ,który został naciśnięty klawisz odbywa się poprzez przesuwanie akumulatora instrukcją RRC w pętli dotąd aż wskaźnik C pokaże ,że naciśnięto klawisz. Jednocześnie w tej samej pętli jest zwiększana wartość rejestru R2 przechowującego kod klawisza. Następnie kod klawisza zostaje przenumerowany w akumulatorze i wyświetlony na LCD. Z kolei w pętli LOOP_YES program czeka na zwolnienie klawisza eliminując również drgania zestyków. Do realizacji opóznienia jest używany podprogram 10MS ,który nie nisczy zawartości akumulatora.

Wnioski:

Programy przeanalizowane w ćwiczeniu pozwoliły na zapoznanie się ze sposobami obsługi klawiatury w systemie. Obsługa klawiatury matrycowej wydaje się bardziej logiczna od obsługi klawiatury sekwencyjnej gdyż porty CSKB od razu zwracają do akumulatora pewną wartość co pozwala na łatwiejsze rozróżnianie klawiszy. Natomiast klawiatura sekwencyjna wymaga zmieniania maski w celu zidentyfikowania klawisza. Ten sposób wydaje się być w programie mniej przejrzysty i zrozumiały. Podczas uruchamiania programów w systemie DSM-51 można było czasami zaobserwować skutki drgań zestyków, które powodowały wielokrotne wyświetlanie tej samej liczby na wyświetlaczu. Wynika stąd wniosek ,że w programach obsługujących klawiaturę należy jednak stosować eliminację drgań zestyków.



Wyszukiwarka

Podobne podstrony:
Mikroprocesory, Micro 3, Politechnika Lubelska
Mikroprocesory, Micro10, Politechnika Lubelska
Mikroprocesory, Micro10, Politechnika Lubelska
Mikroprocki 1kl, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPR
Mikroprocesory, LEKCJA~1, Politechnika Lubelska
Mikroprocesory, MIKROP10, POLITECHNIKA LUBELSKA
LAB6MICR, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY
MICRO7~1, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY
Mikroprocesory, MIKROPR3, POLITECHNIKA LUBELSKA
Mikroprocesory, 1,2', Politechnika Lubelska
Budowa mikroprocesora, Politechnika Lubelska, Studia, Semestr 6, sprawka 6 sem moje
PROCES5, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY
M7, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY LABOL
Laboratorium budowy urządzeń mikrokomputerowych, Sprzęganie urządzeń zewnętrznych i peryferyjnych mi
Labolatorium komputerowych systemów automatyki, Regulatory mikroprocesorowe, Politechnika Lubelska
PROC7, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY LA
Labolatorium Urządzeń mikrokomputerowych, Badanie zasilacza ukł. mikroprocesor., Politechnika Lubel
Mikroprocesory, MIKROP4, POLITECHNIKA LUBELSKA
Badanie zasilacza ukł. mikroprocesor, Studia, sprawozdania, sprawozdania od cewki 2, Dok 2, Dok 2, P

więcej podobnych podstron