- Код: Выделить всё • Развернуть
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{DDRB = 0xff;
DDRD = 0x00;
PORTD = 0x00;
while(1)
{ if (!(PIND & (1<<PIND6)))
{ PORTB |= _BV(PB0); //1
PORTB &= ~_BV(PB1); //0
PORTB |= _BV(PB2); //1
PORTB &= ~_BV(PB3); //0
}
else
{ PORTB |= _BV(PB1); //1
PORTB &= ~_BV(PB0); //0
PORTB |= _BV(PB3); //1
PORTB &= ~_BV(PB2); //0
}
}
}
суть вот в чем - движки изначально крутятся допустим (вправо), если свет падает на фотодиод то подается сигнал и движки начинают крутиться в другую сторону(влево), цикл идет заново, и если свет не попадает, то движки крутятся опять как и раньше (вправо) пока на диод опять не упадет свет. В протеусе моделирую схему, все работает как только на диод падает свет вижки меняют направление, но если свет убрать, то невозвращаются в нужную сторону, т.е. цикл бесконечный не пашет. Извиняюсь за путаное объяснение, вообщем, подскажите может гддето чтото напортачил... кроме этого использовал еще for(;;) тоже непомогло.