Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
- Название:Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
- Автор:
- Жанр:
- Издательство:Издательский дом «ДМК-пресс»
- Год:2007
- Город:Москва
- ISBN:5-9706-0034-2
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С краткое содержание
В книге последовательно рассматриваются все этапы создания встраиваемых систем на микроконтроллерах с применением современных технологий проектирования. Задумав эту книгу, авторы поставили перед собой задачу научить читателя искусству создания реальных устройств управления на однокристальных микроконтроллерах.
Издание содержит материал, охватывающий все вопросы проектирования, включает множество заданий для самостоятельной работы, примеры программирования, примеры аппаратных решений и эксперименты по исследованию работы различных подсистем микроконтроллеров.
Данная книга является прекрасным учебным пособием для студентов старших курсов технических университетов, которые предполагают связать свою профессиональную деятельность с проектированием и внедрением встраиваемых микропроцессорных систем. Книга также будет полезна разработчикам радиоэлектронной аппаратуры на микроконтроллерах.
Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
1 if (input > 78) // если температура по шкале Фаренгейта
//больше 78
2 air_condision = on; // то включить кондиционер
3 else
4 air_condision = off; //иначе выключить кондиционер
В этом примере переменная input содержит в себе код температуры окружающей среды, который программа должна подвергнуть сравнению с пороговым значением 78. Учитывая, что в процессе вычисления условия оператора if, программа возвращает значение внутренней логической переменной, то же действие можно записать, используя обратную логику:
1 if (input <= 78) //если температура меньше или равна 78
2 air_condision = off; //то выключить кондиционер
3 else
4 air_condision = on; //иначе включить кондиционер
3.9.3. Оператор IF-ELSE IF-ELSE
Операторы if могут быть вложенными. В этом случае служебное слово else (если оно используется) связывается с последним оператором if, с которым ещё не было связано else. Во избежание путаницы с вложенными операторами, лучше пользоваться фигурными скобками или структурировать текст отступами для явного указания того, к какому из операторов if принадлежит слово else. Примеры применения вложенных операторов if– else приведены ниже:
1 if (input > 78)
2 air_condision = on; //включить кондиционер, если жарко
3 else
4 if (input > 58)
5 fan = on; //включить вентилятор,если душно, но
//не жарко
6 else
7 heater = on; //включить обогреватель, если прохладно
8 …………
В этом примере программа должна различить, к какому из трех диапазонов принадлежит текущее значение температуры окружающей среды. Если температура превышает 78 градусов по Фаренгейту, то должен быть включен кондиционер. Если температура меньше 79 градусов, но больше 58, то следует оставить включенным только вентилятор, а если температура равна или ниже 58 градусов, то следует включить обогреватель.
Те же управляющие действия могут быть записаны с применением другой конструкции операторов if-else:
1 if (input > 78)
2 air_condision = on; //включить кондиционер, если жарко
3 if (input > 58)
5 fan = on; //включить вентилятор,если душно и жарко
6 else
7 heater = on; //включить обогреватель, если прохладно
Отличие этого варианта программы от предыдущего состоит в том, что оба оператора if–else стали независимыми друг от друга. А в предыдущем примере второй оператор if– else был вложен в первый. Это конструктивное изменение программы внесло коррективы в реализуемый ею алгоритм управления. Так в первом варианте при значении переменной input=80 выражение первого оператора if окажется истинным и будет включен кондиционер. И далее управление будет передано строке 8, т.е. вторая конструкция if будет пропущена из рассмотрения. Во втором случае при том же значении переменной input=80 после проверки первого условия будет также включен кондиционер, но затем управление будет передано второму оператору if. Поскольку второе условие также выполняется, то вентилятор будет также включен.
Еще один вариант реализации того же задачи:
1 if (input > 78)
2 air_condision = on; //включить кондиционер, если жарко
3 if ((input > 58) && (input < 79))
5 fan = on; //включить вентилятор,если душно, но не жарко
6 if (input < 59)
7 heater = on; //включить обогреватель, если прохладно
Проанализировав этот программный фрагмент, Вы увидите, что он соответствует первому варианту управления кондиционером, вентилятором и обогревателем. Логика построения этого программного фрагмента хорошо структурирована и позволяет реализовать множество разных действий при различных значениях переменной input. Причем ни одно действие по логике построения программы не будет сочетаться с каким либо другим из перечисленного списка:
1 if (condition 1)
2 (instruction set 1);
3 if (condition 2)
5 (instruction set 2);
6 if (condition 3)
7 (instruction set 3);
Если число различных значений переменной условия condition превышает 4 или 5, то для выполнения подобной задачи следует использовать оператор switch.
3.9.4. Оператор SWITCH
Данный оператор применяется, когда требуется передавать управление одному из нескольких операторов, в зависимости от значения выражения. Синтаксис оператора switch:
1 switch(<���выражение>)
2 {
3 case <���константное_выражение_1>:
4 <���оператор_1>;
5 break;
6 case <���константное_выражение_2>:
7 <���оператор_2>;
8 break;
9 :
10 :
11 case <���константное_выражение_n>:
12 <���оператор_n>;
13 break;
14 default :
15 <���оператор_n+1>;
16 }
Выполнение оператора switch начинается с вычисления выражения в скобках. Результат вычисления должен быть целочисленным в одно или двухбайтовом формате. Затем последовательно просматриваются префиксы case, указанные после них константные выражения вычисляются и их результаты сравниваются с результатом вычисления выражения в скобках после слова switch. Если результаты совпадают, то управление передаётся оператору, следующему за соответствующим префиксом case. Если ни одного совпадения не произошло и при этом указано служебное слово default (его указание необязательно), то управление передаётся оператору, следующему за этим служебным словом. Если совпадения не обнаружилось, а служебное слово default не указано, то ни один из операторов блока не выполняется. Заметим, что в константных выражениях после префиксов case не допускается применения переменных, выражение должно состоять из константных величин.
Приведем пример использования конструкции с оператором switch:
1 switch (a) {
2 case 1:
3 printf("Correct value%d was chosen\n", a);
4 break;
5 case 2:
6 printf("Close but try again\n");
7 break;
8 case 3:
9 printf("Value %d is two away from the answer\n", a);
10 break;
11 default:
12 printf("Your chosen value is way off\n");
13 }
В примере текущее значение переменной a сравнивается со значениями 1, 2 и 3. Желаемое сообщение о правильном выборе появится на экране монитора в том случае, если переменная равна 1. Если же переменная равна 2 или 3, то будут выведены соответствующие сообщения об ошибках. Если ни одно из трех возможных значений не выбрано, то отобразится сообщение, записанное в строке 12. Обратите внимание, в примере мы не должны записывать слово break в строке 13, т.к. после выполнения оператора строки 12 программа автоматически продолжит исполнение следующих за конструкцией switch операторов.
А как будет вести себя программа, если мы пропустим слово break где то в середине конструкции switch, например, в строке 4? После отображения сообщения строки 3 программа перейдет к исполнению следующих операторов, пока не встретит следующее слово break или не дойдет до конца конструкции switch. В нашем случае программа отобразит сообщение строки 6, а затем предаст управление строке 13. Зная подобную особенность оператора switch, Вы можете пропустить несколько break в своей программе.
Читать дальшеИнтервал:
Закладка: