- •Ответы по дисциплине мпт (2015 г.)
- •1. Основные понятия и определения микропроцессорной техники: микропроцессор, микропроцессорная система, микрокомпьютер, контроллер, микроконтроллер. Принципы построения микропроцессорных систем.
- •2. Архитектура микропроцессора: архитектура со сложной системой команд (cisc-процессоры), архитектура с упрощенной системой команд (risc-процессоры), принстонская и гарвардская архитектуры.
- •3. Структура микропроцессорной системы и основные режимы ее работы – выполнение основной программы, обслуживание прерываний, прямой доступ к памяти.
- •4. Классификация микропроцессоров: универсальные и специализированные, цифровые сигнальные процессоры и микроконтроллеры
- •5. Классификация и структура микроконтроллеров (мк). Процессорное ядро мк, его основные характеристики.
- •6. Типы памяти микроконтроллеров: память программ, память данных, регистры.
- •7. Однокристальные микроконтроллеры семейства pic: состав и общая характеристика. Микроконтроллер pic16f84a: основные параметры, внутренняя структура, назначение выводов.
- •8. Микроконтроллер pic16f84a: организация памяти программ и данных, портов ввода/вывода.
- •9. Применение языка Си для разработки программ микроконтроллерных систем. Интегрированная среда mikroC pro для pic-микроконтроллеров.
- •10. Представление информации в языке Си: имена, типы данных, переменные и константы, массивы и строки.
- •11. Арифметические операции в языке mikroC. Виды операций, примеры их использования в программах.
- •12. Операции отношения и логические в языке mikroC. Виды операций, примеры их использования в программах.
- •13. Поразрядные операции в языке mikroC. Виды операций, примеры их использования в программах.
- •14. Операторы выбора if и switch в языке mikroC. Выполняемые функции, примеры их использования в программах.
- •15. Операторы цикла языка mikroC: for, while, do … while. Выполняемые функции, примеры использования в программах.
- •16. Операторы перехода языка mikroC: break, continue, goto. Выполняемые функции, промеры использования в программах.
- •17. Функции языка mikroC: определение и прототипы.
- •18. Управление отдельными разрядами регистров pic-микроконтроллеров в языке mikroC. Встроенные функции формирования временных задержек компилятора mikroC pro for pic.
- •19. Программирование на mikroC типовых процедур управления для pic-микроконтроллеров: управление светодиодом, формирование периодических сигналов, опрос контактов переключателя.
- •20. Средства аналогового ввода/вывода микроконтроллеров: назначение, принцип построения аналого-цифрового преобразователя (ацп). Модуль ацп в pic-микроконтроллерах.
- •21. Микроконтроллеры семейства avr фирмы Atmel: общая характеристика, внутренняя структура
- •22. Интегрированная среда разработки для avr-микроконтроллеров mikroC pro for avr. Программирование параллельного ввода/вывода данных в avr-микроконтроллерах
- •23. Программирование на mikroC для avr-микроконтроллеров процедур управления отдельными разрядами портов, опроса контактов переключателей
- •24. Интерфейсы микропроцессорных систем, классификация и принципы построения. Интерфейсы параллельные и последовательные, синхронные и асинхронные
- •25. Последовательный асинхронный интерфейс rs-232. Назначение, форматы передачи данных, основные технические характеристики
- •26. Последовательные асинхронные интерфейсы rs-422 и rs-485. Назначение, форматы передачи данных, основные технические характеристики
- •27. Последовательный синхронный интерфейс spi. Назначение, форматы передачи данных, основные технические характеристики
- •28. Интерфейсная шина i2c. Назначение, форматы передачи данных, основные технические характеристики
- •29. Интерфейсная шина can. Назначение, форматы передачи данных, основные технические характеристики
- •30. Общие принципы и основные этапы разработки микроконтроллерных систем. Разработка и отладка аппаратных средств и программного обеспечения. Методы совместной отладки аппаратных и программных средств
14. Операторы выбора if и switch в языке mikroC. Выполняемые функции, примеры их использования в программах.
Язык mikroC поддерживает два типа операторов выбора: if (если) и switch (переключатель). Эти операторы позволяют проверять выполнение определенных условий и выбирать возможное продолжение вычислительного процесса. Возможны следующие конструкции этих операторов:
1) оператор if единственного выбора;
2) оператор if … else двойного выбора;
3) оператор if … else множественного выбора;
4) оператор switch множественного выбора.
Оператор if единственного выбора
Оператор if единственного выбора для одного выполняемого оператора имеет вид:
if ( условие )
оператор;
для блока выполняемых операторов:
if ( условие )
{
оператор1;
…………..
операторN;
}
Программа вычисляет условие, заключенное в круглых скобках. Если оно истинно, то выполняется оператор (или блок операторов, заключенный в фигурных скобках). Если условие ложно, то оператор (или блок) не выполняется.
Например:
char a, b;
………….
if(a == 1)
b = a + 10;
………….
Оператор if … else двойного выбора
Оператор if … else (если … то) двойного выбора обеспечивает две альтернативы продолжения выполнения программы. Выбор осуществляется исходя из проверяемого условия.
Общий вид оператора if … else двойного выбора для одного выполняемого оператора:
if ( условие )
оператор1;
else
оператор2;
Вместо одиночных операторов 1 и 2 могут быть блоки операторов, заключенные в фигурные скобки.
В случае истинности условия выполняется оператор1, в противном случае – оператор2.
Например:
char a, b;
…………..
if(a == 1)
b = a + 10;
else
b= a * 3;
………….
Оператор if … else множественного выбора
Язык mikroC позволяет использовать вложенные операторы 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-части, если она имеется.
Например:
char a, b;
………….
if(a == 1)
b = a + 10;
else if(a == 2)
b = a * 3;
else
b = 0;
…………..
Оператор выбора switch
Оператор 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 не подходит. Ветвь default не является обязательной и, если она отсутствует, оператор switch ничего не выполнит.
6. Набор операторов в каждой ветви case не нужно заключать в фигурные скобки.
Замечание. В связи с тем, что в ветвях, помеченных словом case, можно указывать только константу, для анализа принадлежности к диапазону значений следует использовать оператор if … else множественного выбора.
В следующем примере проверяется значение переменной counter. Если counter равно 1, то переменной A присваивается значение 1. Если counter равно 10, то переменной B присваивается значение 1. Если counter равно 100, то переменная C устанавливается в 1. Если же counter не равно ни 1, ни 10. ни 100, тогда переменная D устанавливается в 1.
int counter, A = B = C = D = 0;
switch(counter)
{
case 1 :
A = 1;
break;
case 10 :
B = 1;
break;
case 100 :
C = 1;
break;
default :
D = 1;
}
