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

Автор работы: Пользователь скрыл имя, 11 Марта 2015 в 20:19, курсовая работа

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

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

Файлы: 1 файл

Пояснительная.doc

— 597.00 Кб (Скачать файл)

Также в ПЗУ присутствует подпрограмма реакции системы на падение напряжения питания.

    1. Описание работы микропроцессорной системы

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

Системный контроллер DD6 предназначен для формирования шины данных, запоминания слова состояния МП и для формирования шины управления.

При подаче сигнала RST микропроцессор DD2 устанавливается в исходное состояние.

С помощью дешифратора DD7 производится выбор устройств: микросхема ОЗУ, микросхемы ПЗУ, ППИ, контролер прерываний. Выбор производится с помощью линий A15-A14 системной шины адреса.

Для выбора модуля ОЗУ необходимо рассчитать необходимы объем памяти для хранения показаний датчиков

 

.


 

Максимальный размер

На входы мультиплексора DA1 подаются линии A0 и A1 системной шины адреса, определяющие, какой датчик будет подключен в данный момент к АЦП DA2. Затем производится запуск АЦП, опрашивается сигнал АЦП BUSY через шину данных. По положительному переходу сигнала BUSY данные с выхода АЦП поступают в микропроцессор и переписываются в ОЗУ. Далее АЦП сбрасывается и затем опрашивается следующий датчик. [4]

К порту A ППИ DD12 подключены дискретные датчики. К порту B подключены светодиоды. Через порт С передаются данные в универсальный приемопередатчик.

Дисплей подключен к системной шине данных. Младший байт содержит информацию об изображаемом символе, а старший – его положение.

Микропроцессор запускает таймер DD14 и контролирует его работу через прерывание. После окончания счета вырабатывается сигнал прерывания IR0, который обрабатывает соответствующая программа обработки прерываний. [1]

На входы контроллера прерываний DD15 поступают запросы на прерывания. Самый высокий приоритет имеет запрос на прерывание от таймера. Более низкий приоритет имеют запросы на прерывание от универсального приемопередатчика. К остальным входам контроллера прерываний подключены кнопки.

Таймер DD16 используется в системе реагирования на зависание системы. Со второго выхода таймера сигнал подается на входы TxD и RxD приемопередатчика. Третий выход подается на динамик через транзистор VT1.

Универсальный приемопередатчик DD17 предназначен для осуществления передачи данных на верхний уровень.

Выбор порта или регистра управляющего слова ППИ осуществляется через линии A0, A1 системной шины адреса.

Резисторы R2-R9 служат для преобразования унифицированного токового сигнала 4…20 мА в напряжение 1…5В.

Генератор DD1 служит для формирования сигналов сброса системы и синхронизации. Для формирования сигнала синхронизации к его входам X1 и X2 подключен кварцевый резонатор.

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

Формирователь шины адреса выполнен на двух микросхемах DD3, DD4. Формирователь работает следующим образом: в первый машинный такт каждого машинного цикла микропроцессор выдает сигнал логической единицы по линии ALE, который подается на входы STB микросхем DD3, DD4. По этому сигналу адресные биты шины адреса микропроцессора записываются, и на шине адреса микропроцессорной системы появляется адрес устройства, к которому в текущем или следующих машинных циклах будет обращаться процессор. При уровне логического нуля сигнала ALE DD3 и DD4 перейдут в режим хранения и на протяжении всего машинного цикла будут  хранить на своих выходах адресные биты.

Формирователь шины данных выполнен на микросхемах DD5 DD6. Выбор микросхемы осуществляется низким уровнем сигнала  ALE, направлением передачи данных управляет сигнал WR микропроцессора.

Дешифратор адреса функциональных блоков микропроцессорной системы выполнен на микросхеме DD11. Каждой комбинации входных сигналов А12 - А14 соответствует один из сигналов обращения к функциональным узлам. Система спроектирована таким образом, что обращение микропроцессора к функциональным узлам происходит как к ячейке памяти с определенным адресом.

Преобразователь сигналов токовых датчиков в сигналы напряжения построен на резисторе R2-R9, R18-R21.

ППИ DD12 работает в нулевом режиме.

Значения аналоговых датчиков считываются с аналого-цифрового преобразователя (АЦП) DA2. Считывание значения происходит по команде LDA.

Дешифратор адреса DD14 устанавливает в ноль девятый выход, который подается на вход CS аналого-цифрового преобразователя и выбирает микросхему АЦП. В результате такой комбинации управляющих сигналов АЦП начнет преобразование. Поскольку тактовая частота аналого-цифрового преобразователя 0.5 МГц, а микропроцессора 2МГц во время преобразования микропроцессор должен находиться в режиме ожидания. Это реализуется сигналом готовности данных (BUSY) АЦП. Во время преобразования аналого-цифровой преобразователь на входе READY микропроцессора держит сигнал уровня логической единицы и он находится в режиме ожидания до тех пор, пока данные не появятся на выходах D1..D8 АЦП.

Резистор R1 и R10  и конденсатор C1 соединены с выводами АЦП согласно типовой схеме включения выбранной микросхемы.

 

  1. Расчет потребляемой мощности

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

Мощность, потребляемая микропроцессором

Генератор тактовых импульсов потребляет .

Мощность, потребляемая буферным регистром

 

,


 

где   - ток потребления RG;

- питание RG.

Мощность, потребляемая шинным формирователем

 

,


 

где   - ток потребления BD;

- питание BD.

Мощность, потребляемая ОЗУ

 

,


 

где   - ток потребления ОЗУ;

- питание ОЗУ.

Мощность, потребляемая ПЗУ

 

,


 

где   - ток потребления ПЗУ;

- питание ПЗУ.

Мощность, потребляемая дешифратором .

ППИ потребляет мощность .

Мощность, потребляемая индикатором .

Мощность, потребляемая таймером

Мощность, потребляемая контроллером прерываний

Мощность, потребляемая приемопередатчиком

 

,


 

где   - ток потребления PCI;

- питание PCI.

Каждый светодиод потребляет

 

,


 

где   - ток потребления VD;

- питание VD.

Мощность, выделяемая резисторами R2-R9, R18-R21 составляет 0,1 Вт.

Мощность, потребляемая всей системой:

 

.


 

Система потребляет мощность .

 

Заключение

 

Результатом курсовой работы является разработанная на основе микропроцессора КМ1810ВМ86 информационно-измерительная система по сбору данных с электрической подстанции. Система выполняет опрос аналоговых, дискретных и цифровых датчиков, запись информации в ОЗУ и передачу результатов замеров на верхний уровень управления, также позволяет выводить на дисплей значение необходимого датчика. В случае аварии звуковая сигнализация.

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

 

 

Список использованных источников

 

1  Батушев В. А. Микросхемы и их применение: Справочное пособие.-2-е изд., перераб. и доп. - М.: Радио и связь, 1983.- 272 с.

2  Интегральные микросхемы: Справочник. / Под ред. Тарабрина Б.В. - М.: Радио и связь 1983. - 120с.

3  Каган Б. М. Электронные вычислительные машины и системы. – М.: Энергоатомиздат, 1985. – 552с.

4  Коломбет Е. А. Микропроцессорные средства обработки аналоговых сигналов. - М.: Радио и связь, 1991.- 25, 56, 85-86 с.

5  Федорков Б. Г., Телец В. А. Микросхемы ЦАП и АЦП: функционирование,              параметры, применение. – М.: Энергоиздат, 1990.-320 с.: ил.

6  Шевкопляс Б. В. Микропроцессорные структуры. Инженерные решения: Справочник. – 2-е изд. перераб. и доп. – М.: Радио и связь, 1990. – 512 с.: ил.

7  Шульц Ю.А. Измерительная техника. 1000 понятий для практиков. Справочник. - М.:Энергоатомиздат,1989, - 287с.

 

 

Приложение А

Структурная схема микропроцессорной системы

Структурная схема микропроцессорной системы показана на Рисунке А.1.

Рисунок А.1 Структурная схема микропроцессорной системы

 

На рисунке А.1 используются следующие обозначения:

ша – шина адреса; шд – шина данных; шу – шина управления; МП – микропроцессор; ОЗУ – оперативное запоминающее устройство; Дисплей – жидкокристаллический индикатор; ПЗУ – постоянное запоминающее устройство; ПТ – программируемый таймер; ППИ – параллельный программируемый интерфейс; АЦП – аналогово-цифровой преобразователь; БИ – блок индикации (светодиоды); PIC – контроллер прерываний; БК – блок кнопок; УСАПП – универсальный синхронно-асинхронный приемопередатчик.

 

 

 

 

 

 

 

 

 

 

 

Приложение Б

 

Блок-схемы алгоритмов работы программы и подпрограмм

На Рисунке Б.1 изображена блок-схема алгоритма работы основной программы.

 

Рисунок Б.1 – Блок-схема алгоритма работы основной программы

На Рисунке Б.2 показана блок-схема алгоритм подпрограммы обработки запроса на прерывание от таймера, обеспечивающая опрос датчиков.

На Рисунке Б.3 показана блок-схема обработки запроса на прерывание, вызванное нажатием кнопки.

Рисунок Б.2 – Блок-схема подпрограммы опроса датчиков

Рисунок Б.3 – Подпрограмма обработки нажатия на кнопку

 

Приложение В

 

Текст программы

Метка

Мнемокод

Комментарий

   

Инициализация микропроцессорной системы

 

LXI SP, 3FFFH

Инициализация указателя стека

 

MVI A, 92H

Инициализация параллельного интерфейса

 

OUT 2BH

 

MVI A, 82H

Инициализация параллельного интерфейса 

 

OUT 2FH

 

MVI A, 00H

Обнулить ячейки кодов неисправностей

 

STA 3000H

 

STA 3004Н

   
 

MVI A, 36H

Инициализация счетчика 0 таймера на режим делителя частоты для синхронизации приема/передачи последовательного интерфейса, частота синхронизации 1200 Гц

 

OUT 37H

 

MVI A, E2Н

 

OUT 34H

 

MVI A, 04Н

 

OUT 34H

 

MVI A, B0H

Инициализация счетчика  таймера на импульс через 20 мс для организации запроса на прерывание

 

OUT 37H

 

MVI A, 30H

 

OUT 36H

 

MVI A, 75H

 

OUT 36H

 

EI

Разрешить прерывания

Очистка ОЗУ

 

MVI A,80H

Очистка ОЗУ

 

MVI B,00H

 

JNZ R1

 

MVI C,02H

Число тестов при сбое

 

MVI A,00H

Очистка и тестирование ОЗУ

 

LXI D,2000H

 

MVI B,0FH

 

MVI C,FFH

 

STAX D

 

LDAX B

 

JZ R2

 

LXI B,3001H

 
 

MVI A, 01H

 
 

STAX B

 
 

POP B

 
   

Опрос датчиков

BEGIN

MVI A, 08H

Выбор канала датчика тока на входе

 

OUT 2АH

 

CALL CONV

Вызов подпрограммы аналого-цифрового преобразования

 

MOV A, H

Контроль исправности датчика (неисправен, если показания датчика < 0)

 

ORA A

 

JP SCALE1

 

LDA 3000H

Установка соответствующего бита в ячейке неисправностей

 

ORI 01H

 

STA 3000H

 

JMP NEXT2

Переход к опросу следующего датчика

SCALE1

LDA 3000H

Сброс соответствующего бита в ячейке кода неисправностей

 

ANI FEH

 

STA 3000Н

 

MOV B, H

Масштабирование показаний датчика (XXXXH – данные с АЦП)

 

MOV C, L

 
 

SHLD 3002H

Сохранение промежуточного результата вычислений

 

MOV H, B

 
 

MOV L, C

 
 

LXI D,09H

Задать множитель 09

 

CALL MULTI

Умножение

 

LXI D, 001EH

Задать делитель

 

CALL DIV

Разделить показания датчика на 30

 

XCHG

 
 

LHLD 3002H

 
 

CALL SUBTR

Вычислить натуральное тока на входе=(1-9/30)×XXXXH

 

SHLD 3010H

Сохранить значение тока в базе данных

NEXT2

MVI A, 09H

Выбор канала датчика напряжения на входе

 

