- •Ответы по дисциплине мпт (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. Общие принципы и основные этапы разработки микроконтроллерных систем. Разработка и отладка аппаратных средств и программного обеспечения. Методы совместной отладки аппаратных и программных средств
16. Операторы перехода языка mikroC: break, continue, goto. Выполняемые функции, промеры использования в программах.
Оператор перехода break
Оператор break имеет два назначения. Первое – это окончание работы оператора switch. Второе – это принудительное окончание цикла, минуя стандартную проверку условия. Когда оператор break встречается в теле цикла, цикл немедленно заканчивается и выполнение программы переходит на строку, следующую за циклом.
Рассмотрим пример использования оператора break для досрочного прекращения работы цикла for.
char in_port, x;
void main( )
{
TRISB = 0xFF; // настроить порт B на ввод
TRISC = 0; // настроить порт С на вывод
PORTC = 0;
in_port = PORTB; // ввод числа из порта B
for( x = 1; x < 100; x++ )
{
if ( x == in_port )
break; // прекращение цикла вывода
PORTC = x; // вывод в порт С
}
}
В этой программе оператор цикла for выполняет вывод в порт С переменной х, изменяющейся от 0 до 100. Однако, если значение переменной х будет равно переменной in_port, введенной из порта B, причем это значение меньше 100, то цикл вывода немедленно прекращается.
Оператор перехода continue
Работа оператора continue чем-то похожа на работу оператора break. Но вместо форсированного окончания цикла оператор continue переходит к следующей итерации цикла, пропуская оставшийся код тела цикла.
Рассмотрим пример применения оператора continue для вывода в порт С чисел от 1 до 10 за исключением числа 5.
void main( )
{
char k; // объявление однобайтной переменной
TRISC = 0; // настроить порт С на вывод
PORTC = 0; // вывод нулей в порт С
for( k = 1; k <= 10; k++)
{
if( k == 5 ) // если k равно 5, то
continue; // пропустить вывод в порт С
PORTC = k; // вывод в порт С
}
}
Оператор перехода goto
Оператор goto (идти к ….) – это безусловный переход на метку. Метка – это идентификатор Си, завершающийся двоеточием. Пример записи оператора goto:
goto label;
………
……….
label: …….
Рассмотрим простейшую программу, где используется оператор перехода goto.
void main( )
{
char x = 1;
loop:
x++;
if ( x <= 10 )
goto loop;
}
В программе реализуется цикл инкремента переменной x от 1 до 10 с помощью оператора goto и метки loop. Очевидно, что такой цикл можно было бы реализовать и с использованием операторов while или for.
17. Функции языка mikroC: определение и прототипы.
Определение функции. Программа на языке mkroC состоит из одной или нескольких функций. Функция – это логически самостоятельная именованная часть программы, которой могут передаваться параметры и которая может возвращать какое-то значение. Современный стиль языка Си предполагает следующий формат определения функции:
возвращаемый_тип имя_функции(тип параметр_1, …,тип параметр_n)
{
описание данных;
оператор_1;
……
оператор_m;
return (выражение);
}
Совокупность предложений в фигурных скобках часто называют телом функции. Встретив определение функции, компилятор создает самостоятельную секцию кода программы, которая на этапе компоновки объединяется с другими функциями. Синтаксис языка Си запрещает внутри определения функции помещать определение еще одной функции.
Поле «возвращаемый_тип» задает тип возвращаемого функцией значения (char, int, float и т.д.). Если функция не возвращает никакого значения, то в поле «возвращаемый_тип» записывается ключевое слово void (пустой).
После имени функции в скобках помещаются аргументы (или по-другому входные параметры), передаваемые в функцию, они содержат любую комбинацию типов и имен. Это поле в определении функции называется списком формальных аргументов (или параметров). Поле «список аргументов» - не обязательная часть в определении функции. Если в функцию не передаются никакие параметры, то это поле – пустое или содержит ключевое слово void.
Примеры определения функций:
int mul(int a, int b) // функция умножения
{
int y;
y = a * b;
return y;
}
float cube(float m) // функция вычисления куба числа
{
return m * m * m;
}
void delay( ) // функция временной задержки
{
long j;
for(j = 0; j < 50000; j++);
}
Определения функций могут размещаться в различных частях программы, в том числе и в различных файлах. Поэтому может возникнуть ситуация, когда вызывается функция, определение которой находится ниже (по тексту) в программе. Это вызывает сбой в работе компилятора.
Прототип функции. Стандарт языка Си требует, чтобы функции были объявлены до первой ссылки на них. Это «предварительное» объявление называется прототипом функции. Оно извещает компилятор о типе возвращаемого значения, количестве и типе аргументов. Используя прототип, компилятор может выполнить тщательный контроль числа аргументов и соответствие их типов в вызовах функции и ее определении.
Современный стиль записи прототипа имеет следующий формат:
возвращаемый_тип имя_функции(тип параметр_1, …., тип параметр_n);
Сравнивая формат прототипа с определением функции, можно сделать вывод о том, что прототип точно повторяет первую строку определения функции. Примеры прототипов для рассмотренных ранее функций:
int mul(int a, int b);
float cube(float m);
void delay( );
Прототипы функций обычно размещаются в начале программы перед функцией main( ). А определения функций размещаются после функции main( ). Например, если программа с именем primer.c использует три функции mul( ), cube( ) и delay( ), то она записывается в следующем виде:
/***************************************************************************
primer.c – пример оформления программы с несколькими функциями
***************************************************************************/
int mul(int a, int b); // прототип функции mul( )
float cube(float m); // прототип функции cube( )
void delay( ); // прототип функции delay( )
void main( ) // главная функция
{
int y;
float f;
…………..
y = mul(50, 100); // вызов функции mul( )
……………...
f = cube(32.45); // вызов функции cube( )
………………..
delay( ); // вызов функции delay( )
………………
}
/* определения функций */
int mul(int a, int b)
{
int y;
y = a * b;
return y;
}
float cube(float m)
{
return m * m * m;
}
void delay( )
{
long j;
for(j = 0; j < 50000; j++);
}
