И не сообразиш, надо сначала посмотреть как это делают другие. Я тоже подсмотрел. Вот фрагмент из нашего переключателя режимов. Мною усвоеный ещё со времён "Эл-60"...PAVEL писал(а):...,несоображу как правельно алгоритм составить, выбор режима .
Есть множество и других, но тебе пока хватит этого, как самого убойного.
Итак, записываем в какой-то регистр Х (16-и разрядный, см. даташит) выбранное на халяву не слабое число, в моём случае 15000.
Копируем порт В в R12. И верёвок на порте 8 и регистр восьмиразрядный.
Инвертируем регистр R12. Это делается чисто для удобства потом наблюдать, ведь нам удобнее считать, что нажатая кнопка даёт елиницу, а она фактически подпаяна к нулю.
Но кнопка-то одна, а разрядов 8, чтобы не сбиваться остальные разряды маскируем, т.е. накладываем маску. Эта маска в нашем случае получилась шеснадцатиричное число $DF. $-признак шеснадцатиричности. Маска тупо сбрасывает остальные, не нужные нам разряды.
В регистре R13 сохранён результат предыдущего чтения. Вот мы и сравниваем, текущее чтение такое же или изменилось? Если изменилось, то значит это был дребезг, тогда мы опять загоняем в Х 15000 и всё поновой, пока на входе мы не получим единицу 15000 раз подряд.
После каждого R12=R13 следует X-- т.е. отнимаем единицу. И когда Х станет равен нулю выходим из п/программы (RET) с полной уверенностью что кнопка точно нажата. Ведь мы её проверили 15 тыш раз.