Главная Обратная связь

Дисциплины:






ЛОГИЧЕСКОГО АНАЛИЗАТОРА 823



 

ЦЕЛЬ РАБОТЫ: приобретение навыков работы на логическом анализаторе 823(ЛА 823), исследование тестовых последовательностей учебного микропроцессорного комплекта 80/M (УМПК 80).

НЕОБОДИМОЕ ОБОРУДОВАНИЕ И ДОКУМЕНТАЦИЯ: ЛА 823, УМПК 80, комплект документации на УМПК 80.

 

1. Устройство и работа прибора ЛА 823

1.1. Принцип действия и технические характеристики. Принцип работы прибора заключается в том, что информация с испытуемого объекта, заданная определённой совокупностью условий просмотра, записывается во внутреннюю память прибора под воздействием внешних стимулов, а затем воспроизводится на экране электронно-лучевой трубки (ЭЛТ) в двоичной, восьмеричной или шестнадцатиричной системах счисления, либо в мнемоническом виде. Наличие внутренней памяти позволяет просматривать не только периодические, но и однократные логические процессы. Возможности прибора характеризуются его внутренней памятью. Ее организация 64х32 бит, т.е. ЛА 823 собирает 64 события с 32 каналов. Максимальная частота тактовых импульсов 5 МГц.

 

1.2. Органы управления и контроля. Клавиши управления и ввода расположены на передней панели прибора и разбиты на несколько полей.

1.2.1. В поле ВВОД расположены клавиши ввода алфавитно-цифровой информации.

1.2.2. В поле ВЫБОР находятся клавиши:

КАДР - для выбора нужного кадра на экране ЭЛТ,

[ ] - для выбора условий режима.

1.2.3. В поле ОПЕРАЦИЯ расположены клавиши установки начальных условий работы прибора:

ВСТАВИТЬ - для увеличения числа условий запуска или условий выборочного сбора данных в кадре УСЛОВИЯ ПРОСМОТРА,

УДАЛИТЬ - для удаления введенных ранее условий запуска или условий выборочного сбора данных в кадре УСЛОВИЯ ПРОСМОТРА,

ПЕРЕНОС - для перенесения информации из памяти сбора в ОЗУ прибора, для использования этой информации в режиме СРАВНЕНИЕ,

СБРОС - для установки прибора в исходное состояние.

1.2.4. СБОР - поле клавиш управления сбором информации:

ПУСК - для подачи команды начала сбора информации,

СТОП - для прекращения просмотра потока данных.

1.2.5. Поле СДВИГ содержит клавиши для просмотра пользователем информации, записанной в памяти сбора данных.

1.2.6. В поле МАРКЕР находятся клавиши управления маркером.

 

1.3. Порядок работы прибора. Клавишей СБРОС прибор приводится в исходное состояние и сбрасывает ранее введенные условия. Нажав клавишу КАДР и следя за циклическим появлением в верхней части экрана заголовков кадров: ФОРМАТ, УСЛОВИЯ ПРОСМОТРА, РЕЗУЛЬТАТ, СРАВНЕНИЕ, МНЕМОНИКА, можно попасть в один из них, отпустив клавишу в соответствующий момент.



1.3.1. В кадре ФОРМАТ можно установить формат, в котором будут индицироваться данные, и полярность данных и тактового импульса. Перемещение по строкам и внутри строк кадра осуществляется клавишами управления маркером. В строке ФРОНТ клавишей [ ] можно изменить фронт тактового импульса. В строке ПОЛЯ можно разбить выводимые тридцать два бита информации на группы, выводимые слитно без пробелов. Разбиение осуществляется клавишами поля ВВОД и поля МАРКЕР. Если какие-либо разряды безразличны для пользователя, они заполняются знаком "Х". В строке ЛОГИКА определяется в какой логике (положительной или отрицательной) будет выведена информация каждого поля. В строке БАЗА клавишей [ ] устанавливается основание системы счисления для каждого поля.

1.3.2. В кадре УСЛОВИЯ ПРОСМОТРА задаются условия запуска прибора. Ниже строки БАЗА устанавливается момент реакции на запускающую комбинацию. Здесь клавишей [ ] выбирается один из режимов СТАРТ, ЦЕНТР, КОНЕЦ. В этой же строке устанавливается численное значение запуска и число повторов клавишами ВВОД. В строках ПЕРЕЗАПУСК и ВСЕ СОСТОЯНИЯ должно быть установлено слово ВЫКЛ.

1.3.3. В кадре СРАВНЕНИЕ осуществляется проверка однозначности собираемой информации с заранее собранной. Перед переходом в этот режим некоторая уже собранная информация (назовем ее э т а л о н н о й) переписывается в дополнительную память клавишей ПЕРЕНОС из группы ОПЕРАЦИЯ. Если неободимо, устанавливаются другие режимы в кадрах ФОРМАТ и УСЛОВИЯ ПРОСМОТР А или подключается другое исследуемое устройство.

Затем с помощью клавиши КАДР осуществляется переход в режим СРАВНЕНИЕ. Затем по клавише ПУСК информация, захваченная памятью сбора данных, сравнивается поразрядно с информацией предварительно записанной в дополнительную память. В тех разрядах, где информация совпадает, высвечиваются нули, в остальных – единицы.

 

2. Учебная микро-ЭВМ УМПК 80

 

Модуль микроЭВМ УМПК 80 предназначен для изучения функционирования и программирования МП БИС КР580ВМ80А, освоения методов отыскания неисправностей микроЭВМ.

2.1. Карта памяти микроЭВМ УМПК-80

 

--------T---------------------------------------

¦ ¦ Область для ¦ 0FFF

¦ ¦ стека и данных ¦

¦ ¦ монитора ¦ 0FB1

¦ О З У +- - - - - - - - - - - - - - - - - - - -+

¦ ¦ Область для стека и ¦ 0FB0

¦ 2 K ¦ данных исследуемых ¦

¦ ¦ программ ¦ 0C00

¦ байт +- - - - - - - - - - - - - - - - - - - -+

¦ ¦ Область для записи ¦ 0BFF

¦ ¦ исследуемых программ ¦

¦ ¦ (защищенная область ОЗУ) ¦ 0800

+-------+---------------------------------------+

¦ ¦ ¦ 07FF

¦ П З У ¦ Монитор и ¦

¦ 2 K ¦ демонстрационные ¦

¦ байт ¦ программы ¦

¦ ¦ ¦ 0000

L-------+----------------------------------------

 

 

2.2. В состав резидентного программного обеспечения микроЭВМ входят монитор и демонстрационные программы, записанные в ПЗУ.

 

 

3. ВЫПОЛНЕНИЕ РАБОТЫ

3.1. Учитывая, что:

 

q каналы 32-17 подключены к шине адреса (32 канал - адрес А15, 31 канал - адрес А14, и т.д.),

q каналы 16-9 - к шине данных (16 канал - данные Д7,

q 15 канал - данные Д6 и т.д.),

q каналы 8-5 - к шине управления,

q каналы 4-1 - при исследовании безразличны, а логика информации и тактового импульса положительная, установить в кадре ФОРМАТ параметры, наиболее соответствующие такому состоянию. Зарисовать картину этого кадра с параметрами.

3.2. Подключить 40-выводную клипсу к микропроцессору УМПК 80.

3.3. Установить в кадре УСЛОВИЯ ПРОСМОТРА следующее условие:

запустить прибор после первого появления адреса 0000Н. В строках ПЕРЕЗАПУСК и ПОДСЧЕТ должно быть установлено слово [ВЫКЛ], под словом ПЕРЕЗАПУСК - [ВСЕ СОСТОЯНИЯ]. Зарисовать картинку этого кадра.

3.4. Запустить прибор. Используя режим СРАВНЕНИЕ и произведя несколько сборов информации, удостоверьтесь, что информация всегда считывается одинаково. 3.5. Измените условия запуска и проведите сравнение. 3.6. Используя режим МНЕМОНИКА и зная, что программа проверки ПЗУ располагается в адресах 004CH-005DH, выписать ее текст, проанализировать и написать алгоритм. Сделать предположение о логичности завершения теста. 3.7. Выпишите тест проверки ОЗУ, зная что программа тестирования ОЗУ располагается в адресах 005EH-0087H, a программа вывода сообщения об ошибке памяти начинася с адреса 00DCH. Проанализировать и написать алгоритм теста ОЗУ.

 

4. Содержание отчета

 

4.1. Отчет должен содержать:

q рисунок кадра ФОРМАТ в соответствии с пунктом 3.1.,

q рисунок кадра УСЛОВИЯ ПРОСМОТРА в соответствии с пунктом 3.3.,

q текст программы проверки ПЗУ, ее алгоритм и мнение по поводу завершения этой программы,

q текст программы проверки ОЗУ и ее алгоритм.

 

 

Приложение 1

 

ORG 0000H

;

;

;RST0 - точка входа в монитор по сбросу

; (клавиша "R" или включение питания)

;

0000 26 00 RESET: MVI H,008H ;Адрес начала ОЗУ

0002 AF XRA A

0003 2F CMA

0004 77 MOV M,A ;Запись FF в одну из ячеек ОЗУ

0005 C3 JMP STRT

;

;

;RST1 - точка входа в монитор по препыванию

; (клавиша "СТ" или точка останова)

;

0008 22 0BD3 RS1: SHLD ;Сохранение HL пользователя

000B D3 08 OUT 008H ;Разрешение записи в ОЗУ

000D C3 00F3 JMP TRP

;

;

;СВИСТОК С ФИКСИРОВАННОЙ ДЛИТЕЛЬНОСТЬЮ И ТОНОМ

;

0010 06 20 BEEP: MVI B,FREQ ;Частота сигнала

0012 16 40 BEEP1: MVI D,DUR ;Длительность сигнала

0014 C3 0447 JMP BEEP2

0017 00 NOP

;

;

;ПЕРЕМЕЩЕНИЕ СООБЩЕНИЯ ПО АДРЕСУ DE В ОБЛАСТЬ UDSP

;

0018 C5 STDM: PUSH B

0019 21 0BF0 LXI H,UDSP ;Первый символ в UDSP

001C C3 0235 JMP SDM

001F 00 NOP

0020 C3 0AF6 RS4: JMP RS4C ;Переход на П/П пользователя

;

0023 00 00 00 00 00 DB 0, 0, 0, 0, 0

;

0028 C3 0AF9 RS5: JMP RS5C ;Переход на П/П пользователя

;

002B 00 00 00 00 00 DB 0, 0, 0, 0, 0

;

0030 C3 0AFC RS6: JMP RS6C ;Переход на П/П пользователя

;

0033 00 00 00 00 00 DB 0, 0, 0, 0, 0

;

0038 D7 RS7: RST 2 ;Свисток

0039 C3 00AC JMP START6 ;Возврат в монитор

;

003C 00 00 00 00 DB 0, 0, 0, 0

;

;

;ТЕСТ САМОПРОВЕРКИ И НАЧАЛЬНАЯ УСТАНОВКА

;

0040 BE STRT: CMP M ;Защита памяти снята?

0041 C2 00C8 JNZ PPER ;- Если нет (попали на RST0 из-за

;ошибки стека пользователя)

0044 31 0BCE LXI SP,MSP ;Инициализация стека монитора

0047 AF XRA A ;Очистка аккумулятора и HL

0048 67 MOV H,A

0049 6F MOV L,A

004A D3 30 OUT LOUT ;Включение выходных светодиодов

;

;

;ТЕСТ ПЗУ МОДУЛЯ

;

004C 86 STRT1: ADD M ;Вычисление контрольной суммы ПЗУ

004D 23 INX H

004E 4F MOV C,A

004F 3E 08 MVI A,8H ;ПЗУ кончилось

0051 BC CMP H

0052 79 MOV A,C

0053 C2 004C JNZ STRT1 ;- нет, продолжение цикла

0056 2B DCX H ;HL - значение контрольной суммы

0057 96 SUB M

0058 BE CMP M

0059 1E 7C MVI E,07CH ;Сообщим об ошибке

005B 00 00 00 DB 0, 0, 0 ;JNZ MERR1 - переход на её инд-цию

;

;

;ТЕСТ ОЗУ МОДУЛЯ

;

005E AF XRA A ;Очистим A

005F 21 0800 LXI H,PC ;HL на начало ОЗУ

0062 06 03 MVI B,3 ;постоянное слагаемое

0064 77 STRT2: MOV M,A ;запомним в памяти

0065 80 ADD B ;увеличим A на 3

0066 23 INX H ;на следующий адрес ОЗУ

0067 4F MOV C,X

0068 7C MOV A,H

0069 FE 0C SPI ERAM ;ОЗУ кончилось?

0069 79 MOV A,C

006C C2 0064 JNZ STRT2 ;- нет, продолжим запись

006F AF XRA A

0070 21 0800 LXI H,PC ;HL на начало памяти

0073 BE STRT3: CMP M ;данные записались правильно?

0074 C2 00DC JNZ MERR ;- если была ошибка

0077 2F CMA

0078 77 MOV M,A ;запишем инвертированный байт

0079 BE CMP M ;он записался правильно?

007A C2 00DC JNZ MERR ;- была ошибка

007D 2F CMA ;начальное значение A

007E 80 ADD B

007F 23 INX H ;следующий адрес памяти

0080 4F MOV C,A

0081 7C MOV A,H

0082 FE 0C CPI ERAM ;дошли до конца ОЗУ

0084 79 MOV A,C

0085 C2 0073 JNZ STRT3 ;нет - продолжим проверку

;

;

;ТЕСТ ДИСПЛЕЯ МОДУЛЯ

;

0088 06 80 MVI B,080H ;счётчик цикла

008A 11 0281 STRT4: LXI D,ALL ;сообщение "ВСЕ СЕГМЕНТЫ"

008D DF RST 3 ;скопируем его в область дисплея

008E CD 01E9 CALL DCD ;и отобразим

0091 05 DCR B ;цикл кончился?

0092 C2 008A JNZ STRT4 ;нет, продолжаем

;

;

;ОЧИСТКА ПАМЯТИ (ЗАПОЛНЕНИЕ ПАМЯТИ)

;

0095 06 00 MVI B,0

0097 3E 0C MVI A,ERAM ;старший байт адреса верхушки ОЗУ

0099 21 0800 LXI H,PC ;HL - на начало ОЗУ

009C 70 STRT5: MOV M,B ;очистим ячейку памяти

009D 23 INX H

009E BC CMP H

009F C2 009C JNZ STRT5 ;пока не дойдём до верхушки ОЗУ

00A2 3E FF MVI A,0FFH

00A4 D3 30 OUT LOUT ;включим светодиоды выходного RG

00A6 CD 06A0 CALL LMC ;сыграем музыку ???? !!!!

00A9 AF XRA A

00AA D3 05 OUT LOUT ;выключим светодиоды (очистим LOUT)

;

;

;ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ МОНИТОРА

;

00AC 21 0BB0 STTRT6: LXI H,USP ;Стек пользователя

00AF 22 0BDE SHLD SAVSL

00B2 21 OBD6 LXI H,RS ;Адрес состояния

00B5 36 00 MVI M,0 ;Установим состояние "МОНИТОР"

00B7 21 0800 LXI H,PC ;Начало ОЗУ

00BA 22 0BDC SHLD SAVPC ;Начало программ пользователя

;по умолчанию

00BD 3E FF MVI A,0FFH ;Код RST7

00BF 32 0AFF STA TPR ;Запомним его в ОЗУ

00C2 32 0AEF STA UR

00C5 C3 0111 JMP TPR3 ;Перейдём на монитор

;

;

;ОБРАБОТКА ОШИБОК СТЕКА

;

00C8 31 0BCE PPER: LXI SP,MSP ;Стек монитора

00CB 21 0800 LXI H,PC ;Счётчик по умолчанию

00CE 22 0BDC SHLD SAVPC ;Запомним его

00D1 D7 RST 2 ;Сигнал ошибки

00D2 AF XRA A

00D3 32 0BD6 STA RS ;Состояние "МОНИТОР"

00D6 11 028D LXI D,PPM ;Указать на ошибку работы со стеком

00D9 C3 0115 JMP TRP4

;

;

;ИНДИКАЦИЯ ОШИБОК ЗУ

;

00DC 1E 87 MERR: MVI E,87H ;Адрес сообщения об ошибке ОЗУ

00DE 16 02 MVI D,2

00E0 DF RST 3 ;Переместим его в область дисплея

00E1 21 0BF5 LXI H,UDSP+5

00E4 36 10 MVI M,10H

00E6 D7 MERR2: RST 2 ;Будем свистеть

00E7 06 70 MVI B,70H

00E9 CD 01E9 MERR3: CALL DCD ;и выводить сообщение

00EC 05 DCR B

00ED C2 00E9 JNZ MERR3

00F0 C3 00E6 JMP MERR2

;

;

;RST1 - главная точка входа в монитор

;

00F3 21 0000 TPR: LXI H,0 ;Извлекаем SP пользователя,

00F6 D2 00FA JNZ TRP1 ; сохранив его флаг CY

00F9 2B DCX H

00FA 39 TRP1: DAD SP

00FB D2 00FF JNC TRP2

00FE 23 INX H

00FF 22 0BD1 TRP2: SHLD TSAVS ;Сохраним SP пользователя

0102 31 0BD1 LXI SP,TSAVS ;Адрес области сохранения PSW

0105 F5 PUSH PSW

0106 21 0BD6 LXI H,RS ;Адрес признака состояния

0109 AF XRA A

010A BE CMP M ;Состояние "МОНИТОР"?

010B 32 0BF6 STA UDSP6 ;Очищаем признак модификац. данных

010E C2 0124 JNZ TRP6 ;- если пришли из прогр. пользоват.

0111 11 0241 TPR3: LXI D,DMT ;Сообщение "НАЧАЛО"

0114 FB EI

0115 AF TRP4: XRA A

0116 D3 30 OUT LOUT ;Очистим выходной регистр

0118 D3 10 OUT CTL ;Снимем защиту ОЗУ

011A DF RST 3 ;Сообщение - в область ОЗУ

011B CD 014B TRP5: CALL KIND ;Введём клавишу

011E CD 02B8 CALL CFETA ;Определение допустимых клавиш

0121 C3 011B JMP TPR5

0124 77 TPR6: MOV M,A ;Установка состояния "МОНИТОР"

;

;

;СОХРАНЕНИЕ РЕГИСТРОВ ПОЛЬЗОВАТЕЛЯ

;

0125 F1 POP PSW

0126 E1 POP H ;Записать текущее зн-ие SP в HL

0127 23 INX H

0128 23 INX H

0129 22 0BDE SHLD SAVSL ;Соьранить его в ОЗУ

012C 2B DCX H

012D 2B DCX H

012E F9 SPHL ;Восстановить SP пользователя

012F E1 POP H ;Адрес возврата к прогр. пользоват.

0130 22 0BDC SHLD SAVPC ;Сохраним его в ОЗУ

0133 31 0BE8 LXI SP,0BE8H ;Адрес сохранения регистров

0136 2A 0BD3 LHLD TSAVH ;Восстановить HL

0139 F5 PUSH PSW ;Сохраним регистры пользователя

013A C5 PUSH B

013B D5 PUSH D

013C E5 PUSH H

013D FB EI

013E 00 NOP

013F 00 NOP

0140 00 NOP

0141 31 0BDC TPR7: LXI SP,SAVPC

0144 C1 POP B

0145 31 0BCE LXI SP,MSP ;Восстановить SP монитора

0148 C3 0364 JMP FETA3

;

;

;ВВОД И ОПРЕДЕЛЕНИЕ КОДА НАЖАТОЙ КЛАВИШИ

;

014B D5 KIND: PUSH D

014C E5 PUSH H

014D CD 01E9 KIND1: CALL DCD ;Выдать сообщение на дисплей

0150 CD 0185 CALL KPU ;Клавиша нажата?

0153 C2 014D JNZ KIND1 ;Да, подождём пока отпустят

0156 CD 01E9 KIND2: CALL DCD ;Выдать цообщение на дисплей

0159 CD 0185 CALL KPU

015C CA 0156 JZ KIND2 ;Если нет нажатой клавиши - ждать

015F 21 0BE8 LXI H,UDKY ;Адрес образа 0-строки клавиатуры

0162 16 FF MVI D,0FFH ;Счётчик строк = -1

0164 7E KIND3: MOV A,M ;Получим образ текущей строки

0165 FE F7 CPI 0F7H ;Клавиша "ШАГ МАШИННОГО ЦИКЛА"?

0167 CA 0132 JZ KIND5 ;Да, перейдём

016A 2F CMA

016B 2C INR L ;Следующая строка

016C 14 INR D ;След. блок таблицы соответствия

016D A7 ANA A ;Есть клавиша в этой строке?

016E CA 0164 JZ KIND3 ;Нет, перейдём на следующую

0171 FE 04 CPI 004H

0173 C2 0177 JNZ KIND4

0176 3D DCR A ;Установим A=3, если было A=4

0177 82 KIND4: ADD D ;Прибавим три раза номер строки

0178 82 ADD D ;для получения смещения в таблице

0179 82 ADD D

017A 5F MOV E,A ;Запомним индекс табл. соответств.

017B 16 00 MVI D,0

017D 21 01AF LXI H,KIT-1 ;Начальный адрес табл. соответств.

0180 19 DAD D ;Адрес кода нажатой клавиши

0181 7E MOV A,M ;Получим её код

0182 E1 KIND5: POP H

0183 D1 POP D

0184 C9 RET

;

;

;ОПРЕДЕЛЕНИЕ ФАКТА НАЖАТИЯ КАКОЙ-ЛИБО КЛАВИШИ

;

0185 C5 KPU: PUSH B

0186 CD 019A CALL KRD ;Считаем клавиатуру

0189 D6 08 MVI B,8 ;Число строк клавиатуры

018B 21 0BE8 LXI H,UDKY ;Область записи образа клавиатуры

018E 3E FF MVI A,0FFH

0190 A6 KPU1: ANA M ;Есть ли нажатая клавиша?

0191 2C INR L

0192 05 DCR B

0193 C2 0190 JNZ KPU1 ;Проверяем все строки клавиатуры

0196 FE FF CPI 0FFH ;Признак Z=0, если не нажаты клав.

0198 C1 POP B

0199 C9 RET

;

;

;ЧТЕНИЕ КЛАВИАТУРЫ И ЗАПОМИНАНИЕ Е№ ОБРАЗА В ОЗУ (UDKY)

;

019A 21 0BE8 KRD: LXI H,UDKY ;Область записи образа клавиатуры

019D AF XRA A

019E D3 38 OUT DSP ;Очистим дисплей

01A0 2F CMA

01A1 3D DCR A ;11111110B - указатель сканирования

01A2 37 STC

01A3 D3 28 KRD1: OUT SCAN ;Выбираем одну строку

01A5 47 MOV B,A

01A6 DB 18 IN KEY ;Вводим выбранную строку

01A8 77 MOV M,A

01A9 78 MOV A,B

01AA 2C INR L ;Адрес следующей строки

01AB 17 RAL ;Указатель - на следующую строку

