Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
а) Структура программы
б) Блок-схема алгоритма UML
Рис. 7.7. К программе управления роботом, движущимся вдоль стенок лабиринта
7.1.5. Программный код
/********************************************************************/
/*имя
файла: robot.c */
/* Система управления роботом, движущимся в лабиринте: это система */
/* состоящих из излучателя и приемника, чтобы определять свое положение*/
/* относительно стенок лабиринта. */
/* опорного напряжения, то стенка находится в непосредственной близости*/
/* от робота.Основываясь на информации, получаемой от пяти датчиков,*/
/* робот может определять, какое направление дальнейшего движения */
/* избрать, чтобы избежать столкновения со стенками лабиринта. */
/* Датчик Холла позволяет роботу обнаружить магниты или "скрытые мины",*/
/* установленные под полом лабиринта. Робот имеет также ЖК дисплей */
/* для сообщения информации пользователю. Программа использует метод*/
/* полинга для считывания результатов АЦП.Сигнал модуля ШИМ */
/* управляет драйвером двигателей колес робота. */
/*Автор: Томас Шеи. Дата создания: 18 октября 2002 */
/*Последняя редакция: 4 декабря 2002 */
/********************************************************************/
/* Включенные файлы*/
#include <912b32.h>
#include <stdio.h>
/*Пороги датчиков были определены экспериментально*/
#define opto_threshold 0x50 /* порог оптического датчика */
#define hes_threshold 0x80 /* порог датчика Холла */
#define forward 0
#define half_left 1
#define half_right 2
#define left_turn 3
#define right_turn 4
#define back_up 5
/*глобальные переменные*/
unsigned int i=0,j=0; /*переменные для программной задержки */
unsigned char sens[6]={0, 0, 0, 0, 0, 0};/*массив результатов АЦП */
/*прототипы функций*/
void init_adc(void); /*инициализация АЦП */
void read_adc(void); /*считывание
значений АЦП */
void decision(void); /*передача решения о повороте, основанного на */
/*данных АЦП* /
void init_pwm(void); /*инициализация ШИМ */
void pwm_motors(const char a); */активация ШИМ для пересылки */
void lcd_init(void); /* инициализация дисплея */
int putchar(char c); /*вывод символа на дисплей */
int putcommand(char с); /*вывод команды на дисплей */
void delay_25(void); /*подпрограмма задержки на 2,5 с */
void lcd_print(char *string); /*вывод строки на ЖК дисплей */
void main {
asm(".area vectors(abs)\n" /*инициализация вектора сброса МК */
" org 0xFFF8\n"
" .word 0x8000, 0x8000, 0x8000, 0x8000\n"
".text");
lcd_init; /*инициализация ЖК дисплея */
lcd_print("LCD initialized");
void delay_25(void); /* задержки на 2,5 с */
init_adc; /*инициализация АЦП */
lcd_print("ADC initialized");
void delay_25(void); /* задержки на 2,5 с */
init_pwm; /*инициализация ШИМ */
lcd_print("PWM initialized");
void delay_25(void); /* задержки на 2,5 с */
while(1) / *непрерывный цикл */
{
read_adc; /* считать текущее значение из АЦП */
decision; /* принять решение о направлении движения */
}
} /*конец программы main*/
********************************************************************/
/*initialize_adc: инициализация АЦП контроллера 68HC12 */
/*******************************************************************/
void init_adc {
ATDCTL2 = 0x80; /*Установить бит ADPU для подачи питания на АЦП */
ATDCTL3 = 0x00;
ATDCTL4 = 0x7F; /* частоту P_CLK установить на 125 кГц */
/* время преобразования: 32 ATD CLK, */
/*1 считывание каждые 256 мкс /*
for(i=0; i<67; i++) /*задержка 100 мкс при 8 МГц E_CLK */
{
;
}
Поделиться:
Популярные книги
Тройняшки не по плану. Идеальный генофонд
Роковые подмены
Любовные романы:
современные любовные романы
6.80
рейтинг книги
Барон играет по своим правилам
5. Закон сильного
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Завод-3: назад в СССР
3. Завод
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Секретарь лорда Демона
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Отец моего жениха
Любовные романы:
современные любовные романы
7.79
рейтинг книги
Идеальный мир для Лекаря 10
10. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Я тебя не отпущу
4. Оголенные чувства
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Бастард Императора. Том 7
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Девочка из прошлого
3. Айдаровы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Вернуть невесту. Ловушка для попаданки 2
2. Вернуть невесту
Любовные романы:
любовно-фантастические романы
7.88
рейтинг книги
Идеальный мир для Лекаря 7
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Хозяйка дома на холме
1. Хозяйка своей судьбы
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Жена проклятого некроманта
Фантастика:
фэнтези
6.60
рейтинг книги
Имя нам Легион. Том 9
9. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00