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

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

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

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

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

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





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

ПО КУРСУ

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











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

















Саранск 









Изм.

Лист

№ докум.

Подпись

Дата

Лист

2

          КР- 02069964-210106-05-11

 Разраб.

Пильщиков В.Г.  DDИ.О.

 Провер.

Шишов.О.В.

 Реценз.

Ф.И.О.

 Н. Контр.

Ф.И.О.

 Утверд.

Ф.И.О.

КОНТРОЛЬНАЯ  РАБОТА ПО КУРСУ

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



Лит.

Листов

10

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



1. Представление данных в вычислительных системах (двоичная и шестнадцатеричная система счисления)



2. Алгоритм преобразования многобайтного двоичного числа в двоично-десятичный код



3. Способы организации взаимосвязи задач в микропроцессорной системе. Организация системы прерываний.



4. X - 16-битное число без знака, находящееся в ОЗУ с начальным адресом ADR1,    CONST - 16-битная константа.   Выполнить вычитание X - CONST и занести результат в ОЗУ с адреса ADR2.








Изм.

Лист

№ докум.

Подпись

Дата

Лист

3

          КР- 02069964-210106-05-11

1. Представление данных в вычислительных системах (двоичная и шестнадцатеричная система счисления)



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

Непосредственно уровни сигналов передающиеся по шинам микропроцессора проще всего переставить двоичном виде. 

1.1 Двоичная система счисления. 

В двоичной системе счисления используется основание  р = 2.
Для записи чисел используется набор из двух цифр 0 и 1. Числа в бинарном коде обозначаются  буквой B,  пример записи бинарного числа: 1011010 B.

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

Пример записи десятичного  числа  46,5    в бинарном счислении:

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

          КР- 02069964-210106-05-11

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





Изм.

Лист

№ докум.

Подпись

Дата

Лист

4







Изм.

Лист

№ докум.

Подпись

Дата

Лист

5

КР- 02069964-210106-05-11

2. Алгоритм преобразования многобайтного двоичного числа в двоично-десятичный код.

Сущность алгоритма  преобразования двоичного кода в двоично-десятичный,  состоит в том, что для получения двоично-десятичного кода необходимо посчитать, сколько в исходном числе единиц, десятков, сотен, тысяч, и т.д.  Для этого из исходного числа необходимо отнимать десятичные числа начиная с максимального кратного 10, (величина которого зависит от разрядности  исходного числа) до тех пор пока не получится отрицательное значение. Количество итераций и будет значением кода для данного разряда. Из числа оставшегося при вычитании числа вычитаем десятичное число меньшее на один разряд предыдущего и так далее.

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

Алгоритм перевода целого значения, записанного двоичным кодом, в двоично-десятичный код можно представить, как показано на рисунке. 2.1.



Изм.

Лист

№ докум.

Подпись

Дата

Лист

1





Рис. 2.1. Алгоритм преобразования двоичного числа в двоично-десятичный код

где: n – номер десятичного разряда десятичного эквивалента  двоичного кода А', аn – количество весов 10n, входящих в исходное значение (т. е. значение соответствующего десятичного разряда).

Последовательность действий по переводу двоичных чисел в двоично-десятичный код  можно описать следующими формулами. 



Изм.

Лист

№ докум.

Подпись

Дата

Лист

6

КР- 02069964-210106-05-11

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 – … – a1 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)., можно свести к простому циклическому алгоритму. 

При программной реализации данного алгоритма набор необхо

Изм.

Лист

№ докум.

Подпись

Дата

Лист

7

КР- 02069964-210106-05-11

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



3. Способы организации взаимосвязи задач в микропроцессорной системе. Организация системы прерываний.



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

С мультипрограммированием связано значительное число проблем, среди которых планирование выполнения программ, распределение и защита основной памяти, обеспечение бесконфликтного ввода-вывода, управление обменом данными и др.

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

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



Изм.

Лист

№ докум.

Подпись

