Чтение онлайн

на главную - закладки

Жанры

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 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 */

 {

;

 }

Поделиться:
Популярные книги

Дракон с подарком

Суббота Светлана
3. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
6.62
рейтинг книги
Дракон с подарком

Бывшие. Война в академии магии

Берг Александра
2. Измены
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Бывшие. Война в академии магии

Мастер клинков. Начало пути

Распопов Дмитрий Викторович
1. Мастер клинков
Фантастика:
фэнтези
9.16
рейтинг книги
Мастер клинков. Начало пути

Имя нам Легион. Том 8

Дорничев Дмитрий
8. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 8

Измена. Право на счастье

Вирго Софи
1. Чем закончится измена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на счастье

Начальник милиции 2

Дамиров Рафаэль
2. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции 2

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Измена. Мой заклятый дракон

Марлин Юлия
Любовные романы:
любовно-фантастические романы
7.50
рейтинг книги
Измена. Мой заклятый дракон

Предатель. Цена ошибки

Кучер Ая
Измена
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Предатель. Цена ошибки

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Рождение победителя

Каменистый Артем
3. Девятый
Фантастика:
фэнтези
альтернативная история
9.07
рейтинг книги
Рождение победителя

Барону наплевать на правила

Ренгач Евгений
7. Закон сильного
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Барону наплевать на правила

Камень. Книга шестая

Минин Станислав
6. Камень
Фантастика:
боевая фантастика
7.64
рейтинг книги
Камень. Книга шестая

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь