Просто необходимо почитать про внутреннюю конфигурацию МК, тогда будет более понятно, что он из себя представляет и как им рулить. В двух словах о внутреннем резисторе… у пина внутри МК есть резистор от 20 кОм до 50 кОм. Его иногда задействуют для различных нужд. Для кнопок это очень удобно при их использовании, так как нет необходимости устанавливать дополнительные резисторы. Ты ведь кнопкой, пин замыкаешь с общим проводом, что соответствует лог. 0. А при размыкании на пин нудно подать лог. 1. Так как если ничего не подавать, пин МК будет в Z состоянии (то есть, как бы оторван, на нём нет ни 0 ни 1). В таком случае необходим подтягивающий резистор к плюсу питания. Так вот, зачем устанавливать внешний подтягивающий резистор, когда он есть внутри у каждого пина порта. Вот настройка регистров порта и позволяет подтянуть его к плюсу питания внутри МК. А вот подтянуть его к общей шине, не получится, так как последовательно резистору стоит диод.
Если пин порта настроен на вход (0 -> DDRN.n) а в регистр порта установить 1 (1 -> PortN.n), то этот пин подтянут к плюс питания через внутренний резистор. Читая состояние входного регистра (PinN.n) определяется, нажата кнопка или нет.
Вот тебе и в двух словах…