OUT 2АH

 

CALL CONV

Вызов подпрограммы аналого-цифрового преобразования

 

MOV A, H

Контроль исправности датчика (неисправен, если показания датчика < 0)

 

ORA A

 

JP SCALE2

 

LDA 3000H

Установка соответствующего бита в ячейке неисправностей

 

ORI 02H

 

STA 3000H

 

JMP NEXT3

Переход к опросу следующего датчика

SCALE2

LDA 3000H

Сброс соответствующего бита в ячейке кода неисправностей

 

ANI FDH

 

STA 3000Н

   

Масштабирование показаний датчика (XXXXH – данные с АЦП)

 

LXI D,0EH

 
 

CALL MULTI

 
 

SHLD 3012H

Сохранить значение напряжения в базе данных

NEXT3

MVI A, 0AH

Выбор канала датчика напряжения

 

OUT 2АH

 

CALL CONV

Вызов подпрограммы аналого-цифрового преобразования

 

MOV A, H

Контроль исправности датчика (неисправен, если показания датчика < 0)

 

ORA A

 

JP SCALE3

 

LDA 3000H

Установка соответствующего бита в ячейке неисправностей

 

ORI 04H

 

STA 3000H

 

JMP NEXT4

Переход к опросу следующего датчика

SCALE3

LDA 3000H

Сброс соответствующего бита в ячейке кода неисправностей

 

ANI FBH

 

STA 3000Н

 

MOV B, H

Масштабирование показаний датчика (XXXXH – данные с АЦП)

 

MOV C, L

 
 

SHLD 3002H

Сохранение промежуточного результата вычислений

 

LXI D, 000AH

Задать делитель

 

CALL DIV

Разделить показания датчика на 10

 

XCHG

 
 

LHLD 3002H

 
 

CALL SUBTR

Вычислить натуральное значение напряжения =(1-1/10)×XXXXH

 

SHLD 3014H

Сохранить значение напряжения в базе данных

NEXT4

MVI A, 0BH

Выбор канала датчика тока

 

OUT 2АH

 

CALL CONV

Вызов подпрограммы аналого-цифрового преобразования

 

MOV A, H

Контроль исправности датчика (неисправен, если показания датчика < 0)

 

ORA A

 

JP SCALE4

 

LDA 3000H

Установка соответствующего бита в ячейке неисправностей

 

ORI 08H

 

STA 3000H

 

JMP NEXT5

Переход к опросу следующего датчика

SCALE4

LDA 3000H

Сброс соответствующего бита в ячейке кода неисправностей

 

ANI F7H

 

STA 3000Н

 

MOV B, H

Масштабирование показаний датчика (XXXXH – данные с АЦП)

 

MOV C, L

 
 

SHLD 3002H

Сохранение промежуточного результата вычислений

 

LXI D, 000AH

Задать делитель

 

CALL DIV

Разделить показания датчика на 10

 

XCHG

 
 

LHLD 3002H

 
 

CALL SUBTR

Вычислить натуральное значение тока =(1-1/10)×XXXXH

 

SHLD 3016H

Сохранить значение тока в базе данных

NEXT5

MVI A, 0CH

Выбор канала датчика тока

 

OUT 2АH

 

CALL CONV

Вызов подпрограммы аналого-цифрового преобразования

 

MOV A, H

Контроль исправности датчика (неисправен, если показания датчика < 0)

 

ORA A

 

JP SCALE6

 

LDA 3000H

Установка соответствующего бита в ячейке неисправностей

 

ORI 10H

 

STA 3000H

 

JMP NEXT6

Переход к опросу следующего датчика

SCALE5

LDA 3000H

Сброс соответствующего бита в ячейке кода неисправностей

 

ANI EFH

 

STA 3000Н

 

MOV B, H

Масштабирование показаний датчика (XXXXH – данные с АЦП)

 

MOV C, L

 
 

SHLD 3002H

Сохранение промежуточного результата вычислений

 

LXI D, 000AH

Задать делитель

 

CALL DIV

Разделить показания датчика на 10

 

XCHG

 
 

LHLD 3002H

 
 

CALL SUBTR

