Maticová klávesnice

Z MAM wiki

Přejít na: navigace, hledání

Takhle klávesnice vypadá, včetně originální dokumentace (na obrázku není barevný plochý kabel, ten vede pod klávesnicí nahoru):


Propojení klávesnice s procesorem

Na černém konektoru do kontaktního pole, od kterého vede barevný plochý kabel dolů, jsou sloupce a řádky klávesnice připojeny takto:

COL1 COL3 ROW1 ROW3
COL2 COL4 ROW2 ROW4

Vývody ATmega168, ke kterým by tato klávesnice šla připojit:

PC5 PC4 PC3 PC2 ... ... ...
)
RESET PD0 PD1 PD2 PD3 ... ... ...

Fragmenty programu níže na této stránce předpokládají propojení COL1..4 s PC2..5 a propojení ROW1..4 s PD0..3.

Programové ovládání

Speciální registry potřebné k ovládání portů C a D jsou u ATmega168/88 všechny ještě v rozsahu dostupném instrukcemi jako SBI a CBI, na těchto I/O adresách:

	.EQU DDRC = $07
	.EQU PORTC = $08
	.EQU PINC = $06

	.EQU DDRD = $0A
	.EQU PORTD = $0B
	.EQU PIND = $09

Třeba klávesa 7 spíná vzájemně ROW3 a COL1, tedy PD2 a PC2. Abychom zjistili, zda je stisknutá, dáme na PD2 tvrdou logickou nulu a na PC2 měkkou logickou jedničku a po chvíli otestujeme stav PC2 (SBIS je "Skip if BIt Set" - přeskočí následující instrukci, je-li bit roven 1):

	SBI DDRD, 2
	SBI PORTC, 2
	...
	SBIS	PINC, 2
	...

Třeba při použití částí blikacího programu může dioda měnit barvy, je-li klávesa 7 stisknuta:

	SBI DDRD, 2
	SBI PORTC, 2
GO:
	RCALL   COLOR1
	RCALL	WAIT
	SBIS	PINC, 2
	RCALL	COLOR2
	RCALL	WAIT
	RJMP	GO

Při krokování přes debugWIRE nám pro ověření funkce tlačítka dokonce stačí jen se dívat na stav portu PINC - při každém kroku se zobrazení aktualizuje, i když program sám s portem právě nepracuje.

Osobní nástroje