Там не рандомное состояние...
Собственно речь о чем идет...
Исключительно статус сброса при подаче питания рассматриваем.
Во время действия импульса сброса понятно что у нас все что угодно на шинах портов будет.
Пока запустится генератор, пока внутренний автомат приведет все в соответствие документации - на то и предусматривается импульс сброса.
По его окончанию все регистры должны быть приведены в соответствие начальному состоянию - для mcs51 это 0xFF (смотрим таблицы состояния регистров РСФ после сигнала reset в даташитах на МК).
Это в теории и даташите. На практике для атмелевских АТ89..... вот тут и возникает данный "проброс" - именно после окончания импульса сброса и до определенного случайным стечением обстоятельств момента на шинах портов присутствует 0, а не 1.
Причем от практически незаметного для остальной части схемы до весьма ощутимого (по индикации) времени воздействия.
Меры противодействия к сожалению будут определяться конкретной схемотехникой изделия. От практически никаких - если длительность того нулика не влияет на периферию до достаточно сложных, если длительности нулика будет достаточно для запуска силовых модулей...
Обычно ведь активным сигналом в подавляющем большинстве случаев является 0.
Насчет "абсолютно задавить"...
В ситуации с "мусором на TXD" который мне на нерву действовал лишним мусором в окне терминалки я извратился до следующей схемы:
https://img.radiokot.ru/files/20529/2lx9x8dxzz.JPG на данный момент /sys_res копия reset - генерируется специально для того сделанной схемкой.
А первичный проброс на el_led парируется СПУ триггера и последующим /sys_res, разблокировка шины будет выполнена только полноценным -_- на el_led после запуска программы в МК.
Казалось бы проблема решена терминалка весьма долго не регистрировала "мусор"...
До... добавления в комплект весьма крупной платки, коей является fb4012.
После того снова "хвостик" с грязючкой стал отмечаться - правда с иным визуальным отображением (код ошибочно принятого байта не смотрел).
Собственно к тому же удаленно размещенному блоку питания (5В 2А) добавилась весьма малокушаюшша платка.
Однако на той платке и кондейки по питанию и длина соединительных шлейфов/дорожек имеет место.
Вероятно эти добавки и потянули увеличение длительности "проброса", парировать которую первичная схема противодействия уже не так корректно может.
Но это только мои предположения в данной ситуации по имеющимся наблюдениям.
По хорошему надо таки логический анализатор с запуском по подаче питания и отслеживанием как уровня на reset, так и уровней на выводах портов...
Да при разных нагрузках и блоках питания тесты делать.
Как вариант - "сквозной системный сброс", заведенный на ответственную периферию. Только вот для системных устройств он должен быть длиннее чем для МК. А вот насколько - тоже под вопросом...
Может еще когда при следующей самоделке тому внимание уделю... Попробую сделать /sys_res монитора питания и сброса на какое-то время длиннее, чем reset для МК - там всего-то подправить чуток прожку в аттини13...
Стоит добавить еще одну "пагубную привычку" -
за последнее время "всеобщей мобилизации" стало привычным использовать расплодившиеся импульсники...
Собственно понижайки из 220 в 5 - 12 вольт.
Работают они весьма устойчиво, однако имеют очень длинные "хвосты" для низковольтной стороны.
Опять же для устройств с внутренним преобразованием в более низкое напряжение или для простых схем это особого значения не имеет.
Но в случае с достаточно "навороченной" платкой следует отдать предпочтение расположенному в нескольких сантиметрах блоку DC-DC преобразователя, питаемого "удаленным" промежуточным источником относительно низкого напряжения (~/= 9-24вольта).