Прощу помощи, т.к. уже весь мозг себе взорвал. Пытаюсь сделать кодовый замок на клавиатуре, состоящей из 3 кнопок. Все примеры в сети только для клавиатур 4х4 или 3х4. Нашёл неплохой пример кода под авр на сайте http://datagor.ru/mi...yjj-zamok..html Хочу попробовать портировать его под msp430, но никак не могу понять функцию опроса клавиатуры.
Буду очень благодарен, если кто-нибудь сможет объяснить как переделать это под мою задачу. Смена пароля в моём случае не требуется.
Раздел: Другие микроконтроллеры и семейства
char key_press() // функция опроса клавиатуры
{
while(1)
{
while((~PIND & 0b01111000)!=0); // ничего не делать, пока не отпустят кнопку
for(i=0;i<3;i++) // перебор столбцов
{
PORTD=0xff & ~(0x01 << i);
for(j=3;j<7;j++) // пребор строк
{
if((PIND & (0x01 << j))==0) // проверка нажатия на кнопу
{
delay_ms(100); // пауза для исключения дребезга контактов
if(buttons[i][j-3]=='*') // дополнительная проверка для кнопки смены пароля
{
for(k=0;((PIND & (0x01 << j))==0 && k<100);k++)
{
delay_ms(50);
}
if((PIND & (0x01 << j))==0) // если удерживаем кнопку смены пароля больше 5 сек
{
state=1; // то устанавливаем состояние 1 (смена пароля)
return 0; // и выходим из функции, возвращая вместо символа ноль
}
else return buttons[i][j-3]; // если меньше 5 сек, то возвращаем символ
}
if((PIND & (0x01 << j))==0) return buttons[i][j-3]; // возвращаем символ
}
}
}
}
}
Буду очень благодарен, если кто-нибудь сможет объяснить как переделать это под мою задачу. Смена пароля в моём случае не требуется.
Раздел: Другие микроконтроллеры и семейства