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

 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 */

 {

  ;

 }

}

/********************************************************************/

/********************************************************************/

/*read_adc: считывание результатов из АЦП                           */

/********************************************************************/

void read_adc() {

 ATDCTL5 = 0x50; /*Установить АЦП на режим многоканального,*/

                 /* преобразования 8 каналов */

 while((ATDSTAT & 0x8000) == 0)/* проверка бита SCF для окончания */

                               /*преобразования */

 {

  ;

 }

 /* сохранения результата в глобальном массиве */

 sens[0] = ADR7H; /*дальний левый датчик */

 sens[l] = ADR6H; /*средний правый датчик */

 sens[2] = ADR5H; /*центральный датчик */

 sens[3] = ADR4H; /* средний правый датчик */

 sens[4] = ADR3H; /* дальний правый датчик */

 sens[5] = ADR2H; /*датчик Холла*/

}

/********************************************************************/

/*decision(): решение о повороте основано на информации, полученной от*/

/* пяти датчиков. Порог датчика Холла (hes_threshold) и порог       */

/* оптического датчика (opto_threshold) определяются экспериментально.*/

/********************************************************************/

void decision() {

 if (sens[5] < hes_threshold) { /* датчик Холла нашел "мину", */

  pwm_motors(back_up); /* робот движется назад и определяются */

  /* дальнейшие действия/*

  if (sens[0] > opto_threshold) pwm_motors(right_turn);

  else pwm_motors(left_turn);

  for(i=0; i<0xFFFF; i++){ /*задержка вращения двигателя */

   for(j=0; j<15; j++) {

    ;

   }

  }

 }

 /*если обнаруживает три стенки (тупик), то движется назад */

 else if((sens[2]>opto_threshold) && (sens[0]>opto_threshold)

  && (sens[4]>opto_threshold)) {

  pwm_motors(back_up);

 }

 /*если стенки спереди и слева, поворачивает направо */

Перейти на страницу:

Похожие книги

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных