Непонятно из-за чего сделано заключение, что повторная запись 1-цы устанавливает пин в ноль. Может иллюзия возникла из-за этого присутствующего куска кода:
Код
if(PINB.6==0)
{
PORTB |= 1<<3;
delay_ms(500);
PORTB &= ~(1<<3);
}
if(PINB.5==0)
{
PORTB |= 1<<4;
delay_ms(500);
PORTB &= ~(1<<4);
}
Тогда все логично. Если нет, оставьте минимальный код с проблемой. Сейчас выложенный код работает как и должен. Разумеется, надо исправить ошибку, на которую указала Xenia...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...