Klawiaturka matrycowa
Masz problem? Zapytaj na forum elektroda.pl
From: "Teres" <teres_at_nospam_WyTniJ_to!!!_at_nospam_poczta.fm>
Subject: Klawiaturka matrycowa
Date: Fri, 9 Apr 2004 10:53:02 +0200
Witam
Wykonałem klawiaturkę matrycową do mikrokontrolera AT89s8252 będzie ona
podłączona do portu 2 z wewnetrznymi podciagnieciami do 5V. Zastanawiam się
jak należy oprogramować teraz uC. A konkretnie to o to , czy poszczególne
piny portu się ustawia jako wejścia wyjścia, a jeśli tak , to jak to zrobić
w asm. na P2.0-P2.2 są kolumny, na P2.3-P2.7 wiersze (klawiaturka
4x3).Zakładają taki fragment programu:
mov P2,00001111B
mov A,P2
oraz dodatkowo uziemiając wszystkie piny portu 2, co będzie w akumulatorze ?
Bo nie wiem czy stan portu , to to samo wysłaliśmy my na port, czy to co
przyszło.
Jeśli ktoś będzie w stanie pomóc, z góry dzięki.
Pozdrawiam,
Teres
=======
From: "Marek Dzwonnik" <mdz_at_nospam_WIADOMO_PO_CO_TO.message.pl>
Subject: Re: Klawiaturka matrycowa
Date: Fri, 9 Apr 2004 12:51:57 +0200
Użytkownik "Teres" <teres_at_nospam_WyTniJ_to!!!_at_nospam_poczta.fm> napisał w wiadomości
news:c55o9c$2vi$1_at_nospam_news.onet.pl
Wykonałem klawiaturkę matrycową do mikrokontrolera AT89s8252 będzie
ona podłączona do portu 2 z wewnetrznymi podciagnieciami do 5V.
P2.0-P2.2 są kolumny, na
P2.3-P2.7 wiersze (klawiaturka 4x3).
mov P2,00001111B
mov A,P2
oraz dodatkowo uziemiając wszystkie piny portu 2, co będzie w
akumulatorze ? Bo nie wiem czy stan portu , to to samo wysłaliśmy my
na port, czy to co przyszło.
1)
Spójrz jak wygląda budowa portów w 8051:
http://www.ampr.intertele.pl/sq8feu/8051/porty.htm
Zwróć uwagę na zasadniczą różnicę występującą pomiędzy zapisem a odczytem
portu.
Zapis portu ustawia/zeruje bity w odpowiednim rejestrze SFR (P0, P1...),
natomiast odczyt zwraca stan linii wyjściowych portu. Stan linii jest
wypadkową bitu wpisanego do rejestru i obciążenia podłączonego do danej
linii.
Jeżeli wystawisz do rejestru "0" to odczyt zawsze zwróci "0"
Jeżeli wystawisz do rejestru "1" to odczyt niepodłączonej linii zwróci "1"
Jeżeli wystawisz do rejestru "1" i obciążysz linię do masy to odczyt linii
zwróci "0"
Stąd wniosek, że jeżeli jakaś linia portu ma pracować jako _wejście_, to do
odpowiedniego bitu rejestru należy wcześniej wpisac "1".
Uwaga 1.
Niektóre rozkazy w 51-ce operują na wartości pobranej zwrotnie z rejestru
portu a nie na wartości odczytanej z linii portu.
http://www.ampr.intertele.pl/sq8feu/8051/rmw.htm
Uwaga 2.
Np. w AVR-ach wprowadzono rejestr wybierający kierunek transmisji (DIRx) i
jawnie rozdzielono zapis/odczyt rejestru (POTRx) od odczytu stanu linii uC
(PINx).
2)
Wszelkie styki (klawiatury, krańcówki.. itp.) są paskudne bo drgają przy
przełączaniu. Tzn. generują kilka zboczy podczas jednego wciśnięcia. Dlatego
istotną część obsługi klawiatury stanowi programowa eliminacja odbić
(debouncing). Zobacz np.:
http://www.google.pl/groups?selm=3cd83d32%40news.home.net.pl
--
Marek Dzwonnik, GG: #2061027 (zwykle jako 'niewidoczny')
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai
From: "Teres" <teres_at_nospam_WyTniJ_to!!!_at_nospam_poczta.fm>
Subject: Re: Klawiaturka matrycowa
Date: Fri, 9 Apr 2004 13:17:53 +0200
Użytkownik "Marek Dzwonnik" <mdz_at_nospam_WIADOMO_PO_CO_TO.message.pl> napisał w
wiadomości news:4076804e$1_at_nospam_news.home.net.pl...
mov P2,00001111B
mov A,P2
oraz dodatkowo uziemiając wszystkie piny portu 2, co będzie w
akumulatorze ? Bo nie wiem czy stan portu , to to samo wysłaliśmy my
na port, czy to co przyszło.
Czyli w A będzie 00000000B, tak ??
Uwaga 1.
Niektóre rozkazy w 51-ce operują na wartości pobranej zwrotnie z
rejestru
portu a nie na wartości odczytanej z linii portu.
http://www.ampr.intertele.pl/sq8feu/8051/rmw.htm
Doczytałem
Uwaga 2.
Np. w AVR-ach wprowadzono rejestr wybierający kierunek transmisji (DIRx)
i
jawnie rozdzielono zapis/odczyt rejestru (POTRx) od odczytu stanu linii
uC
(PINx).
Wiem
2)
Wszelkie styki (klawiatury, krańcówki.. itp.) są paskudne bo drgają przy
przełączaniu. Tzn. generują kilka zboczy podczas jednego wciśnięcia.
Dlatego
istotną część obsługi klawiatury stanowi programowa eliminacja odbić
(debouncing). Zobacz np.:
http://www.google.pl/groups?selm=3cd83d32%40news.home.net.pl
Najprawdopodobniej zastosuje opóźnienia rzędu 30ms i dopiero wtedy
potwierdzenie odczytu.
Pozdrawiam,
Teres
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai
From: "Cymes" <semyc_at_nospam_op.NO.SPAM.pl>
Subject: Re: Klawiaturka matrycowa
Date: Sat, 10 Apr 2004 20:03:19 +0200
"Teres" <teres_at_nospam_WyTniJ_to!!!_at_nospam_poczta.fm> wrote in message
news:c560q0$t2a$1_at_nospam_news.onet.pl...
Użytkownik "Marek Dzwonnik" <mdz_at_nospam_WIADOMO_PO_CO_TO.message.pl> napisał w
wiadomości news:4076804e$1_at_nospam_news.home.net.pl...
[ciach]
Najprawdopodobniej zastosuje opóźnienia rzędu 30ms i dopiero wtedy
potwierdzenie odczytu.
Ja zmontowałem klawiaturkę 2x2 podłączaną do AVRa według tego schematu:
http://www.atmel.com/dyn/resources/prod_documents/doc1232.pdf
Działa bardzo dobrze, tylko pamiętaj o ustawieniu nieużywanych linii portów
jako wyjścia, bo w przeciwnym razie dzieją się dziwne rzeczy. W każdym bądź
razie odczyt stanu linii w procedurze obsługi przerwania eliminuje problem z
oprogramowaniem uwzględniającym drganie zestyków. A przynajmniej tak mi się
wydaje, nie jestem doświadczonym elektronikiem.
--
Pozdrawiam, Cymes
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai
From: "Teres" <teres_at_nospam_WyTniJ_to!!!_at_nospam_poczta.fm>
Subject: Re: Klawiaturka matrycowa
Date: Sat, 10 Apr 2004 23:49:17 +0200
Użytkownik "Cymes" <semyc_at_nospam_op.NO.SPAM.pl> napisał w wiadomości
news:c59ctr$ij5$1_at_nospam_news.onet.pl...
Ja zmontowałem klawiaturkę 2x2 podłączaną do AVRa według tego schematu:
http://www.atmel.com/dyn/resources/prod_documents/doc1232.pdf
Działa bardzo dobrze, tylko pamiętaj o ustawieniu nieużywanych linii
portów
jako wyjścia, bo w przeciwnym razie dzieją się dziwne rzeczy. W każdym
bądź
razie odczyt stanu linii w procedurze obsługi przerwania eliminuje problem
z
oprogramowaniem uwzględniającym drganie zestyków. A przynajmniej tak mi
się
wydaje, nie jestem doświadczonym elektronikiem.
Nie robie na AVR.
Pozdrawiam,
Teres
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai