Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
56
Добавлен:
21.02.2017
Размер:
211.6 Кб
Скачать

2. Программа работы усд

2.1. Алгоритм работы устройства

По условиям задания Mhex = 03Е5, BEGhex = 071А, Mdec = 997, BEGdec = 1818. Переведя из шестнадцатеричной системы счисления в десятичную систему мы видим, что программа начинается перед массивом, в который должны быть записаны снимаемые с АЦП данные.

Зададим начальные условия в первых трех блоках. В первом блоке записывается в парный регистр HL адрес хранения данных М = 03Е5. Во втором блоке в регистр В записываем число каналов F = 14 = ØЕh. Согласно заданию в качестве счётчика регистра применим регистр D – блок 3. В аккумулятор загрузим начальный адрес канала ØØh.

Начинается цикл проверки количества проверенных каналов.

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

Блок 5: Число (адрес) записанное в аккумуляторе по шине данных передаём в устройство вывода №1. После чего срабатывают переключатели в коммутаторе каналов и соединяется устройство(амперметр, вольметр, спектрометр или другое устройство) с АЦП.

Блок 6: С выхода STR АЦП подаётся стробирующий сигнал в устройство ввода № 2. Двоичный код с АЦП поступает в устройство ввода №2. С устройства ввода № 2 передаём бит в регистр А.

Блок 7: Так как это только один бит и для того чтобы определить его значение необходимо сдвинуть его с первой позиции сразу в регистр С, а нулевое значение бита С на место 14 бита и так далее. То есть произвести сдвиг всех битов вправо.

Блок 8: После чего проверяем сигнальный флаг С. Если С равен нулю возвращаемся в шестой блок и так до тех пор, пока не поступит стробирующий бит.

Конец цикла проверки стробирующего бита.

Блок 9: Двоичный код с АЦП поступает в устройство ввода №1. С адреса устройства считываем код и записываем значение сигнала в регистр А.

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

Блок 11: Увеличиваем значение регистра HL на один в данном цикле программы, для того чтобы последующие значения не накладывались на предыдущие. То есть, формируем адрес следующей ячейки памяти.

Блок 12: Увеличиваем значение регистра D на один для того чтобы в следующем цикле включился следующий по счёту канал. То есть формируем адрес следующего аналогового канала.

Блок 13. В аккумулятор записывается новый адрес канала – D.

Блок 14. Вычитаем из значения регистра A значение регистра B.

Блок 15. Проверяется флаговый регистр Z. Если Z = 1, то это говорит о том, что все каналы опрошены и тогда цикл сбора данных завершён. В противном случае осуществляется переход в блок 5 и опрос следующего канала.

Рисунок 4 – Блок схема

2.2. Составление программы на языке ассемблера и её размещение в озу

Программа на языке ассемблера представлена в таблице 1. В программе мы применили 2-е метки М1 и М2. Первая из них обеспечивает выполнение программы по малому циклу, а вторая – по большому циклу.

Т а б л и ц а 1 – Программа работы УСД на языке ассемблера

№ Команды

Метка

Мнемокод

Операнды

Комментарий

Байты

Циклы

Такты

1

LXI

H, 03Е5

HL ← 03Е5

3

3

10

2

MVI

B, ØЕh

B ← ØЕh

2

2

7

3

MVI

D, ØØh

D ← ØØh

2

2

7

4

MOV

A, D

A ← D

1

1

5

5

М2

OUT

1

Устр.выв.№1 ← (A)

2

3

10

6

М1

IN

2

A ← Устр.ввода № 2

2

3

10

7

RRC

A ← Сдв.П (А)

1

1

4

8

JNC

M1

Проверка регистра С

3

3

10

9

IN

1

А ← Устр.ввода № 1

2

3

10

10

MOV

M,A

M ← (A)

1

2

7

11

INX

H

HL ← (HL) + 1

1

1

5

12

INR

D

D ← (D) + 1

1

1

5

13

MOV

A,D

A ← (D)

1

1

5

14

CMP

B

(A) ← (D)

1

1

4

15

JNZ

M2

Проверка регистра Z

3

3

10

В таблице 2 приведено соответствие команд и ячеек памяти.

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

Т а б л и ц а 2 – Размещение программы

Z=1

№ команды

Адрес16

1

071А

071В

071С

2

071Е

071F

3

0720

0721

4

0722

5

0723

0724

6

0725

0726

7

0727

С=0

8

0728

0729

072A

С=1

9

072B

072C

10

072D

11

072E

Z=0

12

072F

13

0730

14

0731

15

0732

0733

0734



В таблице 3 представлена программа в кодовых комбинациях.

Т а б л и ц а 3 – Программа в кодовых комбинациях

№ команды

Адрес ОП16

Команда2

Команда16

Комментарий

1

071A

0010 0001

21

HL 03Е5

071B

1110 0101

Е5

старший байт

071C

0000 0011

03

младший байт

2

071Е

0000 0110

06

` B ØEh

071F

0000 1110

ØE

3

0720

0001 0110

16

D ØØh

0721

0000 0000

ØØ

4

0722

0111 1010

7A

AD

5

0723

1101 0011

D3

Уст. Выв. №1(А)

0724

0000 0001

Ø1

6

0725

1101 1011

DB

А(Уст. Ввода № 2)

0726

0000 0010

Ø2

7

0727

0000 1111

ØF

AСдвиг вправо(A)

8

0728

1101 0010

D2

УП при С=0 переход к ячейке 0725

0729

1100 0010

C2

старший байт

072A

0101 0110

56

младший байт

9

072B

1101 1011

DB

АУст. Ввода №1

072C

0000 0001

Ø1

10

072D

0111 0111

77

М(А)

11

072E

0010 0011

23

HL(HL)+1

12

072F

0001 0100

14

D(D)+1

13

0730

0111 1010

7A

A(D)

14

0731

1011 1000

B8

A (B)

15

0732

1100 0010

С2

УП при Z=0 переход к ячейке 0723

0733

1101 0000

D0

старший байт

0734

0101 0110

56

младший байт



Соседние файлы в папке 2102172