Дата

Лист

8

КР- 02069964-210106-05-11

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

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

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

Варианты организации планирования задач по приоритетам:

1. Использование слова запросов на выполнение задач.

 Задача выставляет в слове запросов флаг запроса, после окончания выполнения любой задачи производится анализ запросов в слове запросов в соответствии с порядком убывания приоритетов задач. При обнаружении запроса система переходит к выполнению задачи имеющий наивысший приоритет. 

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





Изм.

Лист

№ докум.

Подпись

Дата

Лист

9

КР- 02069964-210106-05-11

2. Использование системы вложенных прерываний.

Во втором случае  выполняемая задача может быть прервана для выполнения задачи с большим приоритетом.

Этот вариант обычно используют в системах с небольшим числом задач (3 – 4 задачи). показан на рис.3.2





Р и с. 3.1. Организация планирования выполнения задач с различными приоритетами 

с формированием и анализом слова запросов на их решение
 (за время выполнения текущей задачи поступили запросы на решение от 1-й, 2-й и 5-й. После анализа слова состояния будет выполняться 1-я из них как задача, имеющая наивысший приоритет.)



Рисунок 3.2 Порядок выполнения задач по прерываниям, которые  

имеют различные приоритеты (задачи в зависимости от важности распределены по шести уровням. Наивысшим по приоритету является уровень У1.

)



Изм.

Лист

№ докум.

Подпись

Дата

Лист

10

КР- 02069964-210106-05-11

При проектировании специализированных микропроцессорных контроллеров применяется преимущественно последний вариант организации планирования.

Для организации прерываний могут использоваться: 

Внешний таймер.(В том числе встроенные таймеры)

Дополнительный аппаратный контроллер прерываний из-за огра
ниченого числа прерываний реализованных в микроконтроллере.

Аппаратные контроллеры устройств индикации, ввода-вывода,
канала передачи данных.

При этом из прикладной задачи можно выделить задачу оперативную – жестко привязанную по времени к управляемому процессу (измерение) и задачу фоновую (вычисление результатов измерения) для сокращения времени простоя сервисной задачи (например индикации) для предотвращения нарушения работы отображающего устройства.

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

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



















Изм.

Лист

№ докум.

Подпись

Дата

Лист

10

КР- 02069964-210106-05-11

4. X - 16-битное число без знака, находящееся в ОЗУ с начальным адресом ADR1,    CONST - 16-битная константа.   Выполнить вычитание X - CONST и занести результат в ОЗУ с адреса ADR2

Для вычитания используем представление вычитаемого как отрицательное число в дополнительном коде с последующим сложением с первым операндом

; Вычитание из 2-Х байтного числа 2-байтной константы

; ADR1 – Начальный адрес числа Х

; ADR2 – Адрес Для выгрузки результата

; CONST – Постоянная.

ADR1 .EQU        100 H. ;выделяем адрес для числа – X

ADR2 .EQU        102 H. ;Выделяем адрес для сохранения - Z

ADRCONST .EQU    104H. ;Выделяем адрес для константы 

        CLR C   ;Сброс флага  

SUBXC:

MOV R0,#ADR1      ; Загрузка в R0 Начального адреса X 

MOV R1,#ADRCONST   ;Загрузка в R0 Начального адреса константы

MOV R2,# ADR2  ;Загрузка в R2 Начального адреса результата

MOV A,@R1   ;Загрузка в аккумулятор младшего байта константы

CPL A       ;Преобразование в дополнительный код

INC A

ADD A,@R0  ;Вычитание младших байт

MOV @R2,A  ;Сохранение младшего байта Разницы

INC R0     ;Переход к старшим байтам Х и Константы

INC R1

MOV A,@R1   ;Загрузка в аккумулятор старшего байта константы

CPL  A      ;Преобразование в обратный код

ADDC  A,@R0 ;Вычитание старших байт

MOV   @R2,A  ;Сохранение старшего байта разницы