- •1. Операторы выбора языка c51: if и switch.
- •2. Операторы цикла языка с51: while, do…while, for.
- •3. Операторы перехода языка с51: break, continue, goto.
- •4. Программирование параллельным вводом/выводом в с51: операторы управления портами и отдельными разрядами портов. Примеры программ управления светодиодами и опроса контактов переключателей.
- •/* Программа управления светодиодом vd1 от кнопки sb1 */
- •5. Программирование таймеров микроконтроллеров mcs-51 на языке с51.
- •6. Программирование системы прерываний микроконтроллеров mcs-51 на языке с51.
- •7. Программирование последовательного ввода/вывода микроконтроллеров mcs-51 на языке с51.
- •8. Микроконтроллеры pic18: общая характеристика, особенности архитектуры и системы команд.
- •9. Язык с18 для pic-микроконтроллеров: структура программы, директивы препроцессора, ключевые слова.
- •10. Представление информации в языке с18: типы данных, переменные и константы.
- •11. Операции арифметические, поразрядные логические, логические и отношения в языке с18.
- •12. Операторы управления вычислительным процессом в языке с18.
- •13. Функции в языке с18: определение функции, прототип, библиотечные функции.
- •14. Функции формирования временных задержек в языке с18.
- •15. Программирование на языке с18 типовых функций управления и контроля: вывод информации в порт, управление отдельными разрядами портов, опрос переключателя.
- •16. Подключение жк-дисплея к pic-микроконтроллеру: структура жк-дисплея, функции управления дисплеем.
- •17. Аналого-цифровое преобразование в pic-микроконтроллерах: структура внутреннего ацп, функции управления ацп на языке с18.
- •18. Реализация широтно-импульсной модуляции в pic-микроконтроллерах: параметры шим, функции управления шим на языке с18.
- •Void ClosePwm1(void);
- •Void OpenPwm1(char period);
- •Void SetDcpwm1(unsigned int dutycycle);
- •19. Прерывания в pic18: источники прерываний, управляющие биты, программирование прерываний на языке с18.
- •20. Динамическое управление линейным дисплеем на семисегментных индикаторах в pic-микроконтроллерах.
- •21. Интерфейсы мпс: понятие и характеристики. Стандартные интерфейсы мпс.
- •22. Внешние интерфейсы мпс: основные параметры, последовательные и параллельные, синхронные и асинхронные, способы соединения устройств.
- •23. Интерфейс rs-232: назначение, основные технические характеристики, принципы передачи данных.
- •24. Интерфейс ирпс: назначение, основные технические характеристики, принципы передачи данных.
- •25. Интерфейсы rs-422 и rs-485: назначение, основные технические характеристики, принципы передачи данных.
- •26. Интерфейс spi: назначение, основные технические характеристики, принципы передачи данных.
- •27. Интерфейс i2c: назначение, основные технические характеристики, принципы передачи
- •28. Интерфейс can: общее описание и основные параметры, виды и форматы сообщений в can.
- •29. Интерфейс can: арбитраж, обнаружение и обработка ошибок, скорость передачи и длина сети.
1. Операторы выбора языка c51: if и switch.
Язык С51 поддерживает два типа операторов выбора: if (если). позволяет проверять выполнение определенных условий и выбирать возможное продолжение вычислительного процесса.
Оператор if единственного выбора для одного выполняемого оператора имеет вид:
if ( условие )
оператор;
для блока выполняемых операторов:
if ( условие )
{оператор1;
операторN;}
Программа вычисляет условие, заключенное в круглых скобках. Если оно истинно, то выполняется оператор (или блок операторов, заключенный в фигурных скобках). Если условие ложно, то оператор (или блок) не выполняется.
Пр: in_port1 = P1;
if( in_port1 >= 0x0F )
P2 = in_port1; // вывод в порт Р2
Оператор if … else (если … то) двойного выбора обеспечивает две альтернативы продолжения выполнения программы. Выбор осуществляется исходя из проверяемого условия.
Общий вид оператора if … else двойного выбора для одного выполняемого оператора:
if ( условие )
оператор1;
else
оператор2;
Вместо одиночных операторов 1 и 2 могут быть блоки операторов, заключенные в фигурные скобки.
В случае истинности условия выполняется оператор1, в противном случае – оператор2.
Пр: in_port1 = P1;
if( in_port1 >= 0x0F )
P2 = in_port1; // вывод в порт Р2
else
P2 = 0x00;
Язык С51 позволяет использовать вложенные операторы if … else для реализации множественного выбора.
Общий вид оператора if … else множественного выбора:
if ( условие1 )
оператор1;
else if ( условие2 )
оператор2;
……………………
else if ( условиеN )
операторN;
else
оператор(N+1);
Последняя else-часть в операторе if … else может и отсутствовать.
Оператор if … else множественного выбора выполняет серию последовательных проверок до тех пор, пока не будет установлено следующее:
1. Одно из условий в if-части или в частях else if является истиной. В этом случае выполняются соответствующие ему операторы.
2. Ни одно из вложенных условий не является истиной. Программа выполнит операторы в последней else-части, если она имеется.
Оператор switch (можно перевести как переключатель) используется для выбора одного варианта из многих. Он проверяет, совпадает ли значение выражения с одним из значений, входящих в некоторое множество целых констант, и выполняет соответствующую этому значению ветвь программы.
Общий вид оператора switch:
switch ( выражение)
{
case константа1:
оператор1;
break;
case константа2:
оператор2;
break;
…………………
case константаN:
операторN;
break;
default:
оператор(N+1);
}
Оператор switch выполняется так. Сначала вычисляется выражение, стоящее в скобках после ключевого слова switch. Вычисленное значение сравнивается со значением констант: константа1, константа2, …, константаN. При совпадении вычисленного значения с некоторой константой выполняется соответствующий ей оператор. Затем управление передается оператору break (прервать), который производит немедленный выход из оператора switch. Если вычисленное значение не совпадает ни с одной из констант, выполняется оператор в ветви, помеченной default (по умолчанию).
Правила использования оператора switch.
1. Switch требует выражения целого типа. Это значение может быть константой, переменной или выражением. Оператор switch не работает с типами данных с плавающей точкой.
2. Значение после каждой метки case должно быть константой.
3. Язык Си не поддерживает метки case, содержащие диапазон значений. Каждое значение должно указываться с отдельной меткой case.
4. Необходимо использовать оператор break после каждого набора выполняемых операторов. Оператор break вызывает продолжение выполнения программы после завершения текущего оператора switch. Если не использовать оператор break, то выполнение программы продолжится на последующих метках case.
5. Ветвь, помеченная словом default (по умолчанию), выполняется тогда, когда ни одна из констант ветвей case не подходит.
6. Набор операторов в каждой ветви case не нужно заключать в фигурные скобки.
Замечание. В связи с тем, что в ветвях, помеченных словом case, можно указывать только константу, для анализа принадлежности к диапазону значений следует использовать оператор if … else множественного выбора.