Методические указания к практическому заданию

Практическое задание

Рабочим учебным планом предусматривается две контрольные работы. Если предусмотрена одна контрольная работа, то выполняется контрольная работа № 1.

ОБЩИЕ УКАЗАНИЯ

 

Контрольные работы включают теоретические вопросы и практические задания. Номера освещаемых в контрольной работе теоретических вопросов выбираются по последней цифре зачетной книжки. Варианты практических заданий выбираются по двум последним цифрам зачетной книжки.

 

 

3 КОНТРОЛЬНАЯ РАБОТА №1

 

3.1 Теоретические вопросы.

 

3.1.0. Описать структуру и организацию памяти микроконтроллера, способы адресации.

3.1.1. Описать принципы построения портов ввода/вывода, привести электрические характеристики и особенности подключения, принципы программирования режимов работы.

3.1.2. Описать структуру и общие принципы построение микропроцессорной системы.

3.1.3. Описать систему команд микроконтроллера AT90S8535..

3.1.4 Описать программирование аналогового компаратора

3.1.5. Пояснить принципы организации режима ШИМ таймеров.

3.1.6. Описать структуру, особенности построения и программирования АЦП.

3.1.7. Описать структуру, особенности построения и программирования универсального асинхронного приемопередатчика UART.

3.1.8. Описать систему и принципы организации прерываний.

3.1.9. Описать структуру, назначение элементов и работу микроконтроллера AT90S8535.

Освоение приемов программирования с использованием условных переходов, организацией циклов, косвенной адресацией на примере программной реализации одного из узлов цифровой схемотехники. Варианты задания:

1) Мультиплексор 2) Демультиплексор 3) Приоритетный шифратор

4) Дешифратор 5) Компаратор 6) Логический элемент ИЛИ

7) Логический элемент И 8) Логический элемент исключающее ИЛИ

9) Логический элемент И-НЕ 10) Логический элемент ИЛИ-НЕ

11) Мажоритарный элемент 12) Устройство контроля четности

13) Асинхронный RS-триггер 14) Синхронный RS-триггер

15) Статический D-триггер 16) Динамический D-триггер

17) Асинхронный T-триггер 18) Синхронный T-триггер

19) JK-триггер 20) Двоичный счетчик 21) Кольцевой счетчик

22) Счетчик Джонсона 23) Сдвиговый регистр

24) Параллельный регистр статический

25) Параллельный регистр динамический

26) Одновибратор 27) Реле времени 28) Генератор импульсов

29) Одновибратор с перезапуском 30) Преобразователь заданных кодов

31) Устройство подсчета 1 (0) в байте

32) Устройство поиска максимального числа в массиве

33) Устройство поиска минимального числа в массиве

34) Устройство поиска определенной комбинации чисел в массиве

35) Преобразователь последовательного кода в параллельный

36) Преобразователь параллельного кода в последовательный

37) Генератор импульсов с переменной длительностью

38) Генератор импульсов с переменной скважностью

39) Устройство сортировки чисел в массиве по возрастанию

40) Генератор пачки импульсов

Количество входов и выходов, номера линий входов и выходов, а также другие подробности задаются индивидуально.

Если номер зачетки больше 40. то вариант выбирается путем вычитания из последних цифр числа 40 или 80.

 

Выбор имитации цифрового устройства обусловлен тем, что микроконтроллер в основном предназначен для применения в устройствах управления. А для синтеза устройств управления используются принципы синтеза цифровых устройств, да и сами устройства управления чаще всего являются именно цифровыми устройствами. Кроме того, реализация цифровых устройств на аппаратном уровне рассматривалась в предыдущих курсах и студенты хорошо знакомы с принципами их построения и работы.

Работу любого цифрового устройства можно описать с помощью таблицы истинности, аналитического выражения или словесного описания. Алгоритм реализации функционирования во всех трех случаях будет различным. Основное время в программировании практических задач занимает разработка алгоритма. Это в большой мере творческий процесс. Написание программы по готовому алгоритму сводится к чисто технической задаче, где используются наработанные приемы и готовые библиотечные программы.

В первом приближении алгоритм можно составлять не привязывая его к конкретному языку программирования. Но реализация отдельных блоков алгоритма уже требует использования конкретного языка программирования. Наиболее рациональная программа получается, когда уже на начальной стадии разработки алгоритма учитывается язык программирования.

Программы для микроконтроллера AVR предполагается писать на ассемблере. Хотя можно писать и на языке высокого уровня, например на С++. Известно, что на языках высокого уровня программировать проще, чем на ассемблере, хотя сам язык высокого уровня сложнее и изучать его дольше. Программирование микроконтроллера на ассемблере выбрано из тех соображений, что он проще языка высокого уровня, время на его изучение требуется меньше. Это позволяет уже через короткое время написать несложную программу и проверить ее работу. При программировании на ассемблере необходимо хорошо знать структуру микроконтроллера, что тоже является задачей дисциплины. Кроме того программирование на языке С++ изучается в другом курсе и после окончания института выпускник сам решит на каком языке при необходимости осуществлять программирование микроконтроллера.

Все микроконтроллеры серии AVR программно совместимы. Программа для микроконтроллеров серии AVR состоит из последовательно написанных строк.

Строка программы может быть в одной из четырёх форм:

[ Метка:] директива [операнды] ;[Текст комментария]

[ Метка:] команда [операнды] ;[Текст комментария]

;[Текст комментария]

Пустая строка

В квадратных скобках представлены необязательные компоненты строки и они могут отсутствовать.

Метка является алфавитно-цифровой последовательностью символов (словом), заканчивающейся двоеточием. Она используются, как указание для команды безусловного перехода и команд условного перехода. Применение меток облегчает программирование, поскольку метка не привязана к определенному адресу, а физический адрес перехода определяется в процессе трансляции программы. В качестве метки нельзя использовать имена команд или директив.

Операнд - это целое число, над которым производится действие. Операнды можно задавать в различных форматах:

десятичный (по умолчанию), например, 12;

шестнадцатеричный, например, $0а (или 0´0а);

двоичный, например, 0b00001010, 0b11111111;

Форма представления значения не имеет и определяется соображениями рациональности и пристрастием программиста.

Команда определяет действие над операндами. Операндов в команде обычно два или один. Существуют команды и не содержащие операнды.

Директивы не транслируются непосредственно в коды операции. Они используются для облегчения программирования, чтобы корректировать местоположение программы в памяти, определять макрокоманды, инициализировать память и так далее. То есть это указания самому ассемблеру.

Комментарий пишется после символа “ ; ”. Любой текст после символа “ ; ” игнорируется ассемблером и имеет значение только для пользователя.

Пустая строка никак не воспринимается компилятором, но учитывается при общей нумерации строк в процессе компиляции.

Команды, директивы, операнды и метки можно писать и строчными, и прописными буквами.

Система команд микроконтроллеров ATMEL семейства AVR очень большая (порядка 130 команд) и в то же время эффективная. Правда, некоторые команды дублируют друг друга. Одной из отличительных особенностей микроконтроллеров AVR по сравнению с другими является то, что почти все команды выполняются за 1 тактовый цикл. Исключение составляют команды перехода. Это существенно увеличивает производительность микроконтроллера даже при относительно невысокой тактовой частоте.

Команды можно классифицировать следующим образом:

1. арифметические команды;

2. логические команды;

3. команды операций с битами;

4. команды пересылки данных;

5. команды перехода;

6. прочие команды.

При выполнении данных лабораторных работ для упрощения запоминания команд и написания программ не предполагается использовать весь набор директив и команд, тем более, что многие команды дублируют друг друга. Полный набор команд и директив приведен в приложении. Предлагаемый набор команд представлен в таблицах 6.1…6.6.

 

 

Таблица 3.1. Арифметические команды

Мнемо-ника Операн- ды Описание Операция Флаги Кол-во циклов
ADD Rd,Rr 0 ≤ d ≤31 0 ≤ r ≤31 Сложить без переноса Rd ß Rd + Rr Z, C, N, V, H
ADIW Rd,K d{24,26,28,30} 0≤K≤63 Сложить непосредственное значение со словом Rdh:Rdl Rdh:Rdl + К Z, C, N, V
SUB Rd,Rr 0 ≤d ≤31 0 ≤r ≤31 Вычесть без заема Rd ß Rd – Rr Z, C, N, V, H
INC Rd 0 ≤d ≤31 Инкрементировать (увеличить на 1) Rd ß Rd + 1 Z, N,V
DEC Rd 0 ≤d ≤31 Декрементировать (уменьшить на 1) Rd ß Rd - 1 Z, N,V

 

 

Таблица 3.2. Логические команды

