Skip to content

Instantly share code, notes, and snippets.

@BenBergman
Last active August 29, 2015 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BenBergman/8eeb786ab992ca8a0da2 to your computer and use it in GitHub Desktop.
Save BenBergman/8eeb786ab992ca8a0da2 to your computer and use it in GitHub Desktop.
/* Row pin configuration
* row: 0 1 2 3 4 5 6 7 8 9 10 11
* pin: F0 F1 F4 F5 F6 F7 C6 C7 D5 D6 D7 E6
*/
static void unselect_rows(void)
{
// Hi-Z(DDR:0, PORT:0) to unselect
DDRF &= ~0b11110011; // PF: 7,6,5,4,1,0
PORTF &= ~0b11110011;
DDRC &= ~0b11000000; // PC: 7,6
PORTC &= ~0b11000000;
DDRD &= ~0b11100000; // PD: 7,6,5
PORTD &= ~0b11100000;
DDRE &= ~0b01000000; // PE: 6
PORTE &= ~0b01000000;
}
static void select_row(uint8_t row)
{
// Output low(DDR:1, PORT:0) to select
switch (row) {
case 0:
DDRF |= (1<<0);
PORTF &= ~(1<<0);
break;
case 1:
DDRF |= (1<<1);
PORTF &= ~(1<<1);
break;
case 2:
DDRF |= (1<<4);
PORTF &= ~(1<<4);
break;
case 3:
DDRF |= (1<<5);
PORTF &= ~(1<<5);
break;
case 4:
DDRF |= (1<<6);
PORTF &= ~(1<<6);
break;
case 5:
DDRF |= (1<<7);
PORTF &= ~(1<<7);
break;
case 6:
DDRC |= (1<<6);
PORTC &= ~(1<<6);
break;
case 7:
DDRC |= (1<<7);
PORTC &= ~(1<<7);
break;
case 8:
DDRD |= (1<<5);
PORTD &= ~(1<<5);
break;
case 9:
DDRD |= (1<<6);
PORTD &= ~(1<<6);
break;
case 10:
DDRD |= (1<<7);
PORTD &= ~(1<<7);
break;
case 11:
DDRE |= (1<<6);
PORTE &= ~(1<<6);
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment