Проектирование аппаратного обеспечения одноплатных микроконтроллеров

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    81,98 Кб
  • Опубликовано:
    2013-11-10
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Проектирование аппаратного обеспечения одноплатных микроконтроллеров

ВВЕДЕНИЕ


Задание: В заданной РЭС осуществить управляющую функцию по одному из заданных параметров с помощью контроллера, построенного на МПК, разработать электрическую принципиальную схему проектируемого контроллера и составить программу (драйвер) реализуемую управляющую функцию на языке Ассемблер заданного МПК

Тип МПК:  МПК БИС 1810

Состав микро-контроллера: ОЗУ - 512Кбайт, ПЗУ - 64Кбайт, канал ввода - последовательный, канал вывода - параллельный, ОЗУ динамическое, контроллер прерываний присутствует

Реализуемая

функция:  Рекурсивный цифровой фильтр (порядок - 2, тип - ФНЧ, аппроксимация характеристик Баттерворда, частота среза - n+1 кГц). Измерение временного интервала

1. Проектирование аппаратного обеспечения


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

1 тип используемого микропроцессора;

2 необходимость использования сопроцессора;

3 емкость ОЗУ и его тип;

4 емкость ПЗУ;

5 необходимость использования функциональных преобразователей;

6 число портов ввода-вывода и их назначение;

7 необходимость использования буферов шин и соответствующих схем управления.

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

Шиной системы называют физическую группу линий передачи сигналов, имеющих схожие функции в рамках системы.

Все три шины являются специализированными с точки зрения их функций и именуются так:

8 шина адреса;

9 шина данных;

10шина управления.

Рис. 1.1

Шина адреса. По адресной шине передаются лишь выходные сигналы, которые поступают с выводов в корпусе МП. Эта шина предназначена для того, чтобы открывать или выбирать правильный тракт для электрического соединения в пределах микроконтроллера. Другой важной характеристикой шины является ее емкость, которая изменяется от 8 до 32 электрических линий.

Шина данных. Эта шина является двунаправленной, т.е. передача данных может производиться в обоих направлениях. В некоторых случаях данные генерируются МП и передаются от него к определенному устройству. Это устройство открывается с помощью заданного логического состояния линий адресной шины и получает данные с шины данных. В других случаях данные генерируются каким-то источником и передаются микропроцессору посредством шины данных. Хотя передача данных по шине может производиться в обоих направлениях, однако в каждый заданный момент времени она осуществляется лишь в одном направлении. Это означает, что для передачи данных в систему и их приема из системы МП переводится в соответствующий режим.

Шина управления. На шине управления должно действовать, как минимум 4 следующих типа сигналов:

1 чтение из памяти;

2 запись в память;

3 чтение с устройства ввода-вывода;

· запись в устройство ввода-вывода;

Шина используется для вывода сигналов и является однонаправленной.

В структуре микроконтроллера (рис. 1.1) главным элементом является процессорный модуль, другие модули являются периферийными (ЗУ, УВВ и т.д.).

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

2. Процессорный модуль на БИС 1810

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

При построении простых микроконтроллеров МП 1810 чаще всего работает в минимальном режиме, а архитектура всего микроконтроллера использует однопользовательскую системную шину (см. рис. 2.1).

Рис. 2.1

В такой конфигурации процессор состоит из МП КР1810ВМ86, системного генератора КР1810ГФ84 и БИС магистрального интерфейса КР580ИР82/83, КР580ВА86/87 или КР1810ИР82/83 и КР1810ВА86/87, предназначенных для обеспечения требуемой нагрузочной способности.

В схеме на рис. 3 интерфейс адресной шины реализован на буферных регистрах КР580ИР82, в которые записывается информация с выходов AD0-AD15, A16-A19 МП 1810ВМ86 по сигналу STB в такте Т1 и хранится там в течение всего машинного цикла. Интерфейс шины данных реализован на шинных формирователях КР580ВА86.

Информация о данных поступает в формирователи по сигналу с выходов AD0-AD15 МП КР1810ВМ86 в такте Т2-Т3. Мультиплексор К555КП11 формирует раздельные сигналы чтения/записи ЗУ и ВУ.

Имеется возможность организации канала прямого доступа к памяти (ПДП) на БИС КР1810ВТ37 и системы прерываний на БИС КР1810ВН59.

3. Модули памяти микроконтроллера на МП 1810

Микропроцессоры семейства К1810 адресуют пространство ЗУ объемом 1 Мбайт с байтовой организацией, где БИС ЗУ подключены к старшему и младшему байтам канала данных.

При проектировании модулей памяти необходимо проанализировать совместимость БИС ЗУ с системой на базе МП 1810, как минимум по следующим параметрам: требуемая информационная емкость и организация памяти, быстродействие (время цикла обращения для записи или считывания), тип магистрали (интерфейса), характеристики линий магистрали и т.д.

Для примера ¾ время цикла чтения/записи без использования тактов ожидания, МП 1810, при частоте синхронизации 5 МГц составляет менее 600 нс, а время выборки статического ОЗУ ¾ порядка 160 нс. Поэтому для реализации ОЗУ можно использовать БИС ОЗУ семейств К541 или К132 и ОЗУ семейства К565. Для реализации ПЗУ без тактов ожидания следует использовать БИС семейства К556 (рис. 2.2).

Рис. 2.2

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

Оперативные запоминающие устройства микроконтроллера на базе МП К1810ВМ86 также имеют двухбайтовую организацию и состоят из двух банков.

Старший банк ЗУ хранит старший байт шестнадцатиразрядного слова и выбирается по сигналу , младший - хранит младший байт слова и выбирается по сигналу А0=0. Под управлением сигналов выборки с линий , А0 организуется доступ к словам ЗУ или отдельным байтам.

Для реализации памяти небольшого объема широко применяют ОЗУ статического типа. Пример такой реализации ОЗУ показан на рис. 2.3.

Рис. 2.3

Для реализации ОЗУ больших объемов используются БИС ОЗУ динамического типа (рис. 2.4).

Эти БИС имеют ряд особенностей, существенно отличающих их от микросхем статического типа: мультиплексирование адресного кода, более сложные временные диаграммы сигналов управления, регенерация хранимой информации, значительное рассогласование входов и выходов с ТТЛ-линиями по сопротивлению. Указанные особенности БИС ОЗУ ДТ оказывают значительное влияние на структурные и схемотехнические решения при построении модулей памяти.

Рис. 2.4

В этом случае модуль памяти должен содержать БИС памяти, контроллер ОЗУ ДТ, буферные регистры или магистральные приемопередатчики, шинные формирователи, обеспечивающие сопряжение по нагрузке модуля ОЗУ с шинами адреса и данных.

Для примера у семейства 565 период регенерации БИС составляет 2 мс.

Регенерация выполняется путем обращения к 128 строкам по младшим адресам. Удобно выполнять регенерацию по сигналу при . В этом случае БИС рассеивает минимальную мощность. В режиме записи данные с информационного входа фиксируются по сигналам со входов и , в момент появления сигнала . Информационный выход БИС 565 трехстабильный и находится в высокоимпедансном состоянии при  и . В режиме записи, когда сигнал на вход  приходит раньше сигнала на входе , информационный выход остается высокоимпедансном состоянии выход в течение всего цикла записи. В режиме чтения выход переходит в активное состояние через интервал времени, равный времени выборки, и остается в нем до перехода сигнала на выходе  в состояние "логической 1". Состояние выхода  при этом не имеет значения. Чтение данных выполняется без их разрушения. Кроме обычных режимов записи/чтения в БИС 565 выполняется режим чтение-модификация-запись - "регенерация" и страничные режимы записи/чтения. Для управления ОЗУ ДТ синтезируются цифровые автоматы, кроме того, существует БИС контроллера ОЗУ ДТ КР1810ВТ03.

4. Селекторы адресов микроконтроллера

Работая в режиме программного обмена микроконтроллер проводит обращение к определенным устройствам (ОЗУ, ПЗУ, порты ввода-вывода), которые должны быть активизированы для работы. Эту функцию выполняет узел, называемый селектором адреса, который вырабатывает сигналы, соответствующие адресу того или иного устройства.

При проектировании селекторов адреса необходимо выполнять следующие требования:

1 высокое быстродействие (селектор адреса должен иметь задержку не более чем интервал между выставлением адреса и началом сигнала строба обмена);

2 возможность изменения селектируемых адресов;

3 малые аппаратурные затраты.

Селектор адреса памяти. Архитектурная особенность МП 1810 такова, что область ПЗУ удобнее располагать в области самых верхних адресов (с адреса FFFFFH и вниз) объемом не менее 64Кбайт. Область ОЗУ можно располагать в любом месте адресного пространства. Простой способ выбора области памяти ¾ использование старшего разряда адреса, который поделит область памяти на две части (рис. 2.5а, 2.6).

а б

Рис. 2.5


Используя два старших разряда адреса можно разделить объем памяти на четыре области по 256 Кбайт (рис. 2.5б).

Самое простое решение при построении селектора адреса ¾ использование только логических элементов (рис. 2.7).

Рис. 2.7

Рис. 2.8

В такой схеме ПЗУ находится в сомой нижней (А19=0, А18=0) и в самой верхней (А19=1, А18=1) области адресов, а ОЗУ занимает среднюю область адресов (А19=0, А18=1, А19=1, А18=0).

При увеличении количества областей памяти (при уменьшении их объема) селекторы адреса можно реализовать на микросхемах дешифраторов (рис. 2.8). Например, использование дешифратора К555ИД7 даст возможность получить 8 зон объемом 128 Кбайт (на микросхему подаются адреса А19...А17), а дешифратор К555ИД13 - 16 зон по 64 Кбайта (на микросхему подаются адреса А19...А16). Более мелкое деление нецелесообразно, т.к. минимальный объем сегмента МП 1810 64 Кбайт. Селектор адреса памяти должен срабатывать только при обращении к памяти, для этого необходимо кроме адресов на дешифратор подавать сигналы , которые будут разрешать работу дешифратора во время обращения к памяти.

5. Модуль Пзу

Карта памяти для МП 1810 будет выглядеть следующим образом:

Рис. 2.9

В качестве БИС ПЗУ выберем микросхемы 27256 с организацией 32Кбайт ´ 8бит. Помня о том, что в МП 1810 обращение к памяти происходит по банкам (четный и нечетный) синтезируем схему управления ПЗУ. Переменными будут сигналы АО, , А20, А19, А18, А17. Из-за большого количества переменных синтез будем проводить по частям. Из карты памяти видно, что обращение к ПЗУ будет тогда когда А20, А19, А18, А17 будут равны 1, или , это будет схема «И-НЕ». Пусть y0,  - переменные. Составим таблицу истинности и синтезируем схему, используя карты Карно на элементах «И-НЕ».

y0

y1




0 0 0 0 1 1 1 1         0 0 1 1 0 0 1 1      0 1 0 1 0 1 0 1      1 0 1 1 1 1 1 1     

Рис. 2.10



Схема будет выглядеть так

Рис. 2.11

Синтезируем схему для управления ПЗУ1. Составим таблицу истинности и карту Карно, где переменные будут у1, А0, .

y1

А0

ПЗУ1ПЗУ1=А0Úу1



0 0 0 0 1 1 1 1         0 0 1 1 0 0 1 1      0 1 0 1 0 1 0 1      0 0 1 1 1 1 1 1     

Рис. 2.12


Синтезируем схему для управления ПЗУ2. Составим таблицу истинности и карту Карно.

y1А0ПЗУ2ПЗУ2= Úу1





0 0 0 0 1 1 1 1         0 0 1 1 0 0 1 1      0 1 0 1 0 1 0 1      0 1 0 1 1 1 1 1     

Рис.2.13


Селектор адреса портов ввода/вывода. Построение селектора адреса портов не отличается от построения селекторов адреса памяти. В них тоже используются дешифраторы. Адресное пространство портов может занимать 256 адресов (при 8 разрядном адресе) или 65536 адресов (при 16 разрядном адресе). Все адресное пространство разбивается на блоки (окна), в которые подключаются порты ввода/вывода. Минимальный размер окна ¾ 4 адреса (практически все периферийные БИС требуют 4 адреса).

При делении адресного пространства на окна используются старшие адреса А15...А9 (А7...А3). Также как и селектор адреса памяти, селектор адреса портов ввода/вывода должен срабатывать только при обращении к портам. Для этого в качестве сигналов синхронизации можно использовать сигналы . На рис. 17 показана схема селектора адреса портов разделяющее адресное пространство 300H...31FH на 16 окон по 2 адреса. Если в схеме на рис. 16 дешифратор 155ИД3 заменить на 555ИД7 то получим 8 окон по 4 адреса.

Рис. 2.14

На схеме дешифратор 555ИД7 делит зону 2К адресов на 8 окон по 256 адресов. Дешифратор К155ИД3 делит зону 300H...31FH на 16 окон по 2 адреса. Генератор 555АГ3 вырабатывает сигнал  для синхронизации работы медленнодействующего порта с микропроцессором.

Если селектор адреса порта получается слишком сложным, то необходимо использовать микросхемы ПЗУ или программируемые логические матрицы (ПЛМ).

В этом случае селектируемый адрес зависит не от схемотехнических решений, а от прошивки ПЗУ или ПЛМ. Такой подход обеспечивает простую реализацию выбора нескольких адресов. Изменить селектируемый адрес (или зону адресов) можно заменой ПЗУ (ПЛМ).


Рис. 2.15

Возможно также комбинирование ПЗУ (ПЛМ) с другими микросхемами, например, с дешифраторами или компараторами кодов. Если необходимо обрабатывать больше разрядов адреса, чем имеется адресных входов у микросхемы ПЗУ, то можно каскадировать две или более микросхем.

6. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ


При обработке радиотехнической информации большой объем занимает фильтрация.

Фильтр ¾ устройство, с минимальным ослаблением передающее колебания частот, которые попадают в область полосы пропускания.

На рис. 3.1 показана схема цифрового фильтра 2-го порядка, на рис. 3.2 алгоритм обработки сигнала в нем. Нумерация точек в схеме цифрового фильтра соответствует нумерации переменных yi, хранящих формируемые в этих точках значения, т. е. y1, y2, y3, y4 (и, следовательно, ячейки памяти, выделенные для хранения значений этих переменных) имеют значения, совпадающие со значениями величин в точках 1, 2, 3, 4 схемы цифрового фильтра.

Рис. 3.1

Блоки 1, 2 схемы алгоритма значения у2, у1, сформированные в предыдущем повторении цикла, передают соответственно в y3, y2 и отражают, таким образом, задержку, предусмотренную в схеме цифрового фильтра между точками 3 и 2, 2 и 1. Ячейка у5 используется как вспомогательная ячейка для формирования произведений.

Из 14 содержащихся в схеме алгоритма блоков пять блоков (блоки 4, 6, 8, 10, 12) предусматривают выполнение операции умножения, и основное время, затрачиваемое на исполнение алгоритма, связано именно c выполнением этих блоков. Возможно ускорение исполнения алгоритма, если предусмотреть параллельное выполнение операций умножения, т.е. пять предусмотренных в алгоритме операций умножения выполнять одновременно, используя, пять различных устройств умножения. Так как время, затрачиваемое на исполнение других блоков в схеме алгоритма относительно невелико, то при параллельном выполнении умножения примерно в пять раз сократится время однократного исполнения цикла алгоритма и, следовательно, в пять раз возрастут быстродействие цифрового фильтра и предельная широкополосность обрабатываемых фильтром сигналов.

одноплатный микроконтроллер адрес фильтр

Рис. 3.2

;*********************************************************

; Программа рекурсивного цифрового фильтра на МП 1810

;*********************************************************Макрокоманда сдвига SHIFT@@ MACRO var1, var2di,var1si,var2cx,2movsw

