Цитата(ilglbv @ Aug 26 2012, 23:21)

Пытаюсь поиграться с регистом PIN, вроде все варианты перепробывал, но не получается(((
Не помешало бы указать тип МК: так как у разных типов разные возможности для "игр" с PINx.
У mega8/16/../128 PINx - только для чтения состояния порта, а у mega48/88../328 - PINx может быть использован для инвертирования выхода.
Цитата(ilglbv @ Aug 26 2012, 23:21)

DDRC = 01111111;
PORTC = 10000000;
while (1){
if (PINC0 == 0)
{PORTB |= (1<<5);
В двоичном пишу потому что стал думать может в хексе запутался((
DDRC = 01111111; - настройка порта С на выход?
Тогда PORTB |= (1<<5) зачем? Подключить подтягивающие резисторы в порте B?
DDRB = 0xFF; было бы логичней.
И вообще кстати непонятна цель вашей программы- вывести на PB5 "1" если на PC0 - высокий уровень? Или что-то другое?
Цитата(ilglbv @ Aug 26 2012, 23:21)

if (PINC0 == 0)
PINC0 это вот что:
#define PINC0 0
то есть ваш код
if (0 == 0)
.
Лучше так:
Код
if ((PINC&(1<<0))==0) { // если PC0 == 0
//....
}
Цитата(ilglbv @ Aug 26 2012, 23:21)

В двоичном пишу потому что стал думать может в хексе запутался((
Кому как, в bin проще запутаться - букв много, в hex-е меньше.