Мне- мо­- ника Операн- ды Описание Операция Флаги Кол-во циклов
AND Rd, Rr 0 ≤d ≤31 0 ≤r ≤31 Выполнить логическое И   Rd ß Rd • Rr Z, N, V
ANDI Rd, К 16<d<31 0<k≤255 Выполнить логическое И с константой Rd ß Rd • К Z, N, V
OR Rd, Rr 0 ≤ d≥ 31 0 ≤ r ≤31 Выполнить логическое ИЛИ Rd ß Rd v Rr Z, N, V
ORI Rd, К 16≤d≤31 0≤K≤255 Выполнить логическое ИЛИ с константой Rd ß Rd v К Z, N, V
EOR Rd, Rr 0 ≤d ≤31 0 ≤г ≤31 Выполнить исключающее ИЛИ Rd ß Rd Å Rr Z, N, V
СОМ Rd 0 ≤d ≤31 Выполнить инверсию всех битов регистра Rdß $FF - Rd Z, C, N, V
CLR Rd 0 ≤d ≤31 Очистить (обнулить) регистр Rd ß 0 Z, N, V
SER Rd 16≤d≤31 Установить все биты реги- стра в 1 Rd ß $FF нет
CP Rd, Rr 0 ≤d ≤31 0 ≤r ≤31 Сравнить регистры Rd - Rr Z, C, N, V, H
CPI Rd, К 16≤d≤31 0≤K≤255 Сравнить регистр с кон- стантой Rd - K Z, C, N, V, H

 

 

Таблица 3.3. Команды операций с битами

Мне- мо-­ ника Операн-­ ды Описание Операция Флаги Кол-во циклов
Сдвиги
LSL Rd 0 ≤d ≤31 Логически сдвинуть влево Rd(n+1)ß Rd(n), Rd(0)ß 0, C ß Rd(7) Z,C,N,V, H
LSR Rd 0≤d≤31 Логически сдвинуть впра- во Rd(n)ß Rd(n+1), Rd(7) ß 0, C ß Rd(0) Z,C,N,V
ROL Rd 0 ≤d ≤31 Сдвинуть влево через пе- ренос Rd(0) ß C, Rd(n+1)ß Rd(n), C ß Rd(7) Z,C,N,V, H
ROR Rd 0 ≤d ≤31 Сдвинуть вправо через пе- ренос Rd(7) ß C, Rd(n)ß Rd(n+1), C ß Rd(0) Z,C,N,V
Работа с битами в портах I/O
SBI P,b 0 ≤P ≤31 0 ≤b ≤7 Установить бит в регистр I/O (P,b) ß 1 Нет
CBI P,b 0 ≤P ≤31 0 ≤b ≤7 Очистить бит в регистре I/O (P,b) ß 0 Нет
BSET s 0 ≤s ≤7 Установить флаг в регист- ре статуса SREG(s) ß 1 SREG(s)
BCLR s 0 ≤s ≤7 Очистить флаг в регистре статуса SREG(s) ß 0 SREG(s)
SEI     Установить флаг глобаль- ного прерывания I ß 1 I
CLI     Очистить флаг гло­бального прерывания I ß 0 I
Перемещение бита
BST Rd,b 0 ≤d ≤31 0 ≤b ≤7 Переписать бит из регистра в флаг Т Т ß Rd(b) Т 1
BLD Rd,b 0 ≤d ≤31 0 ≤b ≤7 Переписать флаг Т в бит регистра Rd(b) ß Т Нет

 

Таблица 3.4. Команды пересылки данных

Мне- мо­- ника Операн­- ды Описание Операция Флаги Кол-во циклов
Прямая адресация
MOV Rd,Rr 0 ≤d ≤31 0 ≤r ≤31 Переслать данные из регистра в регистр Rd ß Rr Нет
LDI Rd,K 16 ≤d ≤31 0 ≤k≤ 255 Записать константу в регистр   Rd ß K Нет

 

LDS Rd,k 0 ≤d ≤31 0≤k≤65535 Переслать данные из ОЗУ по адресу k в регистр Rd ß (k) Нет
STS k,Rr 0 ≤d ≤31 0≤k≤65535 Переслать данные из ре- гистра в ОЗУ по адресу k (k) ß Rr Нет
IN Rd,P 0 ≤d ≤31 0 ≤P ≤63 Переслать данные из пор- та I/O в регистр Rd ß P Нет
OUT P,Rr 0 ≤r ≤31 0 ≤P ≤63 Переслать данные из ре - гистра в порт I/O P ß Rr Нет
PUSH Rr 0 ≤r ≤31 Сохранить регистр в стеке STACK ß Rr Нет
POP Rd 0 ≤d ≤31 Извлечь регистр из стека Rd ß STACK Нет
Косвенная адресация
LD Rd,X (Y,Z) 0 ≤d ≤31 Переслать данные из ОЗУ в регистр Rd. Адрес, данных находится в регистре X (Y,Z). Rd ß (X) (Y,Z) Нет
ST X (Y,Z),Rr 0 ≤r ≤31 Переслать данные из регистра Rr в ОЗУ Адрес, данных находится в регистре X (Y,Z). (X) (Y,Z) ß Rr Нет

 

 

Таблица 3.5. Команды переходов

Мне- мо-­ ника Операн­ды Описание Операция Флаги Кол-во циклов
Безусловные переходы
RJMP k -2K<k<2K Перейти относительно на метку (относитель- ный адрес k) PC ß PC + k + 1 Нет
RCALL k -2K≤k≤2K Вызвать подпрограмму относительно по метке (относительный адрес k) PC ß PC + k + 1 Нет
RET     Вернуться из подпро- граммы PC ß STACK Нет
RETI     Вернуться из прерыва- ния PC ß STACK I
Пропуск одной команды при выполнении условия
CPSE Rd,Rr 0 ≤d ≤31, 0 ≤r ≤31 Сравнить и пропустить, если значения регистров равны if Rd = Rr then PC ß PC + 2 (or 3) Нет 1/2/3
SBRC Rr,b 0 ≤r ≤31 0 ≤b ≤7 Пропустить, если бит b в регистре равен 0   if Rr(b) = 0 then PC ß PC + 2 (or 3) Нет 1/2/3
SBRS Rr,b 0 ≤r ≤31 0 ≤b≤ 7 Пропустить, если бит b в регистре равен 1   if Rr(b) = 1 then PC ß PC + 2 (or 3) Нет 1/2/3
SBIC P,b 0 ≤P ≤31 0 ≤b ≤7 Пропустить, если бит b в регистре I/O равен 0   if I/O P(b) = 0 then PC ß PC + 2 (or 3) Нет 1/2/3
SBIS P,b 0 ≤r ≤31 0 ≤b ≤7 Пропустить, если бит b в регистре I/O равен 1   if I/O P(b) = 1 then PC ß PC + 2 (or 3) Нет 1/2/3
Переход на метку (относительный адрес) при выполнении условия
BREQ k -64≤k≤+63 Перейти на метку (по относительному адресу k), если содержимое ре- гистров равно (резуль- тат операции равен 0) if Rd= Rr (Z=1) then PC ß PC + k + 1 Нет 1/2
BRNE k -64≤k≤+63 Перейти на метку (по относительному адресу k), если содержимое ре- гистров не равно (ре - зультат операции не 0) if Rd ¹ Rr(Z=0) then PC ß PC + k + 1 Нет 1/2
BRSH k -64≤k≤+63 Перейти, если равно или больше (без знака) if Rd≥Rr(C = 0) then PCß PC+ k + 1 Нет 1/2
BRLO k -64≤k≤+63 Перейти, если меньше (без знака) if Rd<Rr (C=1) then PC ßPC + k + 1 Нет 1/2
BRBS s,k 0 ≤s ≤7 -64≤k≤+63 Перейти, если бит s в регистре статуса равен 1 if SREG(s) = 1 then PC ß PC + k + 1 Нет 1/2
BRBC s,k 0 ≤s ≤7 -64≤k≤+63 Перейти, если бит s в регистре статуса равен 0   if SREG(s)=0 then PC ß PC + k + 1 Нет 1/2

 

Таблица 3.6. Прочие команды

Мне- мо-­ ника Операн­ды Описание Операция Флаги Кол-во циклов
NOP     Выполнить холостую команду     Нет

 

В таблице применяются следующие обозначения:

Rr – регистр общего назначении источник данных;

Rd – регистр общего назначении приемник данных;

r,d – номера регистров общего назначения;

Р – порт ввода/вывода (I/O);

К – целое число (диапазон указан в таблице после обозначения команды);

b – номер бита (диапазон 0…7);

s - номер бита в регистре статуса (диапазон 0…7);

k – метка или относительный адрес перехода (диапазон - 64…+ 63)

0 … 31 – диапазон возможных численных значений;

X (Y,Z) – один из регистров косвенной адресации.

 

Предлагаемые для использования директивы: