break;
case 3:
DDRD |= (1<<3);
PORTD &= ~(1<<3);
break;
case 4:
DDRD |= (1<<4);
PORTD &= ~(1<<4);
break;
case 5:
DDRD |= (1<<5);
PORTD &= ~(1<<5);
break;
}
}
修改为:
复制代码
-
/* Column configuration
-
* col: 0 1 2 3
-
* pin: PB1 PB3 PB2 PB6
-
*/
-
static void init_cols(void)
-
{
-
// Input with pull-up(DDR:0, PORT:1)
-
DDRB &= ~(1<<PB1 | 1<<PB3 | 1<<PB2 | 1<<PB6);
-
PORTB |= (1<<PB1 | 1<<PB3 | 1<<PB2 | 1<<PB6);
-
-
}
-
-
/* Column configuration
-
* col: 0 1 2 3
-
* pin: PB1 PB3 PB2 PB6
-
*/
-
static matrix_row_t read_cols(void)
-
{
-
return (PINB&(1<<PB1) ? 0 : (1<<0)) |
-
(PINB&(1<<PB3) ? 0 : (1<<1)) |
-
(PINB&(1<<PB2) ? 0 : (1<<2)) |
-
(PINB&(1<<PB6) ? 0 : (1<<3));
-
}
-
-
/* Lotpad Row configuration
-
* row: 0 1 2 3 4
-
* pin: PC6 PD7 PE6 PB4 PB5
-
*/
-
static void unselect_rows(void)
-
{
-
// Hi-Z(DDR:0, PORT:0) to unselect
-
DDRD &= ~0b10000000;
-
PORTD &= ~0b10000000;
-
-
DDRC &= ~0b01000000;
-
PORTC &= ~0b01000000;
-
-
DDRB &= ~0b00110000;
-
PORTB &= ~0b00110000;
-
-
DDRE &= ~0b01000000;
-
PORTE &= ~0b01000000;
-
}
-
-
/* Row configuration
-
* row: 0 1 2 3 4
-
* pin: PC6 PD7 PE6 PB4 PB5
-
*/
-
static void select_row(uint8_t row)
-
{
-
// Output low(DDR:1, PORT:0) to select
-
switch (row) {
-
case 4:
-
DDRC |= (1<<6);
-
PORTC &= ~(1<<6);
-
break;
-
case 3:
-
DDRD |= (1<<7);
-
PORTD &= ~(1<<7);
-
break;
-
case 2:
-
DDRE |= (1<<6);
-
PORTE &= ~(1<<6);
-
break;
-
case 1:
-
DDRB |= (1<<4);
-
PORTB &= ~(1<<4);
-
break;
-
case 0:
-
DDRB |= (1<<5);
-
PORTB &= ~(1<<5);
-
break;
-
}
-
}
如果你的IO不同,请自行修改。
然后是修改Config.h,这里是定义按键个数的:
复制代码
-
/* key matrix size */
-
#define MATRIX_ROWS 6
-
#define MATRIX_COLS 4
改为:
复制代码
-
/* key matrix size */
-
#define MATRIX_ROWS 5
-
#define MATRIX_COLS 4
之后是修改keymap_common.h
复制代码
-
/* GHPad keymap definition macro
-
*/
-
#define KEYMAP( \
-
K0A, K0B, K0C, K0D, \
-
K1A, K1B, K1C, K1D, \
-
K2A, K2B, K2C, K2D, \
-
K3A, K3B, K3C, K3D, \
(责任编辑:admin)
|