Разработка МПС управленя

Автор: Пользователь скрыл имя, 09 Апреля 2012 в 21:31, курсовая работа

Описание работы

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

Содержание

Введение 4
1 Разработка функциональной схемы 5
1.1 Описание принципа работы преобразователя. Выбор элементов силовой части 5
1.2 Описание функциональной схемы системы управления 6
2 Разработка аппаратной части 8
2.1 Краткое описание МП комплекта 8
2.2 Описание структурной схемы системы управления 13
2.3 Выбор элементов памяти 14
2.4 Расчет и выбор элементов сопряжения 14
2.5 Описание схемы электрической принципиальной 18
3 Разработка программного обеспечения 20
3.1 Краткое описание системы команд микропроцессора 20
3.2 Описание алгоритма работы устройства 22
3.3 Текст программы 24
Заключение 26
Список литературы 27

Работа содержит 1 файл

Балахон_готово.doc

— 428.50 Кб (Скачать)

       Команды пересылок передают данные с одного устройства в другое. При написании команды в мнемокодах языка ассемблера в команды пересылок сначала ставится приемник, а затем источник данных. Например, по команде MOV АX, ВX  содержимое регистра ВX перепишется в регистр АX. После выполнения команды в регистрах ВX и АX будет один и тот же код. Вообще команда MOV обеспечивает пересылки регистр– регистр/память и память–регистр при использовании любого способа адресации памяти.

       Команда XCNG осуществляет обмен данными между источником и получателем.

       Команды LEA, LDS, LES отличаются от других команд пересылки тем, что при их выполнении в адресуемый регистр (регистры) передаются не собственно данные из памяти, а их адреса.

       Команды арифметических операций выполняются над целыми числами 4-х типов: знаковыми, беззнаковыми, упакованными и неупакованными десятичными. Числа могут быть: беззнаковые (0…255 или 0…65535) или знаковые: (-128…127 или –32,768…32,767).

       Команда NEG изменяет знак числа.

       Команды умножения MUL (IMUL– для знаковых чисел) выполняют умножение адресуемого операнда (общего регистра или ячейку памяти) и содержимого аккумулятора ac. При работе с байтами функции аккумулятора выполняет регистр AL, а функции его расширения– регистр AH, так что 16-ти битовое произведение формируется в регистре АХ. Если перемножаются слова, то множимое содержится в регистре АХ, а функцию его расширения несет на себе регистр DX, следовательно, результат находится в регистрах DX, AX.

       Команды деления DIV (IDIV– для знаковых чисел) производят деление содержимого аккумулятора и его расширения (AH:AL для 8-ми битового и DX:AX для 16-ти битового делимого) на содержимое регистра или ячейки памяти. Частное– в регистре AL или AX, а остаток в регистре AH  или DX. Дробное число округляется до целого путем отбрасывания дробной части результата.

       Так же есть команды сложения, вычитания, инкрементирования и декрементирования, сравнения.

       Логические  команды AND («И»), OR («ИЛИ»), NOT («НЕ»), XOR («Исключающее ИЛИ)», TEST(«неразрушающая проверка, которая выполняет конъюнкцию  «И» операндов без изменения их значения, но влияя на флаги»).

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

 

  • Команды безусловных переходов (JMP);
  • Команды вызова подпрограмм (СALL);
  • Команды возвратов из подпрограмм (RET);
  • Команды условных переходов (в зависимости от состояния флагов регистра признаков F).
  • Есть так же команды управления циклами, обработки цепочек.

       В целом система команд сделана  совместимой с системой команд КР580 ВМ80 однако в К1810 ВМ86 система команд гораздо более мощная и имеет гораздо больший потенциал.

       Способы адресации

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

       Регистровая адресация. Операнд находится в одном из общих регистров МП или в одном из сегментных регистров. Регистр может быть определен в байте кода операции или в постбайте, в котором выделены 3-битовые поля reg

       и r/m (при md=11). Команды, оперирующие содержимым регистров, являются наиболее короткими и выполняются за наименьшее время, так как не требуют вычисления ЕА и выполнения цикла шины для обращения к памяти. Для многих команд с регистровой адресацией предусмотрены специальные укороченные форматы.

       Непосредственная  адресация. Непосредственными операндами являются константы длиной 8 или 16 бит, которые размещаются в последних байтах команды (младший байт следует первым). Доступ к таким операндам в ВМ86 осуществляется очень быстро, поскольку во время выполнения команды они находятся во внутренней очереди команд. Имеются команды, позволяющие манипулировать непосредственными операндами и содержимым общих регистров или ячеек памяти. Однако отсутствуют команды непосредственной загрузки сегментных регистров и включения константы в стек. Поэтому эти операции осуществляются с помощью промежуточной загрузки общего регистра или ячейки памяти.

       Прямая  адресация является простейшим способом адресации ячейки ЗУ, при котором эффективным адресом ЕА является содержимое байтов смещения disp команды. В командах преобразования данных этот способ реализуется при использовании постбайта с полями md=00 и r/m=110. Для пересылок между аккумулятором и памятью предусмотрен укороченный формат.

       Разновидностью  этого способа является длинная  прямая адресация, при которой в  формате команды содержатся четыре байта, указывающие базовый адрес  сегмента и сегментное смещение offset. В этом случае обеспечивается доступ к ячейке с любым логическим адресом, т. е. к произвольной ячейке во всем пространстве адресов 1 Мбайт, недлинная прямая адресация используется только в командах межсегментных переходов и вызовов подпрограмм. Другая разновидность прямой адресации применяется для указания портов ввода — вывода в двухбайтовых командах IN и OUT, второй байт которых содержит адрес (номер) порта.

       Косвенная регистровая адресация. В командах преобразования данных эффективный адрес ЕА равен содержимому одного из регистров SI, DI, ВХ и ВР при соответствующем кодировании полей md и reg постбайта: md=00;

       r/m=100, 101, 111 и md==01, r/m=110; dispL=0. В командах безусловного перехода и вызова подпрограммы с регистровой косвенной адресацией допускается указание любого 16-битового общего регистра (при md=11; r/m=000,..., 111).

       Данный  способ адресации позволяет вычислять  адреса во время выполнения программ, что часто требуется, например, для обращения к различным элементам таблиц данных. При модификации содержимого регистра одна и та же команда оперирует различными ячейками памяти, что позволяет организовать вычислительные циклы. Изменение содержимого регистра обычно осуществляется с помощью команд инкрементирования и декрементирования, а также других арифметических команд и команды загрузки эффективного адреса LEA. Разновидностью этого способа является косвенная адресация портов ввода — вывода с помощью содержимого регистра DX в однобайтовых командах IN и OUT.

       Базовая адресация. Эффективный адрес операнда ЕА вычисляется путем суммирования содержимого базовых регистров ВХ или ВР и смещения disp (при md==01, 10 и r/m = 111, 110). При использовании ВХ происходит обращение к операнду в текущем сегменте данных, а при использовании ВР — в текущем сегменте стека. Смещения, содержащиеся в команде, могут иметь длину 8 или 16 бит и интерпретируются как знаковые целые, представленные в дополнительном коде.

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

       Индексная адресация. Значение ЕА вычисляется как сумма смещения disp, находящегося в команде, и содержимого индексного регистра SI или DI (при md=01, 10 и r/m=100, 101). Данный способ обычно применяется для обращения к различным элементам одномерного массива (таблицы) данных, когда смещение определяет известный при ассемблировании начальный адрес массива, а индексный регистр, содержимое которого может модифицироваться при выполнении программы, определяет элемент массива. По существу индексная адресация в ВМ86 аналогична базовой.

       Базовая индексная адресация. Эффективный адрес ЕА равен сумме содержимого базового регистра ВХ или ВР, индексного регистра SI или DI и смещения disp, находящегося в команде (в частном случае смещение может отсутствовать). Этот способ реализуется при следующем кодировании полей постбайта: md≠11; r/m=000, 001, 010, Oil и обеспечивает наибольшую гибкость адресации, так как два компонента адреса можно определить и варьировать при выполнении программы. Это удобно при обращении к элементам матриц, т.е. к двумерным массивам, представляемым в памяти как совокупность одномерных массивов.

       Относительная адресация ЦП ВМ86 реализуется только по отношению к указателю команд IP, так что сегментное смещение вычисляется как сумма смещения disp, находящегося в команде, и текущего значения IP. При этом значение IP равно адресу байта, следующего за рассматриваемой командой. которая в это время выполняется микропроцессором. В ВМ86 относительная адресация не используется в командах, оперирующих данными, а применяется только в командах условных и безусловных переходов, вызовов подпрограмм и управления циклами. Смещение по отношению к содержимому IP не зависит от размещения программ в адресном пространстве памяти, что обеспечивает позиционную независимость команд. При автоматизированном ассемблировании программы указывается метка команды, которой передается управление. а необходимое смещение вычисляется программой-ассемблером.

       Неявная адресация. Объект, содержимым которого манипулирует команда. указывается с помощью первого байта команды вместе с кодом операции без выделения специального поля для этой цели. Чаще всего этот специфический способ адресации встречается в однобайтовых командах, где адресуемым объектом являются аккумулятор, регистр флагов или отдельные флаги В частности, в командах обработки цепочек неявно используются индексные регистры, причем регистр SI адресует первый элемент цепочки-источника, а регистр DI — первый элемент цепочки-получателя. 

       3.2 Описание алгоритма  работы устройства 

       
  • После включения  устройства происходит инициализация системы. Она включает в себя задание имен и адресов всех внешних устройств,  программирование режимов счетчиков таймера..
  • Программирование параллельного порта: Порт А—на ввод; Порт В—на ввод; Порт С—на вывод,.
  • Определение текущей частоты питающей сети.
  • После инициализации выдается сигнал «Готовность» на старший разряд порта С.
  • Далее происходит запуск рабочей программы.
  • Предварительно устанавливается в 0 индекс номера индикатора и считываемой строки клавиатуры.
  • Происходит передача через порт С номера текущего индикатора на отображение
  • Дале происходит отображение i-го индикатора через порт В.
  • После чего опрашивается порт А и проверяется наличие сигнала блокировки, и если таковой имеется, то вызывается процедура обработки сигнала блокировки Block, если нет, то снимается режим блокировки. Затем проверяется режим работы (АЦП или «клавиатура») и в зависимости от этого вызывается процедура считывания АЦП или обработки сигналов с клавиатуры.
  • Индикаторы разбиты на 2 части по 4 индикатора в каждой. На первых 3-х показывается текущее значение напряжения, четвертый– вспомогательный. На нем можно отображать специальные сигнальные символы (например, символ, соответствующий минимальному и максимальному напряжению). Оставшиеся 4 индикатора активны. На них отображается вводимые с клавиатуры значения (3 индикатора, а один из них– запасной).
  • Цифровые клавиши клавиатуры дают возможность ввести десятичное число в текущий индикатор (первы4 индикатора 2-ой половины индикаторов). При нажатии цифровой клавиши ее значение определяется специальной процедурой и она отображается на текущем индикаторе. Указатель текущего индикатора переходит на следующий (с третьего на первый (естественно во второй половине)).
  • Функциональные клавиши (Ok, Del, Test)– при их нажатии вызывается соответствующая процедура.
  • После чего при наличии изменений (специальная переменная) и отсутствии сигнала блокировки происходит расчет данных для пересылки в счетчики и непосредственно пересылка.
  • Затем определяются новые показания индикаторов.
  • Затем увеличивается счетчик разрядов и программа начинается с начала.

       Поясним некоторые процедуры:

       Процедура расчета новых  данных для счетчиков.

       В данной процедуре происходит расчет чисел, которые будут направлены в счетчики таймера в зависимости  от значения переменной U, в которой хранится двоичное число, соответствующее заданному напряжению (0…380 В). При попытке задания напряжения более 280 В (с клавиатуры) напряжение будет оставаться 380 В.

       Пусть частота сети 50 Гц. В памяти уже  хранится количество тактовых импульсов от ЗГ за полпериода и это число N0=1000. То есть если в счетчики послать число N=1000, то выходное напряжение будет равно 0. Если послать число 0, то напряжение будет равно 380 В.

       Вообще  число, посылаемое на счетчик можно  вычислить по формуле в зависимости от заданного напряжения U по формуле, которая достаточно сложна для вычисления, а напряжение от угла зависит по формуле:

                        ,  (3.1) 

где  – угол открытия тиристоров.

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

       Для АЦП при аналоговом задающем сигнале 0 В ТРН должен выдавать напряжение 0 В, а при сигнале 10 В ТРН должен выдавать напряжение 220 В. Тогда имеем: 

                    ;  (3.2)

       Процедура Ок  записывает число с левой половины индикаторов в правую (с учетом диапазона 0…380 В) и устанавливает флаг байта, который содержит информацию о наличии изменения в задании нпряжения.

       Процедура Del. Эта процедура позволяет переместиться на один вводимый символ (индикатор) назад (влево). То есть после нажатия какой либо цифровой клавиши, она отображается в одном из левой половины индикаторов (последний не задействован), и нажатая оператором следующая клавиша отобразится в следующем индикаторе (после 7-го, последует 5-ый), а при нажатии клавиши Del следующая нажатая цифровая клавиша отобразится на том же индикаторе, что и предыдущая, а следовательно изменит ее. При двукратном нажатии на кнопку Del следующая цифровая клавиша отобразится на один индикатор левее и т. д (после достижения 5-го индикатора кнопка Bkspc работать не будет, и нажатая после цифровая клавиша будет отображена в 5-ом индикаторе.

       Процедура BLOCK.Наличие сигнала «Блокировка» приводит к присваиванию переменной Block_data значения, соответствующего режиму «блокировка». Снятие сигнала «Блокировка» приводит к присваиванию переменной Block_data значения, соответствующего режиму «нет блокировки».

Информация о работе Разработка МПС управленя