Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С полностью

/* Система управления роботом, движущимся в лабиринте: это система  */

/* состоящих из излучателя и приемника, чтобы определять свое положение*/

/* относительно стенок лабиринта.                                   */

/* опорного напряжения, то стенка находится в непосредственной близости*/

/* от робота.Основываясь на информации, получаемой от пяти датчиков,*/

/* робот может определять, какое направление дальнейшего движения   */

/* избрать, чтобы избежать столкновения со стенками лабиринта.      */

/* Датчик Холла позволяет роботу обнаружить магниты или "скрытые мины",*/

/* установленные под полом лабиринта. Робот имеет также ЖК дисплей  */

/* для сообщения информации пользователю. Программа использует метод*/

/* полинга для считывания результатов АЦП.Сигнал модуля ШИМ         */

/* управляет драйвером двигателей колес робота.                     */

/*Автор: Томас Шеи. Дата создания: 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 с */

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже