ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИМ. Н. П. ОГАРЁВА»
Факультет электронной техники
Кафедра промышленной электроники
КОНТРОЛЬНАЯ РАБОТА
ПО КУРСУ
«Программирование микропроцессорных систем»
ВЫПОЛНИЛ: ПРОВЕРИЛ:
Саранск
ЗАДАНИЕ К КОНТРОЛЬНОЙ РАБОТЕ.
1. Представление данных в вычислительных системах (двоичная и шестнадцатеричная система счисления)
2. Алгоритм преобразования многобайтного двоичного числа в двоично-десятичный код
3. Способы организации взаимосвязи задач в микропроцессорной системе. Организация системы прерываний.
4. X - 16-битное число без знака, находящееся в ОЗУ с начальным адресом ADR1, CONST - 16-битная константа. Выполнить вычитание X - CONST и занести результат в ОЗУ с адреса ADR2.
1. Представление данных в вычислительных системах (двоичная и шестнадцатеричная система счисления)
В цифровых вычислительных системах, непосредственно для вычислений используется бинарный код представленный двумя логическими уровнями «0» и «1».
Непосредственно уровни сигналов передающиеся по шинам микропроцессора проще всего переставить двоичном виде.
1.1 Двоичная система счисления
.
В двоичной системе счисления используется основание р
= 2. Для записи чисел используется набор из двух цифр 0 и 1. Числа в бинарном коде обозначаются буквой B, пример записи бинарного числа: 1011010
B
.
Для получения значения числа в десятичном коде необходимо значения разрядов умножить на 2 в степени соответствующей разряду и полученные значения сложить.
Пример записи десятичного числа 46,5 в бинарном счислении:
1
0 1 1 1 0, 1 0
B
=1х25
(32)+ 0х24
(16)+1х23
(8)+ 1х22
(4)+ 1х21
(2)+1х20
(1)+ 1х2-1
(0,5)+ 0х2-2
(0,25)= 46,5
D
Минимальное значение бинарных данных соответствующее одному двоичному разряду –БИТ
Также используются кратные форматы 8 разрядов- БАЙТ, состоящее из нескольких байт СЛОВО, либо четырехразрядная форма ТЕТРАДА.
1.2 Шестнадцатеричная система счисления.
Пре всей наглядности отображения двоичная система, при росте разрядности числа становится весьма громоздкой и неудобной, поэтому для боле компактной записи используются другие системы счисления в частности шестнадцатеричная.
В шестнадцатеричной системе счисления используется основание р = 16
поскольку натуральных чисел всего 10 для обозначения значении корме цифр от 0 до 9 дополнительно используются буквы от Aдо F при этом A=10, B=11, C=12, D=13, E=14, F=15 соответственно.
При этом значение одного разряда шестнадцатеричной записи соответствует четырем разрядам двоичной.
Пример представления десятичного числа в двоичной и шестнадцатеричной формах: 22143,75
D
0101 0110 0111 1111, 1100
B
5 6 7
F
C
H
Т а б л и ц а 1
.
Представление чисел в двоичной и шестнадцатеричной системах.
Десятичная |
Двоичная |
Шестнадцатеричная |
Деся-тичная |
Двоичная |
Шестнадцатеричная |
0 |
0000 |
0 |
8 |
1000 |
8 |
1 |
0001 |
1 |
9 |
1001 |
9 |
2 |
0010 |
2 |
10 |
1010 |
А |
3 |
0011 |
3 |
11 |
1011 |
В |
4 |
0100 |
4 |
12 |
1100 |
С |
5 |
0101 |
5 |
13 |
1101 |
D |
6 |
0110 |
6 |
14 |
1110 |
Е |
7 |
0111 |
7 |
15 |
1111 |
F |
2. Алгоритм преобразования многобайтного двоичного числа в двоично-десятичный код.
Сущность алгоритма преобразования двоичного кода в двоично-десятичный, состоит в том, что для получения двоично-десятичного кода необходимо посчитать, сколько в исходном числе единиц, десятков, сотен, тысяч, и т.д. Для этого из исходного числа необходимо отнимать десятичные числа начиная с максимального кратного 10, (величина которого зависит от разрядности исходного числа) до тех пор пока не получится отрицательное значение. Количество итераций и будет значением кода для данного разряда. Из числа оставшегося при вычитании числа вычитаем десятичное число меньшее на один разряд предыдущего и так далее.
Для записи полученного кода выделяем необходимое количество памяти в соответствии с разрядностью исходного числа.
Алгоритм перевода целого значения, записанного двоичным кодом, в двоично-десятичный код можно представить, как показано на рисунке. 2.1.
Рис. 2.1. Алгоритм преобразования двоичного числа в двоично-десятичный код
где: n – номер десятичного разряда десятичного эквивалента двоичного кода А', аn
– количество весов 10n
, входящих в исходное значение (т. е. значение соответствующего десятичного разряда).
Последовательность действий по переводу двоичных чисел в двоично-десятичный код можно описать следующими формулами.
1. Эквивалент А
целого двоичного числа А'
в десятичной системе находится путем последовательного определения количества десятичных весов в исходном значении и преобразования их в двоичный код:
а
n
= Ent [А
'/10 n
]
а
n–1
= Ent [(А
' – a
n
10 n
)/10 n – 1
]
а
n–2
= Ent [(А
' – a
n
10 n
– a
n–1
10 n – 1
)/10 n – 2
]
… …
а
0
= Ent [(А
' – a
n
10 n
– a
n–1
10 n – 1
– a
n–2
10 n – 2
– … – a
1
101
)/10 0
].
(2.1)
2. Эквивалент А
правильной двоичной дроби А'
в десятичной системе получается путем последовательного определения количества дробных десятичных весов в исходном значении и преобразования их в двоичный код:
а
–1
= Ent А
'10
а
–2
= Ent (А
'10 – а
–1
)10
а
–3
= Ent ((А
'10 – а –
1
)10 – a
–2
)10
… …
а
–n
= Ent (…((А
'10 – а
–1
)10 – a
–2
)10 – … – а
– (n – 1)
)10,
(2.2)
где Ent – операция выделения целой части числа.
3. Смешанные дроби разбиваются на целую и дробную части, десятичный эквивалент получается путем «сшивки» результатов перевода каждой части по формулам (2.1) и (2.2).
В двоичной арифметике деление сводится к многократному вычитанию. Поэтому действия, представленные формулами (2.1) и (2.2)., можно свести к простому циклическому алгоритму.
При программной реализации данного алгоритма набор необходимых десятичных весов можно сформировать в виде отдельной таблицы в памяти и представить значения этих весов в дополнительном коде. Тогда вычитание весов при определении значения каждого десятичного разряда можно свести к повторяющимся действиям: сложению с соответствующим элементом таблицы.
3. Способы организации взаимосвязи задач в микропроцессорной системе. Организация системы прерываний.
При существовании в называют мультипрограммной системе нескольких задач в том числе алгоритмически не связанных возникает необходимость организации управления потоком задач.
С мультипрограммированием связано значительное число проблем, среди которых планирование выполнения программ, распределение и защита основной памяти, обеспечение бесконфликтного ввода-вывода, управление обменом данными и др.
Функции, реализуемых системой, можно представить в виде автономной программы или задачи, которая выполняется независимо от других. Действия, реализуемые в системе по распределению времени для решения задач процессором, называются планированием задач.
Задачи могут находиться в одном из трех состояний: выполнения, когда процессор выполняет задачу; готовности к выполнению при выделении времени процессора; приостановки (ожидания, блокировки), когда задача должна ожидать некоторого внешнего события или когда истек отведенный ей интервал времени процессора. Когда одна задача переходит в состояние ожидания, процессор переключается на выполнение другой.
Способ реализации конвейера с распределением интервалов пропорциональных количеству задач широко применяемый в многозадачных в вычислительных системах например персональных компьютерах в связи с спецификой решаемых микроконтроллерами задач в данном случае малопригоден по причине того что невозможно четко определить время реакции системы на событие.
Поскольку в любом случае задачи микроконтроллером выполняются последовательно и выполнение их носит циклический характер а приоритеты задач различны (прикладные, сервисные и организационные) простейшим способом взаимодействия является организация прерываний от внешних таймеров.
По мере возникновения новых задач, требующих решения, происходит их включение в цикл уже решаемых задач. Если задача решена полностью и далее в ее выполнении нет необходимости, то она исключается из перечня решаемых задач.
Варианты организации планирования задач по приоритетам:
1. Использование слова запросов на выполнение задач.
Задача выставляет в слове запросов флаг запроса, после окончания выполнения любой задачи производится анализ запросов в слове запросов в соответствии с порядком убывания приоритетов задач. При обнаружении запроса система переходит к выполнению задачи имеющий наивысший приоритет.
Этот вариант чаще всего используют в сложных многопроцессорных системах с большим числом задач алгоритм организации планирования выполнения пяти задач с различными приоритетами с формированием и анализом слова запросов на их решение показан на рис.3.1
2. Использование системы вложенных прерываний.
Во втором случае выполняемая задача может быть прервана для выполнения задачи с большим приоритетом.
Этот вариант обычно используют в системах с небольшим числом задач (3 – 4 задачи). показан на рис.3.2
Р и с. 3.1. Организация планирования выполнения задач с различными приоритетами
с формированием и анализом слова запросов на их решение (за время выполнения текущей задачи поступили запросы на решение от 1-й, 2-й и 5-й. После анализа слова состояния будет выполняться 1-я из них как задача, имеющая наивысший приоритет.)
Рисунок 3.2 Порядок выполнения задач по прерываниям, которые
имеют различные приоритеты (задачи в зависимости от важности распределены по шести уровням. Наивысшим по приоритету является уровень У1.
)
При проектировании специализированных микропроцессорных контроллеров применяется преимущественно последний вариант организации планирования.
Для организации прерываний могут использоваться:
Внешний таймер.(В том числе встроенные таймеры)
Дополнительный аппаратный контроллер прерываний из-за огра ниченого числа прерываний реализованных в микроконтроллере.
Аппаратные контроллеры устройств индикации, ввода-вывода, канала передачи данных.
При этом из прикладной задачи можно выделить задачу оперативную – жестко привязанную по времени к управляемому процессу (измерение) и задачу фоновую (вычисление результатов измерения) для сокращения времени простоя сервисной задачи (например индикации) для предотвращения нарушения работы отображающего устройства.
Алгоритмической связи между фоновыми и оперативными задачами нет, они связаны между собой информационно, за счет общих ячеек памяти. При этом интервал выполнения оперативной задачи выбирается как можно меньшим
Аппаратные контроллеры ввода-вывода, индикации, передачи данных позволяют задачам работать асинхронно получая доступ к задачам в интервал времени не занятый оперативной задачей.
4. X - 16-битное число без знака, находящееся в ОЗУ с начальным адресом ADR1, CONST - 16-битная константа. Выполнить вычитание X - CONST и занести результат в ОЗУ с адреса ADR2
Для вычитания используем представление вычитаемого как отрицательное число в дополнительном коде с последующим сложением с первым операндом
; Вычитание из 2-Х байтного числа 2-байтной константы
;
ADR
1 – Начальный адрес числа Х
;
ADR
2 – Адрес Для выгрузки результата
;
CONST
– Постоянная.
ADR
1 .
EQU
100
H
. ;выделяем адрес для числа –
X
ADR
2 .
EQU
102
H
. ;Выделяем адрес для сохранения - Z
ADRCONST
.
EQU
104
H
. ;Выделяем адрес для константы
CLR
C
;Сброс флага
SUBXC:
MOV R0,#
ADR
1 ; Загрузка в
R
0 Начального адреса
X
MOV
R1,#
ADRCONST
;Загрузка в
R
0 Начального адреса константы
MOV
R2,#
ADR
2 ;Загрузка в
R
2 Начального адреса результата
MOV
A
,@
R
1 ;Загрузка в аккумулятор младшего байта константы
CPL
A
;Преобразование в дополнительный код
INC
A
ADD A,@R0 ;Вычитание младших байт
MOV @R2,A ;Сохранение младшего байта Разницы
INC R0 ;Переход к старшим байтам Х и Константы
INC
R
1
MOV
A
,@
R
1 ;Загрузка в аккумулятор старшего байта константы
CPL A ;Преобразование в обратный код
ADDC
A
,@
R
0 ;Вычитание старших байт
MOV @
R
2,
A
;Сохранение старшего байта разницы
|