Вычислить натуральное значение напряжения =(1-1/10)×XXXXH

 

SHLD 3018H

Сохранить значение напряжения в базе данных

NEXT6

MVI A, 0DH

Выбор канала датчика напряжения на выходе

 

OUT 2АH

 

CALL CONV

Вызов подпрограммы аналого-цифрового преобразования

 

MOV A, H

Контроль исправности датчика (неисправен, если показания датчика < 0)

 

ORA A

 

JP SCALE6

 

LDA 3000H

Установка соответствующего бита в ячейке неисправностей

 

ORI 20H

 

STA 3000H

 

JMP NEXT7

Переход к опросу следующего датчика

SCALE6

LDA 3000H

Сброс соответствующего бита в ячейке кода неисправностей

 

ANI DFH

 

STA 3000Н

 

MOV B, H

Масштабирование показаний датчика (XXXXH – данные с АЦП)

 

MOV C, L

 
 

LXI D,02H

Задать множитель 02

 

CALL MULTI

Умножение

 

SHLD 3002H

Сохранение промежуточного результата вычислений

 

MOV H, B

 
 

MOV L, C

 
 

LXI D,03H

Задать множитель 03

 

CALL MULTI

Умножение

 

LXI D, 0005H

Задать делитель

 

CALL DIV

Разделить показания датчика на 5

 

XCHG

 
 

LHLD 3002H

 
 

CALL SUBTR

Вычислить натуральное значение напряжения =(2-3/5)×XXXXH

 

SHLD 301АH

Сохранить значение напряжения в базе данных

NEXT7

MVI A, 0EH

Выбор канала датчика давления

 

OUT 2АH

 

CALL CONV

Вызов подпрограммы аналого-цифрового преобразования

 

MOV A, H

Контроль исправности датчика (неисправен, если показания датчика < 0)

 

ORA A

 

JP SCALE7

 

LDA 3000H

Установка соответствующего бита в ячейке неисправностей

 

ORI 40H

 

STA 3000H

 

JMP NEXT8

Переход к опросу следующего датчика

SCALE7

LDA 3000H

Сброс соответствующего бита в ячейке кода неисправностей

 

ANI BFH

 

STA 3000Н

 

MOV B, H

Масштабирование показаний датчика (XXXXH – данные с АЦП)

 

MOV C, L

 
 

LXI D,02H

Задать множитель 02

 

CALL MULTI

Умножение

 

SHLD 3002H

Сохранение промежуточного результата вычислений

 

MOV H, B

 
 

MOV L, C

 
 

LXI D,03H

Задать множитель 03

 

CALL MULTI

Умножение

 

LXI D, 0005H

Задать делитель

 

CALL DIV

Разделить показания датчика на 5

 

XCHG

 
 

LHLD 3002H

 
 

CALL SUBTR

Вычислить натуральное значение тока =(2-3/5)×XXXXH

 

SHLD 301СH

Сохранить значение тока в базе данных

NEXT8

MVI A, 0АH

Выбор канала датчика тока

 

OUT 2АH

 
 

CALL CONV

Вызов подпрограммы аналого-цифрового преобразования

Контроль исправности датчика и переход к масштабированию показаний датчика

 

MOV A, H

 

ORA A

 
 

JP SCALE8

 

Установка соответствующего бита в коде неисправностей

 

LDA 3000H

 

ORI 80H

 

STA 3000H

Переход к опросу следующего датчика в случае неисправности датчика

Сброс соответствующего бита в ячейке кода неисправностей

 

JMP NEXT9

SCALE8

LDA 3000H

 

ANI 7АH

 
 

STA 3000H

 

Масштабирование показаний датчика

 

MOV B, H

 

MOV C, L

 

LXI D, 001АH

Задать множитель

 

CALL MULTI

Умножить показания датчика на 28

 

SHLD 301ЕH

Сохранить значение тока в базе данных

NEXT9

MVI A, 00H

Выбор канала датчика тока

 

OUT 2АH

 

CALL CONV

Вызов подпрограммы аналого-цифрового преобразования

 

MOV A, H

Контроль исправности датчика (неисправен, если показания датчика < 0)

 

ORA A

 

