CODE:
/*********************************
программа для компилятора WinAVR
*********************************/
#include <avr/io.h>
#include <util/delay.h>
int main(void) /* начало основной программы */
{
DDRB &= (~(1<<0)); /* PB0 сконфигурировать как вход, концевик 1 */
DDRB &= (~(1<<1)); /* PB1 сконфигурировать как вход, концевик 2 */
PORTB |= (1<<0); /* PB0 установить "1", включаем подтягивающий резистор */
PORTB |= (1<<1); /* PB1 установить "1", включаем подтягивающий резистор */
DDRC |= (1<<1); /* PC1 сконфигурировать как выход, драйвер двигателя 2 */
DDRC |= (1<<2); /* PC2 сконфигурировать как выход, драйвер двигателя 2 */
DDRC |= (1<<3); /* PC3 сконфигурировать как выход, драйвер двигателя 1 */
DDRC |= (1<<4); /* PC4 сконфигурировать как выход, драйвер двигателя 1 */
/* мотор 2 остановлен */
PORTC |= (1<<1); /* PC1 установить "1" */
PORTC |= (1<<2); /* PC2 установить "1" */
/* мотор 1 включен */
PORTC |= (1<<3); /* PC3 установить "1" */
PORTC &= (~(1<<4)); /* PC4 установить "0" */
while(1) /* бесконечный цикл */
{
/* проверка концевика 1 */
if( !(PINB & (1<<0)) ) /* проверить "0" на PB0 */
{
/* остановить мотор*/
PORTC |= (1<<3); /* PC3 установить "1" */
PORTC |= (1<<4); /* PC4 установить "1" */
_delay_ms(10000); /* временная задержка */
/* включить мотор в одну сторону */
PORTC |= (1<<3); /* PC3 установить "1" */
PORTC &= (~(1<<4)); /* PC4 установить "0" */
_delay_ms(100); /* временная задержка */
}
/* проверка концевика 2 */
if( !(PINB & (1<<1)) ) /* проверить "0" на PB1 */
{
/* остановить мотор */
PORTC |= (1<<3); /* PC3 установить "1" */
PORTC |= (1<<4); /* PC4 установить "1" */
_delay_ms(10000); /* временная задержка */
/* включить мотор в другую сторону */
PORTC &= (~(1<<3)); /* PC3 установить "0" */
PORTC |= (1<<4); /* PC4 установить "1" */
_delay_ms(100); /* временная задержка */
}
} /* закрывающая скобка бесконечного цикла */
} /* закрывающая скобка основной программы */
Если схему рассмотрел правильно, то должно работать (Отредактировано автором: 18 Июля, 2010 - 17:08:57) |