Стробирование

Матричная клавиатура 4х4

Когда писал об организации меню в МК использовал клавиатуру 2х2 и не описал какой принцип сканирования клавиатуры. Сейчас хочу исправить это упущение. 
Давайте подключим к МК клавиатуру 4х4. Каков же принцип работы такой клавиатуры? На самом деле все довольно просто:
  1. У нас есть биты порта настроенные на выход (в нашем случае будут биты 0-3 PORTD) и есть биты настроенные на вход (биты 4-7 PORTD).
  2. На выходах единица. На входах включен подтягивающие резисторы.
  3. Устанавливаем один из битов выхода в нуль и проверяем все входы порта на нуль. Если на входе везде единица, тогда устанавливаем следующий бит в нуль и снова проверяем входы на нуль и т.д. до последнего бита выхода, а затем начинаем заново. Если, например, мы установили бит 0 в нуль и при проверке входов на бите 4 обнаружен нуль, тогда мы считаем что была нажата кнопка и функция возвращает код кнопки. С которым мы дальше и работаем в основной программе.  
Далее...