JP SCALE9

 

LDA 3001H

Установка соответствующего бита в ячейке неисправностей

 

ORI 01H

 

STA 3001H

 

JMP NEXT10

Переход к опросу следующего датчика

SCALE9

LDA 3001H

Сброс соответствующего бита в ячейке кода неисправностей

 

ANI FЕH

 

STA 3001Н

 

MOV B, H

Масштабирование показаний датчика (XXXXH – данные с АЦП)

 

MOV C, L

 
 

LXI D,03H

Задать множитель 03

 

CALL MULTI

Умножение

 

SHLD 3002H

Сохранение промежуточного результата вычислений

 

MOV H, B

 
 

MOV L, C

 
 

LXI D, 0005H

Задать делитель

 

CALL DIV

Разделить показания датчика на 5

 

XCHG

 
 

LHLD 3002H

 
 

CALL SUBTR

Вычислить натуральное значение напряжения =(3-3/5)×XXXXH

 

SHLD 3020H

Сохранить значение напряжения в базе данных

NEXT10

MVI A, 02H

Выбор канала датчика напряжения

 

OUT 2АH

 

CALL CONV

Вызов подпрограммы аналого-цифрового преобразования

 

MOV A, H

Контроль исправности датчика (неисправен, если показания датчика < 0)

 

ORA A

 

JP SCALE10

 

LDA 3001H

Установка соответствующего бита в ячейке неисправностей

 

ORI 02H

 

STA 3001H

 

JMP NEXT11

Переход к опросу следующего датчика

SCALE10

LDA 3001H

Сброс соответствующего бита в ячейке кода неисправностей

 

ANI FDH

 

STA 3001Н

 

MOV B, H

Масштабирование показаний датчика (XXXXH – данные с АЦП)

 

MOV C, L

 
 

LXI D,02H

Задать множитель 02

 

CALL MULTI

Умножение

 

SHLD 3002H

Сохранение промежуточного результата вычислений

 

MOV H, B

 
 

MOV L, C

 
 

LXI D,03H

Задать множитель 03

 

CALL MULTI

Умножение

 

LXI D, 0005H

Задать делитель

 

CALL DIV

Разделить показания датчика на 5

 

XCHG

 
 

LHLD 3002H

 
 

CALL SUBTR

Вычислить натуральное значение тока =(2-3/5)×XXXXH

 

SHLD 3022H

Сохранить значение тока в базе данных

NEXT11

MVI A, 03H

Выбор канала датчика давления

 

OUT 2АH

 

CALL CONV

Вызов подпрограммы аналого-цифрового преобразования

 

MOV A, H

Контроль исправности датчика (неисправен, если показания датчика < 0)

 

ORA A

 

JP SCALE11

 

LDA 3001H

Установка соответствующего бита в ячейке неисправностей

 

ORI 04H

 

STA 3001H

 

JMP NEXT12

Переход к опросу следующего датчика

SCALE11

LDA 3001H

Сброс соответствующего бита в ячейке кода неисправностей

 

ANI FВH

 

STA 3001Н

 

MOV B, H

Масштабирование показаний датчика (XXXXH – данные с АЦП)

 

MOV C, L

 
 

LXI D,02H

Задать множитель 02

 

CALL MULTI

Умножение

 

SHLD 3002H

Сохранение промежуточного результата вычислений

 

MOV H, B

 
 

MOV L, C

 
 

LXI D,03H

Задать множитель 03

 

CALL MULTI

Умножение

 

LXI D, 0005H

Задать делитель

 

CALL DIV

Разделить показания датчика на 5

 

XCHG

 
 

LHLD 3002H

 
 

CALL SUBTR

Вычислить натуральное значение напряжения =(2-3/5)×XXXXH

 

SHLD 3024H

Сохранить значение напряжения в базе данных

NEXT12

MVI A, 04H

Выбор канала датчика напряжения на выходе

 

OUT 2АH

 

CALL CONV

Вызов подпрограммы аналого-цифрового преобразования

 

MOV A, H

Контроль исправности датчика (неисправен, если показания датчика < 0)

 

ORA A

 

JP SCALE12

 

LDA 3001H