01AC DA 01A3 JC KRD1 ;Повторим, если не кончили

01AF C9 RET

;

;

;ТАБЛИЦА ОПРЕДЕЛЕНИЯ КОДОВ КЛАВИШИ

;

01B0 06 KIT: DB 86H ;Шаг команды

01B1 85 DB 85H ;Пограммный счётчик

01B2 00 DB 0 ;Не используется

01B3 84 DB 84H ;Пуск

01B4 80 DB 80H ;Отыскание регистров

01B5 82 DB 82H ;Отыскание адреса

01B6 00 DB 0 ;0

01B7 83 DB 83H ;Запись/Увеличить

01B8 81 DB 81H ;Уменьшить

01B9 01 DB 1 ;1

01BA 02 DB 2 ;2

01BB 03 DB 3 ;3

01BC 04 DB 4 ;4

01BD 05 DB 5 ;5

01BE 06 DB 6 ;6

01BF 07 DB 7 ;7

01C0 08 DB 8 ;8

01C1 09 DB 9 ;9

01C2 0A DB 0AH ;A

01C3 0B DB 0BH ;B

01C4 0C DB 0CH ;C

01C5 0D DB 0DH ;D

01C6 0E DB OEH ;E

01C7 0F DB 0FH ;F

;

;

;СКАНИРОВАНИЕ ДИСПЛЕЯ (ОДИН РАЗ)

;

01C8 F5 SDS: PUSH PSW

01C9 E5 PUSH H

01CA C5 PUSH B

01CB 21 0BFF LXI H,DDSP+5 ;Адрес последнего символа

01CE 06 20 MVI B,20H ;Указатель на пятый символ

01D0 AF SDS1: XRA A

01D1 D3 28 OUT SCAN ;Погасим дисплей

01D3 7E MOV A,M ;Код отображаемого символа

01D4 D3 38 OUT DSP ;Записываем в регистр сегментов

01D6 78 MOV A,B

01D7 D3 28 OUT SCAN ;и включаем нужный индикатор

01D9 CD 0429 CALL DELA ;Задержка 1мс

01DC 2D DCR L ;Адрес кода следующего символа

01DD 1F RAR ;Указатель - на следующий символ

01DE 47 MOV B,A

01DF D2 01D0 JNC SDS1 ;Отображаем 6 символов

01E2 AF XRA A

01E3 D3 38 OUT DSP ;Гасим дисплей

01E5 C1 POP B

01E6 E1 POP H

01E7 F1 POP PSW

01E8 C9 RET

;

;

;ДЕКОДИРОВАНИЕ ВЫВОДИМОГО СИМВОЛА

;

01E9 F5 DCD: PUSH PSW

01EA C5 PUSH B

01EB D5 PUSH D

01EC E5 PUSH H

01ED 01 0BFA LXI B,DDSP ;Область декодированных символов

01F0 11 0BF0 LXI D,UDSP ;Область недекодированных символов

01F3 21 0218 DCD1: LXI H,DCC ;Таблица декодирования символов

01F6 1A LDAX D ;По смещению в таблице получим код

01F7 D5 PUSH D

01F8 5F MOV E,A

01F9 16 00 MVI D,0

01FB 19 DAD D

01FC 7E MOV A,M

01FD 02 STAX B ;Запомним его

01FE D1 POP D

01FF 1C INR E

0200 0C INR C

0201 C2 01F3 JNZ DCD1 ;Не последний символ - перейдём

0204 21 0BFA LXI H,DDSP ;Первый декодированный символ

0207 1A LDAX D ;Адрес признака модификации данных

0208 A7 ANA A

0209 CA 0210 JZ DCD2

020C 7E MOV A,M

020D F6 80 ORI 080H ;Если признак установлен - поставим

020F 77 MOV M,A ;запятую в позицию первого символа

0210 E1 DCD2: POP H

0211 D1 POP D

0212 C1 POP B

0213 F1 POP PSW

0214 CD 01C8 CALL SDS ;Отобразим сообщение

