Контрольная работа по предмету "Информатика"


Программирование микропроцессорных систем

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ


«МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ


ИМ. Н. П. ОГАРЁВА»


Факультет электронной техники


Кафедра промышленной электроники


КОНТРОЛЬНАЯ РАБОТА


ПО КУРСУ


«Программирование микропроцессорных систем»


ВЫПОЛНИЛ: ПРОВЕРИЛ:


Саранск


ЗАДАНИЕ К КОНТРОЛЬНОЙ РАБОТЕ.


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

;Сохранение старшего байта разницы



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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :