- Код: Выделить всё • Развернуть
- #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(;;) тоже непомогло.









