- •Ответы по дисциплине мпт (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. Общие принципы и основные этапы разработки микроконтроллерных систем. Разработка и отладка аппаратных средств и программного обеспечения. Методы совместной отладки аппаратных и программных средств
12. Операции отношения и логические в языке mikroC. Виды операций, примеры их использования в программах.
Операции отношения применяются для вычисления соотношений между операндами. Логические операции, используя правила логики, также возвращают соотношения между операндами.
В формальной логике ключевым понятием являются ЛОЖЬ и ИСТИНА. В языке Си лжи соответствует 0, а истине – любое значение, отличное от 0. Выражения, использующие операции отношения или логические, возвращают 0 для лжи и 1 для истины. В таблице 1 приведены обозначения логических и операций отношения, применяемых в языке mikroC.
Таблица 1
Логические операции и операции отношения
Знак операции |
Выполняемое действие |
Пример |
&& |
Логическое И |
if ( k > 1 && k < 10) |
|| |
Логическое ИЛИ |
if ( c == 0 || c == 9 ) |
! |
Логическое НЕ |
if ( ! ( c > 1 && c < 9 )) |
< |
Меньше |
if ( j < 0 ) |
<= |
Меньше или равно |
if ( j <= 0 ) |
> |
Больше |
if ( j > 10 ) |
>= |
Больше или равно |
if ( x >= 8.2 ) |
== |
Равно |
if (c == b) |
!= |
Не равно |
if (c != b ) |
В качестве примера рассмотрим программу log_op.c, в которой используются операции отношения и логические для целых чисел.
/************************************************************
log_op.c –программа для исследования операций
отношения и логических
***********************************************************/
char var1 = 10, var2 = 20;
char res1, res2, res3, res4, res5, res6, res7, res8;
void main( )
{
res1 = var1 > var2; // res1 = 0
res2 = var1 < var2; // res2 = 1
res3 = var1 == var2; // res3 = 0
res4 = var1 != var2; // res4 = 1
res5 = var1 && var2; // res5 = 1
res6 = var1 || var2; // res6 = 1
res7 = ! var1; // res7 = 0
res8 = ! var2; // res8 = 0
}
13. Поразрядные операции в языке mikroC. Виды операций, примеры их использования в программах.
В языке mikroC, как и в классическом Си, широко используются поразрядные (побитовые) операции, с помощью которых можно выполнять тестирование, установку, сброс, инвертирование и сдвиг отдельных битов операндов. Поразрядные операции могут выполняться только с целыми типами данных, т.е. char, int, long. В таблице 1 приведены поразрядные операции языка mikroC.
Таблица 1
Поразрядные операции в языке mikroC
Знак операции |
Выполняемое действие |
Пример |
& |
Поразрядное И |
i & 0x25 |
| |
Поразрядное ИЛИ |
j | 64 |
^ |
Поразрядное исключающее ИЛИ |
k ^ 0x0F |
~ |
Поразрядное НЕ (инверсия) |
~ m |
<< |
Поразрядный сдвиг влево |
i << 2 |
>> |
Поразрядный сдвиг вправо |
j >> 3 |
Рассмотрим программу bit_op.c, в которой используются различные поразрядные операции.
/***********************************************************
bit_op.c –программа для исследования поразрядных операций
***********************************************************/
char i = 0x0F, j = 0x1A, k1, k2, k3, k4, k5, k6, k7;
void main( )
{
k1 = i & j; // k1 = 0b00001010 = 0x0A
k2 = i | j; // k2 = 0b00011111 = 0x1F
k3 = i ^ j; // k3 = 0b00010101 = 0x15
k4 = ~ i; // k4 = 0b11110000 = 0xF0
k5 = ~ j; // k5 = 0b11100101 = 0xE5
k6 = i << 2; // k6 = 0b00111100 = 0x3C
k7 = j >> 3; // k7 = 0b00000011 = 0x03
}
Для сокращения текста программ в языке mikroC широко используются поразрядные составные операторы присваивания, которые являются комбинацией поразрядных операций и присваивания. В таблице 2 приведены составные поразрядные операции присваивания.
Таблица 2
Составные поразрядные операторы присваивания
Оператор |
Длинная форма |
Пример |
x &= y; |
x = x & y; |
i &= 0x0F; |
x |= y; |
x = x | y; |
j |= 64; |
x ^= y; |
x = x ^ y; |
k ^= 0x80; |
x <<= n; |
x = x << n; |
j <<= 2; |
x >>= n; |
x = x >> n; |
k >>= 3; |
Примечание. В составных операторах присваивания между знаком поразрядной операции (&, |, ^, >>, <<) и знаком присваивания “=“ пробел не допускается!
Поразрядные операции очень часто используются для управления отдельными разрядами портов микроконтроллеров. В этом случае первым операндом в операции является регистр данных порта (PORTA, PORTB, PORTC и т.п.), а вторым операндом служит однобайтное число, называемое маской.
Для сброса битов в 0 порта используется поразрядная операция И ( & ), при этом в соответствующих разрядах числа-маски должны быть нули.
Для установки битов в 1 порта используется поразрядная операция ИЛИ ( | ), при этом в соответствующих разрядах числа-маски должны быть единицы.
Для инвертирования битов порта используется поразрядная операция Исключающее ИЛИ (^), при этом в соответствующих разрядах числа-маски должны быть единицы.
Предположим, что в порт В, настроенного на вывод, нужно:
1) установить в единицу 0-й и 7-й разряды порта.
Определим маску для установки битов с помощью поразрядной операции ИЛИ. Это будет число 0b10000001 = 0x81.
На mikroC эту операцию можно выполнить как
PORTB = PORTB | 0b10000001;
или в сокращенной форме
PORTB |= 0b10000001;
2) сбросить в нуль 3-й и 4-й разряды порта В.
Определим маску для сброса этих битов с помощью поразрядной операции И. Это будет число 0b11100111 = 0xE7.
На mikroC эту операцию можно выполнить как
PORTB = PORTB & 0b11100111;
или в сокращенной форме
PORTB &= 0b11100111;
3) инвертировать 7-й, 5-й, 3-й, 1-й разряды порта В.
Определим маску для инвертирования этих битов с помощью поразрядной операции Исключающее ИЛИ. Это будет число 0b10101010 = 0xAA.
На mikroC эту операцию можно выполнить как
PORTB = PORTB ^ 0b10101010;
или в сокращенной форме
PORTB ^= 0b10101010;
Программа для выполнения рассматриваемых действий с портом В может иметь вид:
void main( )
{
TRISB = 0; // настроить все линии порта В на вывод
PORTB |= 0b10000001; // вывести 1 на выводы RB7 и RB0
PORTB &= 0b11100111; // вывести 0 на выводы RB4 и RB3
POTRB ^= 0b10101010; // инвертировать состояния выводов RB7, RB5, RB3, RB1
}
