СКАЗОЧНИК писал(а):Есть, где такая логика еще расписана другим языком?
насколько я вкурсе, такую логику никто ранее не применял

а она проста.
1. сначала мы определяем, на каких столбцах есть нажатые кнопки. для этого сразу на все строки мы подаем активные уровни.
2. активные уровни - это такие, которые система "замечает" при нажатии кнопки. в нашем случае, система заметит, если на вход с подтяжкой (лог.1) придет твердый ноль. поэтому мы выдаем нули на все строки и смотрим, куда эти нули дошли на столбцах.
3. затем меняем местами роли строк и столбцов, но теперь подаем не на все линии подряд, а только на те, которые обнаружили на первом этапе. и тогда мы узнаем, с каких строк дошли эти уровни.
так понятнее?
попробую битами.
1. настроили столбцы на входы с подтяжкой, строки - выходы с нулем. на порту получилось 00001111
2. если мы нажали кнопку на пересечении
третьей строки и
третьего столбца, на порту получилось 00001101
3. запомнили это значение с инверсией. нас интересуют только столбцы, т.е. 4 бита. получили 00000010
4. теперь меняем строки и слолбцы ролями, делая столбцы выходами, а строки входами с подтяжкой. то есть мы бы получили в этом случае 11110000, но так как на столбцы мы подаем ранее считанные биты (0010) с инверсией (1101), то получаем, что 0 с третьего столбца через нажатую кнопку попадает только на столбец 3, т.е. имеем на порту 11011101.
5. запоминаем состояние столбцов с инверсией 0010.
6. итак, получили строки 0010 и столбцы 0010 - кнопка нажата на пересечении третьего столбца и третьей строки.
7. сделали один общий байт 00100010 и радуемся коду нажатой кнопки.
8. для борьбы с дребезгом и отсечению вариантов, когда кнопку отпустили между опросами половинок, следует убедиться, что каждая тетрада ненулевая, т.е. что там есть хоть 1 бит. если это не так - результат надо игнорировать.
9. ну и делать это надо периодически, в каком-то прерывании. я делаю 1 раз в 20 мс, и никаих дополнительных мер по дребезгу не требуется.
Ivanoff-iv писал(а):при таком опросе нельзя сразу несколько кнопок нажимать
теперь вы видите, что сможет? во всяком случае до тех пор, пока это позволяет схема матрицы кнопок без развязывающих диодов.