;-----------------------------------SEGMENT PARA STACK 'STACK'256 dup (0)ENDS

;-----------------------------------SEGMENT PARA PUBLIC 'DATA'dw 1 dup (0) ; Входной сигнал

Xnf    dd 1 dup (0) ; Входной сигнал формат ПЗdd 1 dup (0) ; Выходной сигналdd 1 dup (?) ;dd 1 dup (?) ;dd 1 dup (?);dd 1 dup (?) ;dd 1 dup (?) ;dd 1 dup (0)dd 1 dup (0)dd 1 dup (0)dd 1 dup (0)dd 1 dup (0)db 1 dup (0)db 1 dup (0)

DSEG ENDS

;-----------------------------------SEGMENT PARA PUBLIC 'CODE'CS:CSEG, DS:DSEG, ES:DSEG, SS: SSEG

;-----------------------------------

;----- Основная программа ----------PROC FAR ; Главная подпрограммаax,DSEGds,axes,ax: push cx@ y3, y2 ; y3 = y2@ y2, y1 ; y2 = y1

mov   ax,0   al,port51     xn,ax bl,0    si,xn  ITOF ; преобразование целого xn в формат ПЗ, результат в BX:SI

mov   Xnf,si          Xnf+2,bx

lea di,y1 ; üsi,Хnf ; ôsi,index ;ýcx,2 ;ô y1 = x(nT)movsw ;þ@ y5, y3 ; y5 = y3si,y5di,b2MULT ; y5 = y5*b2si,y1di,y5FSUMMA ; y1 = y1+y5@ y5, y2si,y5di,b1MULT ; y5 = y5*b1si,y1di,y5FSUMMA ; y1 = y1+y5

;-----------------------------------@ y5, y1si,y5di,a0MULT ; y5 = y5*a0@ y4, y5 ; y4 = y5@ y5, y2si,y5di,a1MULT ; y5 = y5*a1si,y4di,y5FSUMMA ; y4 = y4+y5@ y5, y3si,y5di,a2MULT ; y5 = y5*a2si,y4di,y5FSUMMA ; y4 = y4+y5di,ynt ; üsi,y4 ; ô

; add di,index ;ýcx,2 ; | y(nT) = y4movsw ; þ

;start

;===============================================

MULT PROC FAR

; Первый операнд X находится в регистрах BX:SI,

; возвращается в регистрах BX:SI.

; При возникновении особого случая CF=1

;

; lea si,X      ; в нашем случае не используются

; lea di,Y     ; в нашем случае не используются

;bx,[si+2]si,[si]dx,[di+2]di,[di]: ; Проверить операнды на нульax,bx ; Проверить на 0ax,si ; первый операнд@@M1 ; Произведение равно 0ax,dx ; Проверить на 0ax,di ; второй операндMULF1 ; Операнды не равны 0bx,dx ; Произведение равно 0si,di

@@M1: jmp MULF8

;

; Операнды не нулевые, можно умножать.

; Образовать знак произведения, восстановить мантиссы.: mov ch,bh ; Знак произведенияch,dh ; в регистре CHbx,1 ; Восстановить скрытый бит; мантиссы первого операндаbl,1dx,1 ; Восстановить скрытый бит; мантиссы второго операндаdl,1

; Сложить порядки.al,bh ; Сложить в ALal,dh ; смещенные порядкиMULF2 ; Возник переносal,127 ; Вычесть смещениеMULF3 ; Можно умножатьMULF8 ; Возникло антипереполнение: add al,129 ; Учесть потерю 256 из-за переносаMULF3 ; Можно умножатьMULF8 ; Возникло переполнение

; Можно умножать мантиссы.: mov bh,al ; Порядок произведения в BHdh,dh ; Подготовить местоax,ax ; для произведенияcl,dl ; Освободить регистр DX

; Здесь начинается цикл умножения: mov ax,si ; Умножить младшиеdi ; слова мантиссWORD PTR TEMP,dx ; Сохранить старшую часть