Установка соответствующего бита в ячейке неисправностей

 

ORI 08H

 

STA 3001H

 

JMP NEXT13

Переход к опросу следующего датчика

SCALE12

LDA 3001H

Сброс соответствующего бита в ячейке кода неисправностей

 

ANI F7H

 

STA 3001Н

 

MOV B, H

Масштабирование показаний датчика (XXXXH – данные с АЦП)

 

MOV C, L

 
 

LXI D,0ЕH

Задать множитель 14

 

CALL MULTI

Умножение

 

SHLD 3026H

Сохранить значение тока в базе данных

 

LDA 3001H

Установка соответствующего бита в ячейке неисправностей

 

ORI 10H

 

STA 3001H

 

JMP NEXT14

Переход к опросу следующего датчика

SCALE13

LDA 3001H

Сброс соответствующего бита в ячейке кода неисправностей

 

ANI ЕFH

 

STA 3001Н

 

MOV B, H

Масштабирование показаний датчика (XXXXH – данные с АЦП)

 

MOV C, L

 
 

LXI D,02H

Задать множитель 02

 

CALL MULTI

Умножение

 

SHLD 3002H

Сохранение промежуточного результата вычислений

 

MOV H, B

 
 

MOV L, C

 
 

LXI D,03H

Задать множитель 03

 

CALL MULTI

Умножение

 

LXI D, 0005H

Задать делитель

 

CALL DIV

Разделить показания датчика на 5

 

XCHG

 
 

LHLD 3002H

 
     
     
   

Подпрограмма деления 2-байтовых чисел (делимое в HL, делитель в DE, результат ® HL)

DIV

PUSH B

 
 

LXI B, 0000H

 

DV1

MOV A, L

 
 

SUB E

 
 

MOV L, A

 
 

MOV A, H

 
 

SBB D

 
 

JM DV2

 
 

INX B

 
 

JMP DV1

 

DV2

MOV H, B

 
 

MOV L, C

 
 

POP B

 
 

RET

 
     
   

Подпрограмма деления 2-байтовых чисел с учетом знака делимого (делимое в HL, делитель в DE, результат ® HL)

SDIV

PUSH B

 

SDV1

MOV A, H

 
 

ORA A

 
 

JP SDV3

Определение знака делимого

 

CALL EXT

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

 

LXI B, 0000H

 

SDV1

MOV A, L

 
 

SUB E

 
 

MOV L, A

 
 

MOV A, H

 
 

SBB D

 
 

JM SDV2

 
 

INX B

 
 

JMP SDV1

 

SDV2

MOV H, B

 
 

MOV L, C

 
 

CALL EXT

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

 

POP B

 
 

RET

 

SDV3

LXI B, 0000H

 
 

MOV A, L

 
 

SUB E

 
 

MOV L, A

 
 

MOV A, H

 
 

SBB D

 
 

JM SDV4

 
 

INX B

 
 

JMP SDV3

 

SDV4

MOV H, B

 
 

MOV L, C

 
 

POP B

 
 

RET

 
     
   

Подпрограмма аналого-цифрового преобразования (приведенный к нулевому уровню результат ® HL)

CONV

MVI A, 0АH

Запуск АЦП (подача сигнала /ST)

 

OUT 2ВH

 
 

MVI A, 0ВH

Снятие сигнала /ST

 

OUT 2ВH

C1

IN 29H

Чтение сигнала конца преобразования /RAD

 

ANI 08H

 

JNZ C1

Проверка наличия сигнала конца преобразования  /RAD

Чтение канала В ППИ 

 

IN 29H

 

ANI 03H

Выделение 8 и 9 разрядов преобразованного значения

 

MOV H, A

Перенос в регистр Н старшего разряда

 

IN 28H

Чтение из АЦП младших 8 разрядов преобразованного значения

 

MOV L, A

Перенос в регистр L младшего разряда 

 

LXI D, 00B3H

Задание нулевого уровня

 

CALL SUBTR

Приведение показаний АЦП к нулевому уровню

 

RET

Возврат из подпрограммы

     

Информация о работе Проектирование микропроцессорной системы сбора данных с узла обезвоживания нефти