Контрольная работа: Программирование микропроцессорных систем
Название: Программирование микропроцессорных систем Раздел: Рефераты по информатике Тип: контрольная работа | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ «МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМ. Н. П. ОГАРЁВА» Факультет электронной техники Кафедра промышленной электроники КОНТРОЛЬНАЯ РАБОТАПО КУРСУ «Программирование микропроцессорных систем» ВЫПОЛНИЛ: ПРОВЕРИЛ: Саранск ЗАДАНИЕ К КОНТРОЛЬНОЙ РАБОТЕ. 1. Представление данных в вычислительных системах (двоичная и шестнадцатеричная система счисления) 2. Алгоритм преобразования многобайтного двоичного числа в двоично-десятичный код 3. Способы организации взаимосвязи задач в микропроцессорной системе. Организация системы прерываний. 4. X - 16-битное число без знака, находящееся в ОЗУ с начальным адресом ADR1, CONST - 16-битная константа. Выполнить вычитание X - CONST и занести результат в ОЗУ с адреса ADR2. 1. Представление данных в вычислительных системах (двоичная и шестнадцатеричная система счисления) В цифровых вычислительных системах, непосредственно для вычислений используется бинарный код представленный двумя логическими уровнями «0» и «1». Непосредственно уровни сигналов передающиеся по шинам микропроцессора проще всего переставить двоичном виде. 1.1 Двоичная система счисления . В двоичной системе счисления используется основание р
= 2. Для получения значения числа в десятичном коде необходимо значения разрядов умножить на 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 Шестнадцатеричная система счисления. Пре всей наглядности отображения двоичная система, при росте разрядности числа становится весьма громоздкой и неудобной, поэтому В шестнадцатеричной системе счисления используется основание При этом значение одного разряда шестнадцатеричной записи соответствует четырем разрядам двоичной. Пример представления десятичного числа в двоичной и шестнадцатеричной формах: 22143,75 D 0101 0110 0111 1111, 1100 B 5 6 7 F C H Т а б л и ц а 1 . Представление чисел в двоичной и шестнадцатеричной системах.
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. Организация планирования выполнения задач с различными приоритетами с формированием и анализом слова запросов на их решение Рисунок 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 ;Сохранение старшего байта разницы |