;произведенияal,blah,0diWORD PTR TEMP,ax ; Учесть результатNEXT ; в полном произведенииdx: mov WORD PTR TEMP+2,dxal,cl ; Умножить следующиеah,0 ; части мантиссsiWORD PTR TEMP,axNEXT1dx: add dx,WORD PTR TEMP+2al,bl ; Умножить старшиеcl ; байты мантиссax,dx ; Образовать полное произведениеbl,ah ; и разместить егоah,al ; в регистрах BL:SIal,BYTE PTR TEMP+1si,ax

; Проверить нарушение нормализации влево.: or bl,bl ; Проверить старший бит мантиссыMULF7 ; Нарушения нормализации нетbh ; Увеличить порядок на 1; CF=1MULF8 ; Возникло переполнениеMULFA ; Переполнения нет: shl si,1 ; Сдвинуть мантиссуbl,1 ; влево на один бит

; Формирование результата: add ch,ch ; Знак во флаге переносаbh,1 ; Знак числа на местеch,1 ; Младший бит порядка в CHch,7fh ; Образовать маскуbl,ch ; Образовать 2-й байт произведенияdi,Z[di],si[di+2],bx: ret

MULT ENDP

;=================================================

; подпрограмма сложения чисел в формате ПЗ

;======================================================PROC FAR

; 1. Сравнение порядков для определения большего

@S:cl,[si+2] ; Занесение в регистр CXch,[si+3] ; двух старших байтов числа X в ФПЗ.dl,[di+2] ; Занесение в регистр DXdh,[di+3] ; двух старших байтов числа Y в ФПЗ.

; ДЛЯ ВЫЧИТАНИЯ НАДО В СТРОКЕ 30 УДАЛИТЬ

;ТОЧКУ С ЗАПЯТОЙ

; XOR DH,80H

;cx,1 ; Занесение порядка числа X в CHcl,1 ; (и знака в бит 23).dx,1 ; Занесение порядка числа Y в DHdl,1 ; (и знака в бит 23).

;ch,dh ; Сравнение порядков X и Y@L1 ; Переход, если (CH) < (DH) (Px < Py).

;

; 2. Нахождение разности порядков

; Примечание. Из большего порядка вычитается меньший,

; чтобы разность порядков была неотрицательной

;

; 2.1. Порядок X не меньше порядка Y (Px ³ Py) (CH)³(DH).ah,ch ; Нахождение разности порядков или другимиah,dh ; словами кол-ва сдвигов меньшей мантиссыP,ch ; Занесение в P большего порядкаal,dl ; \bl,[di] ; В AX,BX заносится меньшее числоbh,[di+1] ;/SIGL,al ; Сохранение знака меньшего числаdl,[si] ; В CX,DX заносится большее числоdh,[si+1] ; (по модулю)SIGN,cl ; Сохранение знака результата@L2

;

; 2.2. Порядок X меньше порядка Y (Px < Py) (CH) < (DH).

@L1:ah,dh ; Нахождение разности порядков или другимиah,ch ; словами кол-ва сдвигов меньшей мантиссы.P,dh ; Занесение в P большего порядкаal,cl ;\bl,[si] ; В AX,BX заносится меньшее числоbh,[si+1] ;/SIGL,al ; Сохранение знака меньшего числаcl,dl ; \dl,[di] ; В CX,DX заносится большее числоdh,[di+1] ;/ (по модулю)SIGN,cl ; Сохранение знака результата

;

; 3. Преобразование мантисс слагаемых в дополнительный код.

;

; 3.1. Перевод трех байт мантиссы меньшего числа (al,bx)

; из прямого кода в дополнительный

@L2:al,1 ; бит (C) ¬ (регистр al) ¬ 0@L3 ; Переход к метке @L3, если (C) = 0, т.е.

; число в регистрах (al,bx) - неотрицательноеal,1 ; Возврат "1" из бита (C) в старший бит (al).bx ; \al ; Перевод в ДКbx,1 ; отрицательного числа в регистрах (al,bx)al,0 ;/@L4

@L3:al,1 ; Возврат "0" из бита (C) в старший бит (al).al,80H ; Принудительная установка старшего бита

