Připojení tlačítek nebo klávesnice je velmi častá úloha při realizaci jakéhokoli ručně ovládaného přístroje. Jednotlivá tlačítka, na jedné straně uzemněná, se obvykle připojují na vstupní brány, které jsou pravidelně čteny. Nechceme-li pravidelně číst vstupní brá-ny, potom můžeme tlačítka připojit ještě na vstupy logického členu AND, jehož vý-stup připojíme na vstup vnějšího přerušení. Je-li počet tlačítek větší něž zhruba 5 tlačítek, potom se tlačítka obvykle za-po-jují do matice mající určitý počet řádků a sloupců. Zapojení tlačítek potom využívá externí logi-ku (členy AND) do řádků a sloupců, které jsou připojeny pouze na vstupní brány procesoru. Toto zapojení umožňuje indikovat zmáčknutí jednoho nebo dvou tlačítek najednou. Pří-padné zmáčknutí tří tlačítek může, ale také nemusí být identifikovatelné.
Z tohoto důvodu a také vzhledem k jednodušší hardwarové realizaci se častěji
používá zapojení přímého připojení na porty mikroprocesoru.
Jednotlivá tlačítka jsou zapojena mezi řádky a sloupce matice. Přivedeme-li například
pouze na jeden řádek úroveň log.0, potom přečtením všech sloupců snadno zjistíme,
která tlačítka v daném řádku jsou zmáčknuta. Postupným výběrem
všech řádků snadno zjistíme všechna zmáčknutá tlačítka na
klávesnici. Používáme-li bránu P0 jako vstupní nebo výstupní,
musíme ji doplnit kolektorovými odpory vůči napájení (tzv. pull-up odpory).
V záhlaví programu je uveden podrobný komentář.
Pokud máte napsanou SW rutinu, která umí detekovat rychlost ze souvislého toku dat, pošlete nám ji..
;Program Maticova Klavesnice ;Program obsluhuje maticovou klavesnici na P1. Zaroven
vyuziva ;Obsluzny program JE vytvoren tak, aby pripravil data pro dalsi
zpracovani ;********* inicializace ***********************************************
dseg at 40h
;promenne od adr 40,10 bytu rezerva cseg at
00h INIT: ; ---------------------- Rutina klavecnice -------------------------------- P1_Matic_Klav: ;Potrebuje 3 byte jako hloubku stacku DSEG &
nbsp; ; Nastav Data Segment ;
MSB LSB
; Misto X mohu pripojit jeste jeden Sloupec
Push Acc ;Uloz puvodni Acc Mov
R5,#11101111b ;Vybira kterou radku nebo sloupec ctu Next_line: &nb sp; ; Precte jednu radku klavesnice Mov
Acc,R5 ; Nacte data pro nastaveni sloupce KEY_READ: Mov
P1,Acc ; Vysle ovladaci kombinaci JNB Acc.6,cullum_2 INC
keyb_kolik ; Stisknuta dalsi klavesa
JNB
Acc.5,cullum_3 cullum_3: INC
keyb_kolik ; Stisknuta dalsi klavesa Cullum_4: Konec_cteni_klv: Pop
Acc ;Obnovi Vse krome R5 aR6
;------------------------------ Konec rutiny klavesnice
-----------------
delay50u: Push PSW ;-------------------------- Obsluzny Program ---------------------------- START: Mov Acc,Keyb_kolik ;Pocet stisknutych klaves Mov Acc,Keyb_res1 ; Tlacitko 1 Mov Acc,Keyb_res2 ; Tlacitko 2 Mov Acc,Keyb_res3 ;
Tlacitko 3 JMP START
|