логика работы ключей должна диктоваться сугубо хардварно, софтовая часть должна только "рекомендовать" изменить Ton. А решение принять эту "рекомендацию" или стопорнуться принимать в отдельном прерывании. Защита от белого дыма тоже должна быть хардварной - имхо