Контрольные задания > Проанализируйте программу, определите тип датчиков и подберите подходящий алгоритм. Номер верного ответа укажите в поле для ввода.
Вопрос:
Проанализируйте программу, определите тип датчиков и подберите подходящий алгоритм. Номер верного ответа укажите в поле для ввода.
Алгоритм №1 соответствует описанной программе.
Разберем программу по шагам:
1. `#include `
`#include `
Включаем необходимые библиотеки.
2. `const unsigned char RIGHT = 0b00000001;`
`const unsigned char LEFT = 0b00000100;`
`const unsigned char UP = 0b00000101;`
Определяем константы для управления моторами.
3. `void PWM (char vector)`
`{`
`PORTC = vector;`
`delay_us (84);`
`PORTC = 0;`
`delay_us (16);`
`return;`
`}`
Функция PWM для управления скоростью моторов.
4. `void main(void)`
`{`
`DDRD = 0x00;`
`DDRC = 0xFF;`
Устанавливаем направления портов.
5. `while (1)`
`{`
Бесконечный цикл.
6. `if (PIND.0 && PIND.1)`
`{`
`PWM (UP);`
`continue;`
`}`
Если оба датчика активны, то едем прямо.
7. `else`
`if (PIND.0)`
`{`
`PWM (RIGHT);`
`continue;`
`}`
Если активен только левый датчик, то вращаем правый мотор.
8. `else`
`{`
`if (PIND.1)`
`{`
`PWM (LEFT);`
`continue;`
`}`
`else PORTC = 0;`
`}`
Если активен только правый датчик, то вращаем левый мотор, иначе останавливаемся.
`}`
`return;`
`}`
Таким образом, программа использует два датчика (PIND.0 и PIND.1) и, в зависимости от их состояния, управляет моторами робота. Алгоритм №1 наиболее точно отображает логику этой программы. Следовательно, правильный ответ - 1.