; регистра (al) в "1" (его вес = 1/2)

;

; 3.2. Перевод трех байт мантиссы большего числа (cl,dx)

; из прямого кода в дополнительный

@L4:cl,1 ; бит (C) ¬ (регистр cl) ¬ 0@L5 ; Переход к метке @L5, если (C) = 0, т.е.

; число в регистрах (cl,dx) - неотрицательноеcl,1 ; Возврат "1" из бита (C) в старший бит (cl)dx ;\cl ; Перевод в ДКdx,1 ; отрицательного числа в регистрах (cl,dx)cl,0 ;/@L6

@L5:cl,1 ; Возврат "0" из бита (C) в старший бит (cl)cl,80H ; Принудительная установка старшего бита

; регистра (al) в "1" (его вес = 1/2)

;

; 4. Значение полученной разности используется как количество

; сдвигов вправо мантиссы числа с меньшим порядком

@L6:ah,0@L7ch,SIGL ;\ch,1 ; Сдвиг вправоal,1 ; меньшего числаbx,1 ;/ah ; Уменьшение на 1 значения счетчика сдвигов@L6

;

; 5. Сложение мантисс по правилам сложения чисел с фиксиро-

; ванной запятой

@L7:bx,dx ; Сложениеal,cl ; мантисс

; 6. Преобразование мантиссы результата в прямой код

@L8:cl,SIGN ; Дублированиеcl,1 ; знака результатаcl,1 ; Проверка знака результата (числа с большим

; порядком)@L9 ; Переход к метке @L9, если (C) = 0, т.е.

; если мантисса суммы неотрицательнаbx,1 ;\al,0 ; Перевод отрицательной мантиссы суммы вbx ; (al,bx) из дополнительного кода в прямойal ;/

;

; 7. Нормализация мантиссы результата и при необходимости

; коррекция значения его порядка

@L9:bx,1al,1@L10ah,1@L9

;

; 8. Получение порядка и окончательного результата

;cl,1 ; бит (C) ¬ 0, (регистр al)¬ 0ax,1bx,1

;[si],bl ;\[si+1],bh ; Пересылка результата[si+2],al ; в память[si+3],ah ;/

ret

;ENDP

;=================================================

; подпрограмма преобразования целого числа в формат ПЗ

;=================================================       PROC                   FAR

;                  BH,0           ;Сбросить регистр ВН

MOV          AX,SI                   ;Проверить исходное число            AX,BX       ;на ноль                   EXIT          ;Число равно нулю                AL,BL        ;Сохранить знак в регистре AL

TEST          AL,80H      ;Проверить знак числа          NOC           ;Число положительное             SI                ;Число отрицательное,           BL              ;образовать его              SI,1             ;абсолютное значение            NOC           BL:    MOV          BH,151          ;Исходный порядок: TEST    BL,80H       ;Проверить старший бит                 FORM          ;Нормализация закончена               SI,1             ;Сдвинуть число влево          BL,1            BH              ;Декремент порядка               SLOOP       ;Повторять нормализацию: ADD AL,AL        ;Передать знак во флажок CF

RCR            BH,1           ;Знак числа на месте              AH,1           ;Младший бит прядка АН7                  AH,7FH      ;Образовать маску                 BL,AH        ;Образовать второй байт числа:       RET                               ;Возврат     ENDP

LINK2 ENDP

;-----------------------------------ENDSLINK2

СПИСОК ЛИТЕРАТУРЫ


1. Цифровые устройства и микропроцессоры. Методические указания и задания на контрольную и курсовую работы для студентов заочного факультета

2. Микропроцессоры. Конспект лекций./В.А.Швец

3. Программирование арифметических операций в микропроцессорах./В.К. Злобин, В.Л.Григорьев

4. Микропроцессоры./К.Г.Самофалов, О.В.Викторов, А.К. Кузняк

5. Технические средства микропроцессорных систем./Дж.Коффрон

Похожие работы на - Проектирование аппаратного обеспечения одноплатных микроконтроллеров

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!