Микропроцессоры с изменяемой (наращиваемой) разрядностью слова и микропрограммным управлением (секционные микропроцессоры) на примере микропроцессора К1804, страница 15

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

Адрес              Содержание

307                  010

Реализация программы статической индикации массива из 15 элементов

Цель данной программы: циклический вывод чисел на шестиразрядный дисплей на семисегментных индикаторах (ДСИ).

            Обмен информацией между микропроцессором и периферийным устройством осуществляется через специальные схемы сопряжения, или интерфейсные схемы. В данном случае роль интерфейсной схемы выполняет БИС программируемого параллельного интерфейса КР580ВВ55, включающей в себя 3 8-разрядных порта А, В и С для подключения периферийных устройств к системным шинам.

Структурная схема БИС включает в себя двунаправленный буфер ШД, три информационных регистра каналов А, В и С и схему выбора канала и управления, содержащую регистр управляющего слова. Входы А0 и А1 данной схемы задают внутренний регистр (А, В, С или регистр управления).

            Режим работы каналов задается с помощью управляющего слова; задать можно один из трех режимов:

            режим 0: синхронный обмен по всем трем каналам;

            режим 1: асинхронный обмен или обмен по готовности по каналам А и В;

            режим 2: стробируемый двунаправленный обмен только через канал А.

Структурная схема

 


Овал: Старт

 


Программа циклического вывода чисел на индикатор. Необходимо данный массив записать по адресам 200-217

Адрес

Команда

Мнемоника

Комментарии

041

076

MVI A,200

Задается режим работы каналов

042

200

B2

для организации режима синхронного вывода

043

323

OUT 003

044

003

B2

045

323

OUT 007

046

007

B2

047

046

MVI H

Длина массива

050

017

B2

051

001

LVI B

Адрес первого элемента массива

052

200

B2

053

000

B3

054

377

RST7

Переход к подпрограмме по адресу 070

055

003

INX B

Адрес следующего элемента массива

056

045

DCR H

Уменьшается количество элементов массива

057

302

JNZ 054

Вывод следующих элементов

060

054

B2

061

000

B3

062

303

JMP 047

Программа зациклена и работает непрерывно

063

047

B2

064

000

B3

070

026

MVI D

Обнуление регистра

071

000

B2

072

056

MVI L

Загрузка адреса начала таблицы кодировок

073

300

B2

074

012

LDAX B

Загружаем элемент массива в аккумулятор

075

346

ANI

И выделяем его младшие три разряда

076

007

B2

00.000.111

077

205

ADD L

Вычисляем адрес соответствующего кода

100

137

MOV E,A

101

032

LDAX D

102

323

OUT 000

Выводим в порт код, соответствующий цифре

103

000

B2

104

012

LDAX B

Загружаем элемент массива в аккумулятор

105

346

ANI

И выделяем его средние три разряда

106

070

B2

00.111.000

107

017

RRC

110

017

RRC

111

017

RRC

112

205

ADD L

Вычисляем адрес соответствующего кода

113

137

MOV E,A

114

032

LDAX D

115

323

OUT 001

Выводим в порт код, соответствующий цифре

116

001

B2

117

012

LDAX B

Загружаем элемент массива в аккумулятор

120

346

ANI

И выделяем его старшие два разряда

121

300

B2

11.000.000

122

007

RLC

123

007

RLC

124

205

ADD L

Вычисляем адрес соответствующего кода

125

137

MOV E,A

126

032

LDAX D

127

323

OUT 002

Выводим в порт код, соответствующий цифре

130

002

B2

131

026

MVI D

На этом участке программы

132

377

B2

Формируется задержка вывода

133

036

MVI E

Элементов массива на индикаторы

134

377

B2

135

035

DCR E

Уменьшение на 1 Е

136

302

JNZ 135

Если не 0 то опять уменьшаем Е

137

135

B2

140

000

B3

141

025

DCR D

Уменьшение на 1 D

142

302

JNZ 133

Если не 0 то опять уменьшаем D

143

133

B2

144

000

B3

145

311

RET

300

077

«0»

Таблица кодировок

301

006

«1»

302

133

«2»

303

117

«3»

304

146

«4»

305

155

«5»

306

175

«6»

307

007

«7»