По идее да, будет досчитывать.
А почему не разбить всю паузу на мелкие? Допустим, кнопку вы держите более 2 мс. Тогда(извините за Делфи вперемешку с Си):
- Код: Выделить всё
const d=4800;
...
// Place your code here
while true do
begin
display;
if PIND.2=0 then pusk else begin stop; for i:=1 to d do begin if PIND.2=0 then break; delay_ms(2) end end;
end;
Таким образом, вы осуществляете задержу и, если в это время кнопочка оказалось нажатой, осуществляете запуск. Конечно, желательно бы это завернуть в ф-ию stop и в качестве параметра передавать кнопочку, за которой надо следить.
Т.к. внутри цикла вы осуществляете(помимо задержки) другие операторы, то надо конструкцию прогнать в симуляторе и опытным путем определить значение d.
И все-таки, использование таймера было бы лучшим решением, поскольку стопорить мк на 10(!) секунд просто кощунство какое-то. Освободившееся время можно пустить, например, на перерисовку дисплея.
А реле может держать ШИМ? Что-то мне подсказывает, что релюшка способна держать лишь ограниченную частоту, причем довольно низкую.