Witam, Pod³±czy³em klawiaturê do M32 o 19 przyciskach pod³±czon± tak: PA0 - col1 PB0 - col2 PB1 - col3 PB2 - col4 PB3 - row1 PB4 - row2 PB5 - row3 PB6 - row4 PB7 - row5 I na porcie A mam te¿ LCD (klasy hd44780 4bit sterow.) (RS=PA1, EN=PA2,D4-D7=PA3-PA6) I o ile skanowanie kolumn z portu B dzia³a bardzo ³adnie to gdy chce sprawdziæ kolumnê na PA0 to mi jej nie czyta :/ Wklejam kawa³ek kodu dla jednego wiersza: <code>
uint8_t tmp=255;
// skanowanie kolumnowe DDR(PORT_ROW) |= 1 << KBD_ROW1 | 1 << KBD_ROW2 | 1 << KBD_ROW3 | 1 << KBD_ROW4 | 1 << KBD_ROW5; PORT(PORT_ROW) |= 1 << KBD_ROW1 | 1 << KBD_ROW2 | 1 << KBD_ROW3 | 1 << KBD_ROW4 | 1 << KBD_ROW5;
DDR(PORT_COL1) &= ~(1 << KBD_COL1); DDR(PORT_COL2) &= ~(1 << KBD_COL2); DDR(PORT_COL3) &= ~(1 << KBD_COL3); DDR(PORT_COL4) &= ~(1 << KBD_COL4);
PORT(PORT_COL1) |= 1 << KBD_COL1; PORT(PORT_COL2) |= 1 << KBD_COL2; PORT(PORT_COL3) |= 1 << KBD_COL3; PORT(PORT_COL4) |= 1 << KBD_COL4;
// Wiersz 1 PORT(PORT_ROW) &= ~(1 << KBD_ROW1); // sprawdzanie kolumn if (!(PIN(PORT_COL1) & (1 << KBD_COL1))) tmp = 1; if (!(PIN(PORT_COL2) & (1 << KBD_COL2))) tmp = 2; if (!(PIN(PORT_COL3) & (1 << KBD_COL3))) tmp = 3; if (!(PIN(PORT_COL4) & (1 << KBD_COL4))) tmp = 10; // [ENTER] PORT(PORT_ROW) |= 1 << KBD_ROW1; // Wiersz 2 [...] </code>