0217 C9 RET

;

;

;ТАБЛИЦА ДЕКОДИРОВАНИЯ ОТОБРАЖАЕМЫХ СИМВОЛОВ

;

0218 3F DCC: DB 3FH ;0

0219 06 DB 06H ;1

021A 5B DB 5BH ;2

021B 4F DB 4FH ;3

021C 66 DB 66H ;4

021D 6D DB 6DH ;5

021E 7D DB 7DH ;6

021F 07 DB 07H ;7

0220 7F DB 7FH ;8

0221 6F DB 6FH ;9

0222 77 DB 77H ;A

0223 7C DB 7CH ;B

0224 39 DB 39H ;C

0225 5E DB 5EH ;D

0226 79 DB 79H ;E

0227 71 DB 71H ;F

0228 00 DB 00H ;Пробел

0229 76 DB 76H ;H

022A 38 DB 38H ;L

022B 6E DB 6EH ;Y

022C 73 DB 73H ;P

022D 54 DB 54H ;Л

022E 5C DB 5CH ;О

022F 08 DB 08H ;_

0230 37 DB 37H ;П

0231 40 DB 40H ;-

0232 FF DB 0FFH ;Все сегменты

0233 50 DB 50H ;R

0234 30 DB 30H ;1 - левая

;

;

;КОПИРОВАНИЕ ОТОБРАЖАЕМОГО СООБЩЕНИЯ ПО "DE" В "UDSP" ОЗУ

;

0235 06 06 SDM: MVI B,6 ;Копируем 6 символов

0237 1A SDM1: LDAX D ;Копируемый символ

0238 77 MOV M,A ;Запомним его в UDSPX

0239 2C INR L ;Следующая ячейка UDSP

023A 13 INX D ;Следующий символ

023B 05 DCR B ;Все символы?

023C C2 0237 JNZ SDM1 ;Нет, повторим

023F C1 POP B

0240 C9 RET

;

;

;ТАБЛИЦА СООБЩЕНИЙ

;

0241 16 DMT: DB 16H ;"НАЧАЛО"

0242 15 0A 04 0A 11 DB 15H, 0AH, 04H, 0AH, 11H

 

0247 10 FETCH: DB 10H ;"____ "

0248 10 17 17 17 17 DB 10H, 17H, 17H, 17H, 17H

 

024D 0A MA: DB 0AH ;" A "

024E 10 10 10 DB 10H, 10H, 10H

 

0251 12 FLG: DB 12H ;" FL "

0252 0F 10 10 DB 0FH, 10H, 10H

 

0255 0B MB: DB 0BH ;" B "

0256 10 10 10 DB 10H, 10H, 10H

 

0259 0C MC: DB 0CH ;" C "

025A 10 10 10

 

025D 0D MD: DB 0DH ;" D "

025E 10 10 10

 

0261 0E ME: DB 0EH ;" E "

0262 10 10 10

 

0265 11 MH: DB 11H ;" H "

0266 10 10 10

 

0269 12 ML: DB 12H ;" L "

026A 10 10 10

 

026D 11 SPH: DB 11H ;" SPH "

026E 14 05 10

 

0271 12 SPL: DB 12H ;" SPL "

0272 14 05 10

 

0275 11 PCH: DB 11H ;" PCH "

0276 0C 14 10

 

0279 12 PCL: DB 12H ;" PCL "

027A 0C 14

 

027C 10 ROM: DB 10H ;" ПЗУ "

027D 10 13 03 18

 

0281 1A ALL: DB 1AH ;Все сегменты

0282 1A 1A 1A 1A 1A

 

0287 10 RAM: DB 10H ;" ОЗУ "

0288 10 13 03 00 10

 

028D 1B PPM: DB 1BH ;" SPER"

028E 0E 14 05

 

0291 10 BLNKM: DB 10H ;" "

0292 10 10 10 10 10

;

;

;ОЧИСТКА ДИСПЛЕЯ

;

 





sdamzavas.net - 2019 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...