MCUCR (бит PUD
В меге8а бит PUD находится в SFIOR (стр.62 pdf). В разных МК биты могут в разных регистрах, засада, смиритесь и помните.
PINx служит для считывания состояния входа, но если в него записать 1, то происходит переключение PORTx на противоположное независимо от DDRx.
Происходит именно переключение регистра, не вывода! И да, независимо от DDRx. Это первое.
Второе,
эта фича в меге8а не реализована! Посмотрите на схему порта (Figure 13-2 на стр.57
pdf), там нет обратной связи из PORTx через мультиплексор сразу же обратно в PORTx прямо над триггером PORTx, как например в более новой мега324P (стр.96
pdf).
Поэтому надо всегда держать под рукой актуальный pdf именно на свой МК и постоянно с ним сверяться. Особенно по советам и исходникам из сети (тем более если там прямо не указано к какому МК они относятся).
По умолчанию все эти регистры после включения содержат нули. Т.е. это входы без подтягивающих резисторов.
Про обычные выводы да, Вы всё поняли правильно. Но есть куча исключений/тонкостей.
Для вывода может действовать сигнал альтернативной функции (PUOEx=1, см. схему вывода на стр.57 pdf и таблицы далее). Под ресетом такое возможно только для:
PC6(RESET) если RSTDISBL=1, т.е. вывод используется как RESET и на нём обязательно будет подтяжка независимо от DDR, PORT, PUD;
PB7,PB6 - если они используются для тактирования (CKSEL fuse), подтяжка будет отключена;
PB5,PB4,PB3 - используются при ISP, про подтяжку не сказано, вероятно нет, но на 100% не уверен, а проверять на живой меге лень. Плюс про SCK сказано (стр.228 pdf) что вход в режим ISP будет только если SCK=0 в момент подачи RESET=0 - потому весьма полезно иметь подтяжку к VCC на SCK для исключения случайного запуска режима перепрошивки при активном RESET=0, пусть даже наводки вряд ли совпадут с командами ISP, но подтянуть SCK ещё повысит надёжность.
Для
других мег надо тоже внимательно смотреть какие выводы могут быть активными под ресетом (например выводы JTAG при fuse JTAGEN=0, а он такой по умолчанию, это вечная засада если они как-то используются, они просто недоступны программно, сколько раз натыкался, не однажды приходилось офигевать на экран осцила и потом платы переразводить).
Если же не дай Бог, сразу записать 1 в DDRx, конфигурируя его как выход, то на нём появится низкоимпедансный 0 и ключ IRLML2244 откроется. Можно его конечно потом закрыть, записав 1 в PORTx, но за это время успеет проскочить импульс, как минимум в такт.
Да, порядок записи в PORT и DDR бывает важен, Вы правы. Причём для переключения в 0 и в 1 может потребоваться разный порядок записи этих регистров (например если нужен выход с открытым коллектором/стоком). Надо просто об этом помнить.
Ещё надо помнить что вместо записи в PORT и DDR
намного лучше всегда делать их модификацию (|= или &= или ^=) - чтобы не дай бог тронуть другие биты. Лучше сделать 8 операций |= чем одну запись. Исключение - критичные участки кода (типа прерываний), но тогда нужно быть особенно внимательным и аккуратным.
И нет, в такт не уложится, минимум два: ldi+out. А компиляторы любят вместо out делать sts за два такта (ради единообразия доступа к памяти), а то и константу читать из flash (ldi+ldi+lpm за 5 тактов) из области начальных значений переменных, итого может и до 7 тактов дойти ... Да, я перфекционист и не доверяю компиляторам с языков высокого уровня (только с асма), сколько раз как гляну в асм код после них - так волосы дыбом и неуёмное желание переписать вот буквально вообще всё на асме.

Чтобы такого не было, вместо КМОП ключа можно использовать повторитель тока на биполярном тр. Тогда при конфигурировании ножки как выход она будет в состоянии 0, а повторитель будет закрыт.
Я не уверен что правильно понимаю что такое "повторитель тока на биполяре". Вы даже полярность биполяра не указали, pnp или npn. Если
эмиттерный повторитель npn и в плюсе, эмиттером к нагрузке, то на нём же будет падать напряжение база-эмиттер независимо от тока и базы (ну почти, в ключевом режиме, мы же про него) и коллектора, это примерные 0.6В (0.45В-0.75В), при том что просто на ножке порта падает расчётно 0.12В - ну и зачем такой биполяр тогда?!