
- •Глава 1 Специальная часть. 3
- •1.1. Компенсация реактивной мощности
- •1.2. Промышленные потребители реактивной мощности
- •1.3. Устройства компенсации реактивной мощности
- •1.4. Основные положения проектирования микропроцессорных устройств.
- •1.5. Техническое задание на разработку контроллера - компенсатора реактивной мощности
- •1.6. Общая характеристика
- •1.7. Обоснование элементной базы
- •1.7.1. Микропроцессор и микропроцессорный комплект
- •1.7.2. Память и логические элементы
- •1.7.3. Силовые элементы
- •1.8. Аппаратные средства контроллера
- •1.8.1. Плата контроллера
- •1.8.2. Плата тиристорного управления
- •1.8.3. Блок питания
- •1.8.4. Подключение контроллера – компенсатора
- •1.9. Алгоритмы контроля и управления
- •1.9.1. Измерение тока, напряжения и угла
- •1.9.2. Принцип управления конденсаторной установкой
- •1.10 Программное обеспечение контроллера
- •1.10.1. Структура программного обеспечения
- •1.10.1.1. Основная программа
- •1.10.1.2. Подпрограмма обработки прерывания trap
- •1.10.1.3. Подпрограмма обработки прерывания rst 7.5
- •1.10.1.4. Комплекс подпрограмм типа bios
- •1.10.2. Распределение адресного пространства
- •Область векторов прерываний
- •X8085.Exe
- •2.3. Аппаратные средства отладки
- •2.4. Программные средства отладки Сервисная программа контроллера-компенсатора
- •2.5. Конструктивное исполнение
- •2.6. Методика поиска неисправностей
- •Глава 3 Экономическая часть Расчет себестоимости опытного образца микропроцессорного контроллера – компенсатора реактивной мощности и прогнозная оценка снижения себестоимости на стадии освоения.
- •Введение.
- •1.Постановка задачи.
- •2. Краткие теоретические сведения.
- •3.Выбор метода оценки себестоимости.
- •3.1. Краткий обзор различных методов.
- •3.2. Обоснование выбора метода оценки себестоимости.
- •4 . Расчет себестоимости методом нормативной калькуляции.
- •4.1.Составляющие цеховой себестоимости.
- •4 .2. Расчет заводской себестоимости.
- •4.3. Расчет полной себестоимости изготовления изделия.
- •4.4. Расчет затрат на материалы.
- •4.5.Расчет затрат на материалы, применяемые при изготовлении контроллера .
- •4.6. Расчет основной заработной платы.
- •4.7. Расчет дополнительной заработной платы.
- •4.8. Расчет накладных расходов.
- •4.9. Расчет себестоимости.
- •5. Динамика себестоимости на стадии освоения.
- •5.1. Кривая освония.
- •5.2. Коэффициент освоения.
- •5.3. Динамика снижения себестоимости на стадии освоения.
- •Глава 4 Производственно – экологическая безопасность. Организация безопасных условий труда в лаборатории промышленной электроники.
- •Введение.
- •4.1. Состояние и анализ безопасности жизнедеятельности в помещении лпэ
- •4.2. Основные мероприятия и технические средства по обеспечению безопасных и безвредных условий труда в помещении лпэ.
- •4.3. Мероприятия и технические средства по предупреждению чрезвычайных ситуаций и ликвидация их последствий
- •4.3. Мероприятия и технические средства по охране атмосферного воздуха в районе объекта
- •4.5. Расчет молниезащиты здания
- •Глава 5 Заключение
- •Литература
- •Приложение
Литература
Красик В.В. Автоматические устройства компенсации реактивной мощности в электросетях предприятий. – 2-е изд., перераб. и доп. – М.: Энергоатомиздат, 1983. – 136 с., ил.
Статичесие компенсаторы для регулирования реактивной мощности. Под ред. Р.М.Матура. – М.: Энергоатомиздат, 1987. – 254 с.
Гуртовцев А.Л., Гудыменко С.В. Программы для микропроцессоров: Справ. пособие.- Мн.: Высш. шк., 1989. – 352 с.
Каган Б.М., Сташин В.В. Основы проектирования микропроцессорных устройств автоматики. – М.: Энергоатомиздат, 1987. – 304 с.
Титов М.А. и др. Изделия электронной техники. Микропроцессоры и однокристальные микроЭВМ: Справочник. – М.: Радио и связь, 1994. – 120с.: ил.
Коффрон Дж., Лонг В. Расширение микропроцессорных систем. – М.: Машиностроение, 1987. – 320 с.
Большие интегральные схемы запоминающих устройств: Справочник. Под ред. А.Ю.Гордонова и Ю.Н.Дьякова. – М.: Радио и связь, 1990. – 288с.: ил.
Лебедев О.Н. и др. Изделия электронной техники. Цифровые микросхемы. Микросхемы памяти. Микросхемы ЦАП и АЦП: Справочник. – М.: Радио и связь, 1994. – 248 с.: ил.
Замятин В.Я. и др. Мощные полупроводниковые приборы. Тиристоры: Справочник. – М.: Радио и связь, 1987. – 576 с.: ил.
Иванов В.И. Полупроводниковые оптоэлектронные приборы: Справочник. – М.: Энергоатомиздат, 1989. – 448с.: ил.
Сташин В. В. Проектирование цифровых устройств на однокристальных микроконтроллерах. – М., «Энергоатомиздат», 1990, 224 с.
Мини- и микро – ЭВМ в управлении промышленными объектами. – Л., «Машиностроение», 1984, 336 с., ил.
Электрические нагрузки промышленных предприятий. - Л., «Энергия», 1971, 264 с. Авт.: С. Д. Волобринский, Г. М. Каялов, П. Н. Клейн, Б. С. Мешель.
Железко Ю.С. Компенсация реактивной мощности в сложных электрических системах. – М.: Энергия, 1981. – 200 с.
Статические компенсаторы реактивной мощности в электрических системах: Пер. тематического сборника рабочей группы Исследовательского Комитета №38 СИГРЭ. - М., «Энергоатомиздат», 1990, 174 с.
В.И.Каракеян, Л.А.Константинова, Н.М.Ларионов, В.М.Писеев, под ред.к.т.н. доц В.И. Каракеяна. Методические указания по выполнению раздела «Охрана труда в дипломных проектах».-М.,МИЭТ,1983.
Л.А.Константинова, Н.М.Ларионов, В.М.Писеев, под ред.к.т.н. доц В.И. Каракеяна. Методические указания по выполнению раздела «Охрана труда в дипломных проектах» для студентов МИЭТ.-М.,:МИЭТ,1988.
Под ред. С.В.Белова. Охрана окружающей среды. -М.,Высшая школа,1991.
Моисеева Н.К., Павлова А.М., Проскуряков А.В.
"Методика выполнения организационно-экономической части дипломного проекта",МИЭТ 1987 г.
Проскуряков А.В., Анискин Ю.П.
"Методические указания к выполнению курсовой работы « Оценка динамики трудоемкости и себестоимости на стадии освоения» МИЭТ 1989г
Приложение
1.Листинг рабочей программы контроллера
2.Листинг тестовой программы контроллера
3.Листинг программы обмена информацией NEW
4.Спецификация элементов
Приложение 1.
;ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
;КОНТРОЛЛЕРА-КОМПЕНСАТОРА
;РЕАКТИВНОЙ МОЩНОСТИ
;
;Адреса составных частей ПО
ROM: EQU 0000H ;НАЧАЛО ПЗУ
RAM: EQU 7800H ;НАЧАЛО ОЗУ
STACK: EQU 7FFFH ;ВЕРШИНА СТЕКА
;ПРОСТО КОНСТАНТЫ
LONG: EQU 254 ;ДЛИНА МАССИВОВ A,B,C В БАЙТАХ
LONGW: EQU 127 ;ЧИСЛО ЭЛЕМЕНТОВ МАССИВОВ A,B,C
AMAX: EQU 1345 ;ЧИСЛО ИМПУЛЬСОВ ПРИ MAX. НАПРЯЖ.
NECHA: EQU 15 ;НЕЧУВСТВИТ. ПРИ УПРАВ. ПО НАПРЯЖ.
BMIN: EQU 800 ;ЧИСЛО ИМПУЛЬСОА ПРИ MIN. ТОКЕ
NECHB: EQU 20 ;НЕЧУВСТВИТ. ПРИ УПРАВ. ПО ТОКУ
;====================================================
;============ ПОРТЫ ================
;====================================================
;ТАЙМЕР 1 К580ВИ53
ST1Z0: EQU 4800H ;СЧЕТЧИК А ИМПУЛЬСА НАПРЯЖЕНИЯ U
ST1Z1: EQU 4801H ;СЧЕТЧИК В ИМПУЛЬСА ТОКА I
ST1Z2: EQU 4802H ;СЧЕТЧИК С ИМПУЛЬСА ПЕРВОЙ СТУПЕНИ
RUST1: EQU 4803H ;РЕГИСТР УПР. СЛОВА
;ТАЙМЕР 2 К580ВИ53
ST2Z0: EQU 5000H ;ЗАПРОС ПРЕРЫВАНИЯ TRAP МИКРОПРОЦЕССОРА
ST2Z1: EQU 5001H ;СИНХРОНИЗАЦИЯ СЧЕТЧИКОВ A,B,C 180 КГЦ
ST2Z2: EQU 5002H ;СИНХРОНИЗАЦИЯ RS-232C 9.6 КГЦ
RUST2: EQU 5003H ;РЕГИСТР УПР. СЛОВА
;ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС К580ВВ51 (RS-232)
SARTD: EQU 4000H ;РЕГИСТР ДАННЫХ
SARTC: EQU 4001H ;РЕГИСТР СОСТ. И УПРАВЛ.
;ПАРАЛЛЕЛЬНЫЙ ИНТЕРФЕЙС К580ВВ55
PRTA: EQU 5800H ;ПОРТ A
PRTB: EQU 5801H ;ПОРТ B
PRTC: EQU 5802H ;ПОРТ C
RUSP: EQU 5803H ;РЕГИСТР УПР. СЛОВА
;PA3-PA0 -КОЭФФИЦИЕНТ ДЛЯ РАСЧЕТА ДИСКРЕТНОСТИ УПРАВЛЕНИЯ
;PA7-PA4 -КОЭФФИЦИЕНТ ДЛЯ РАСЧЕТА ЗАДАНИЯ ФИ
;PB3-PB0 -КОЭФФИЦИЕНТ ДЛЯ РАСЧЕТА НЕЧУВСТВИТЕЛЬНОСТИ
;PB5 -ПОРЯДОК ВКЛЮЧЕНИЯ КОММУТАТОРОВ
;PB6 -РАЗРЕШЕНИЕ ПЕРЕДАЧИ ВИДЕОБУФЕРА
;PB7 -ЗНАК ЗАДАНИЯ ФИ
;PC3-PC0 -ВЫХОД НА ДЕШИФРАТОР ИНДИКАТОРОВ
;PC4 -РАЗРЕШЕНИЕ ДЕШИФРАТОРА
;БУФЕРНЫЕ РЕГИСТРЫ К589ИР12
MBR1: EQU 6000H ;МЛАДШИЕ РАЗРЯДЫ
MBR2: EQU 6800H ;СТАРШИЕ РАЗРЯДЫ
MBRD: EQU 67FFH ;СЛОВО
;=====================================================
;======= РАСПРЕДЕЛЕНИЕ ОПЕРАТИВНОЙ ПАМЯТИ =========
;=====================================================
;ПО ЭТИМ АДРЕСАМ ОЗУ ПОКОЯТСЯ:
;-----------------------------
BUFBIOS: EQU RAM+0 ;БУФЕР BIOS (20 БАЙТОВ)
VIDEO: EQU RAM+20 ;ВИДЕОБУФЕР (20 БАЙТОВ)
BUFER: EQU VIDEO+20 ;БУФЕР ИМПУЛЬСОВ A,B,C (3 СЛОВА)
ASRED: EQU BUFER+6 ;СРЕДНИЕ ЗНАЧЕНИЯ A,B,C (3 СЛОВА)
BSRED: EQU ASRED+2
CSRED: EQU BSRED+2
APUS: EQU CSRED+2 ;ПУСТЫШКА МАССИВА A
ABEG: EQU APUS+2 ;НАЧАЛО МАССИВА A
AEND: EQU APUS+LONG ;КОНЕЦ МАССИВА A
BPUS: EQU AEND+2 ;ПУСТЫШКА МАССИВА B
BBEG: EQU BPUS+2 ;НАЧАЛО МАССИВА B
BEND: EQU BPUS+LONG ;КОНЕЦ МАССИВА B
CPUS: EQU BEND+2 ;ПУСТЫШКА МАССИВА C
CBEG: EQU CPUS+2 ;НАЧАЛО МАССИВА C
CEND: EQU CPUS+LONG ;КОНЕЦ МАССИВА C
;
CNMI: EQU CEND+8 ;СЧЕТЧИК ПРЕРЫВАНИЙ TRAP (БАЙТ)
DISKU: EQU CEND+9 ;ДИСКРЕТНОСТЬ УПРАВЛЕНИЯ (СЛОВО)
NECH: EQU CEND+11 ;НЕЧУВСТВИТЕЛЬНОСТЬ УПРАВЛЕНИЯ (СЛОВО)
ZADF: EQU CEND+13 ;ЗАДАНИЕ ФИ В ДОП. КОДЕ (СЛОВО)
CINT: EQU CEND+15 ;СЧЕТЧИК ПРЕРЫВАНИЙ RST7.5(СЛОВО)
UPR: EQU CEND+17 ;ПРИЗНАК УПРАВЛЕНИЯ: 0-НИЧЕГО,1-ВКЛ,2-ВЫКЛ (БАЙТ)
FA: EQU CEND+18 ;ЗНАЧЕНИЕ F(A) (СЛОВО)
FB: EQU CEND+20 ;ЗНАЧЕНИЕ F(B) (СЛОВО)
FI: EQU CEND+22 ;УГОЛ ФИ В ДОП. КОДЕ (СЛОВО)
DFI: EQU CEND+24 ;РАССОГЛАСОВАНИЕ ФИ В ДОП. КОДЕ (СЛОВО)
IND: EQU CEND+26 ;КОД УПРАВЛЕНИЯ (БАЙТ)
DPRTB: EQU CEND+27 ;ДУБЛЬ ПОРТА B (БАЙТ)
DPRTA: EQU CEND+28 ;ДУБЛЬ ПОРТА A (БАЙТ)
DMBRD: EQU CEND+29 ;ДУБЛЬ РЕГИСТРОВ MBR1 И MBR2 (СЛОВО)
TOK: EQU CEND+31 ;ТЕКУЩИЙ ТОК В ДОПОЛНИТЕЛЬНОМ КОДЕ (СЛОВО)
FIK: EQU CEND+33 ;УГОЛ ФИ В ДОПОЛНИТЕЛЬНОМ КОДЕ (СЛОВО)
DELA: EQU CEND+35 ;РАЗНОСТЬ Umax - U В ДОП. КОДЕ (СЛОВО)
DELB: EQU CEND+37 ;РАЗНОСТЬ Imin - I В ДОП. КОДЕ (СЛОВО)
ERRO: EQU CEND+39 ;КОД ОШИБКИ
;
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$ ОБЛАСТЬ ВЕКТОРОВ ПРЕРЫВАНИЙ $
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
ORG ROM
JMP BEGIN
DS 21H
JMP TRAP ;ADDR 0024H TRAP
DS 5H
RET ;ADDR 002CH RST 5.5
DS 7H
RET ;ADDR 0034H RST 6.5
DS 7H
JMP RST75 ;ADDR 003CH RST 7.5
DS 30H
;===============================================
;********** JMP П/П BIOS *************
;===============================================
ZY88B: JMP Y88B ;
ZY24A: JMP Y24A ;
ZY32B: JMP Y32B ;
ZDOPB: JMP DOPB ;
ZDOPD: JMP DOPD ;
ZDOPH: JMP DOPH ;
ZD32A: JMP D32A ;
ZSLOW: JMP SLOW ;
ZUSTB: JMP USTB ;
ZDEBI: JMP DEBI ;
ZRSB: JMP RSB ;
ZRSW: JMP RSW ;
ZMASS: JMP MASS ;
ZSRED: JMP SRED ;
ZD16: JMP D16 ;
ZFUNC: JMP FUNC ;
ZGRAN: JMP GRAN ;
ZCOD: JMP COD ;
;****************************************************
;* ОБЛАСТЬ КОНСТАНТ *
;****************************************************
STEPU: DW 30 ;ШАГ ДЛЯ РАСЧЕТА ДИСКР.УПРАВЛЕНИЯ 30 секунд
STEPN: DW 20 ;ШАГ ДЛЯ РАСЧЕТА НЕЧУВСТВ.УПРАВЛЕНИЯ 1 град
STEPZ: DW 20 ;ШАГ ДЛЯ РАСЧЕТА ЗАДАНИЯ 1град (10 дискрет)
DISKW: DB 50 ;ДИСКРЕТНОСТЬ ЗАПИСИ ИМПУЛЬСОВ=DISKW/50 СЕК
;ТАБЛИЦА ДЛЯ ОПРЕДЕЛЕНИЯ СМЕЩЕНИЯ ИЗМЕРЯЕМЫХ ИМПУЛЬСОВ ТОКА И
;НАПРЯЖЕНИЯ ПО ИХ ДЛИТЕЛЬНОСТИ В ДИСКРЕТАХ, ВЫЗВАННОГО
;ГИСТЕРЕЗИСОМ ТРИГГЕРА ШМИТТА. ДИАПАЗОН ИЗМЕНЕНИЯ ДЛИТЕЛЬНОСТИ
;ИМПУЛЬСОВ ОТ 700 ДО 1300 ЧЕРЕЗ 10 ДИСКРЕТ. ИТОГО 51 СЛОВА.
TABL: DW 135,131,127,120,116,112,109,105,100,095,090,085
DW 080,078,075,073,070,066,062,059,055,052,050,047
DW 045,043,040,039,037,035,034,032,030,028,027,026
DW 025,024,022,021,020,019,018,017,016,015,014,013
DW 012,011,010,009,008,007,06,05,05,05,05,05,05,05
DW 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
;==================================================
;**************** П/П BIOS **********************
;==================================================
Y88B:
;###################################################
;ПОДРОГРАММА УМНОЖЕНИЯ ЦЕЛЫХ ДВОИЧНЫХ ЧИСЕЛ БЕЗ ЗНАКА
;ФОРМАТА 8*8=16.
;МЕТОД УМНОЖЕНИЯ: 8 ЦИКЛОВ СДВИГОВ МНОЖИТЕЛЯ И ТЕКУЩЕЙ
;СУММЫ ЧАСТИЧНЫХ ПРОИЗВЕДЕНИЙ ВЛЕВО.
;ВХОДНЫЕ ПАРАМЕТРЫ: (C)-МНОЖИТЕЛЬ,(E)-МНОЖИМОЕ.ВЫХОДНОЙ
;ПАРАМЕТР: (H,L)-ПРОИЗВЕДЕНИЕ.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫ
;СОХРАНЯЮТСЯ (А),(E).
;####################################################
XRA A
MOV H,A
MOV L,A
MOV D,A
ADD C
RZ
XRA A
ADD E
RZ
MOV H,C
MVI B,8 ;СЧЕТЧИК ЦИКЛОВ
;СДВИГ МНОЖИТЕЛЯ И ТЕКУЩЕЙ СУММЫ ЧП ВЛЕВО
Z: DAD H
JNC P ;ЕСЛИ ПАЗРЯД МНОЖИТЕЛЯ=0
;СЛОЖЕНИЕ МНОЖИМОГО С ТЕКУЩЕЙ СУММОЙ ЧП
DAD D
;ПРОВЕРКА КОНЦА ЦИКЛА
P: DCR B
JNZ Z ;ЗАЦИКЛИВАНИЕ
RET
Y24A:
;######################################################
;ПОДПРОГРАММА УМНОЖЕНИЯ ЦЕЛЫХ ДВОИЧНЫХ ЧИСЕЛ БЕЗ ЗНАКА
;ФОРМАТА 16*8=24 (БЕЗ ПРОВЕРКИ СОМНОЖИТЕЛЕЙ НА НОЛЬ).
;ВХОДНЫЕ ПАРАМЕТРЫ: (А)-МНОЖИТЕЛЬ, (D,E)-МНОЖИМОЕ.ВЫХОД
;НЫЕ ПАРАМЕТРЫ: (A,H,L)-ПРОИЗВЕДЕНИЕ.ИСПОЛЬЗУЮТСЯ ВСЕ
;РЕГИСТРЫ,СОХРАНЯЕТСЯ (D,E)
;######################################################
LXI H,0 ;ОБНУЛЕНИЕ СУММЫ ЧП
LXI B,08 ;(B)=0,(C)- СЧЕТЧИК ЦИКЛОВ
;СДВИГ ТЕКУЩЕЙ СУММЫ ЧП И МНОЖИТЕЛЯ ВЛЕВО
CIKL: DAD H
ADC A
JNC PER ;ЕСЛИ РАЗРЯД МНОЖИТЕЛЯ=0
;СЛОЖЕНИЕ МНОЖИМОГО С ТЕКУЩЕЙ СУММОЙ ЧП
DAD D
ADC B
;ПРОВЕРКА КОНЦА ЦИКЛА
PER: DCR C
JNZ CIKL ;ЗАЦИКЛИВАНИЕ
RET
Y32B:
;#####################################################
;ПОДПРОГРАММА УМНОЖЕНИЯ ЦЕЛЫХ ДВОИЧНЫХ ЧИСЕЛ БЕЗ ЗНАКА
;ФОРМАТА 16*16=32. ВАРИАНТ Б.
;МЕТОД УМНОЖЕНИЯ: РЕЗУЛЬТАТ 16*16=32 ОПРЕДЕЛЯЕТСЯ КАК
;СУММА ДВУХ СДВИНУТЫХ ОТНОСИТЕЛЬНО ДРУГ ДРУГА ПРОИЗВЕ-
;ДЕНИЙ 16*8=24,ПОЛУЧЕННЫХ УМНОЖЕНИЕМ МНОЖИМОГО СООТВЕТ-
;СТВЕННО НА МЛБ И СТБ МНОЖИТЕЛЯ.
;ВХОДНЫЕ ПАРАМЕТРЫ: (B,C)-МНОЖИТЕЛЬ,(D,E)-МНОЖИМОЕ. ВЫ-
;ХОДНЫЕ ПАРАМЕТРЫ: (B,C,H,L)-ПРОИЗВЕДЕНИЕ.ИСПОЛЬЗУЮТСЯ
;ВСЕ РЕГИСТРЫ.ГЛУБИНА СТЕКА-4.ИСПОЛЬЗУЕТСЯ ПОДРОГРАММА
;*Y24A*.
;#####################################################
;ОБНУЛЕНИЕ ТЕКУЩЕЙ СУММЫ ЧП
XRA A
MOV H,A
MOV L,A
;ПРОВЕРКА МНОЖИМОГО НА 0
ORA D
ORA E
JNZ PER1 ;ЕСЛИ МНОЖИМОЕ НЕ 0
MOV B,A
MOV C,A
RET
;ПРОВЕРКА МНОЖИТЕЛЯ НА 0
PER1: XRA A
ORA B
ORA C
RZ ;ЕСЛИ МНОЖИТЕЛЬ=0
;УМНОЖЕНИЕ МНОЖИМОГО НА МЛБ МНОЖИТЕЛЯ
MOV A,C ;(A)-МЛБ МНОЖИТЕЛЯ
PUSH B ;СОХРАНЕНИЕ МНОЖИТЕЛЯ
CALL ZY24A ;(A,H,L)-ПРОИЗВЕДЕНИЕ 1 (ПР1)
;СОХРАНЕНИЕ ПРОИЗВЕДЕНИЯ 1
XTHL ;СОХРАНЕНИЕ СРБ,МЛБ ПР1
PUSH PSW ;СОХРАНЕНИЕ СТБ ПР1
;УМНОЖЕНИЕ МНОЖИМОГО НА СТБ МНОЖИТЕЛЯ
MOV A,H ;(A)-СТБ МНОЖИТЕЛЯ
CALL Y24A ;(A,H,L)-ПРОИЗВЕДЕНИЕ 2 (ПР2)
;СЛОЖЕНИЕ СДВИНУТЫХ НА 8 РАЗРЯДОВ ПР1 И ПР2
MOV B,A ;(B)-СТБ ПР2
POP PSW ;(A)-СТБ ПР1
ADD H
MOV C,A ;(C)-СУММА СТБ ПР1 И СТБ ПР2
JNC PER2
INR B ;УЧЕТ ПЕРЕНОСА В СТБ
PER2: MOV H,L ;(H)-МЛБ ПР2
MVI L,0
POP D ;(D,E)-СРБ,МЛБ ПР1
DAD D
RNC
INX B ;УЧЕТ ПЕРЕНОСА В СТБ
RET
DOPB:
;###################################################
;ПОДПРОГРАММА ПРЕОБРАЗОВАНИЯ КОДА ЧИСЛА В РЕГИСТРО-
;ВОЙ ПАРЕ (B,C) В ДОПОЛНИТЕЛЬНЫЙ КОД.
;ВХОДНОЙ ПАРАМЕТР: (B,C)-ДВОИЧНЫЙ КОД ЧИСЛА.ВЫХОДНОЙ
;ПАРАМЕТР: (B,C)-ДОПОЛНИТЕЛЬНЫЙ КОД.
;###################################################
PUSH PSW
MOV A,B
CMA
MOV B,A
MOV A,C
CMA
MOV C,A
INX B
POP PSW
RET
DOPD:
;###################################################
;ТО ЖЕ, НО РЕГИСТРОВАЯ ПАРА (D,E)
;###################################################
PUSH PSW
MOV A,D
CMA
MOV D,A
MOV A,E
CMA
MOV E,A
INX D
POP PSW
RET
DOPH:
;###################################################
;ТО ЖЕ, НО ПАРА (H,L)
;###################################################
PUSH PSW
MOV A,H
CMA
MOV H,A
MOV A,L
CMA
MOV L,A
INX H
POP PSW
RET
D32A:
;##################################################
;ПОДПРОГРАММА ДЕЛЕНИЯ ЦЕЛЫХ ДВОИЧНЫХ ЧИСЕЛ БЕЗ ЗНАКА
;ФОРМАТА 32: 16=(16,16)
;ВХОДНЫЕ ПАРАМЕТРЫ: (H,L,D,E)-ДЕЛИМОЕ,(B,C)-ДЕЛИТЕЛЬ
;ВЫХОДНЫЕ ПАРАМЕТРЫ: (D,E)-ЧАСТНОЕ,(H,L)-ОСТАТОК,CY=0-
;-ПРИЗНАК ПЕРЕПОЛНЕНИЯЧАСТНОГО.ИСПОЛЬЗУЮТСЯ ВСЕ РЕ-
;ГИСТРЫ,ГЛУБИНА СТЕКА-2.ИСПОЛЬЗУЕТСЯ ПОДПРОГРАММА
;*DOPB*
;##################################################
;ПРОВЕРКА ЧАСТНОГО НА ПЕРЕПОЛНЕНИЕ: ЧАСТНОЕ>16 БИТ?
MOV A,L
SUB C
MOV A,H
SBB B
RNC ;ЕСЛИ ПЕРЕПОЛНЕНИЕ,CY=0
;ДОПОЛНЕНИЕ ДЕЛИТЕЛЯ
CALL ZDOPB ;(B,C)-ДОПОЛНИТЕЛЬНЫЙ КОД
XRA A ;(А)=0-СЧЕТЧИК ЦИКЛОВ
;СДВИГ ВЛЕВО ОСТАТКА И ЧАСТНОГО В (H,L,D,E)
ZIKL: DAD H
RAR ;СОХРАНЕНИЕ ПЕРЕНОСА
XCHG
DAD H
XCHG
JNC ER1
INX H ;УЧЕТ ПЕРЕНОСА
;СЛОЖЕНИЕ ОСТАТКА С ДОПОЛНИТЕЛЬНЫМ КОДОМ ДЕЛИТЕЛЯ
ER1: PUSH H ;СОХРАНЕНИЕ ОСТАТКА
DAD B
;ПРОВЕРКА ЗНАКА СУММЫ
JNC ER2 ;ЕСЛИ СУММА < 0
RAL ;ВОССТАНОВЛЕНИЕ ПЕРЕНОСА
ER3: INX D ;РАЗРЯД ЧАСТНОГО=1
INX SP
INX SP ;БАЛАНС СТЕКА
;ПРОВЕРКА КОНЦА ЦИКЛА
ADI 16
JNC ZIKL ;ЗАЦИКЛИВАНИЕ
STC ;CY=1
RET
;ПРОВЕРКА ПЕРЕНОСА ОТ СДВИГА ОСТАТКА
ER2: RAL ;ВОССТАНОВЛЕНИЕ ПЕРЕНОСА
JC ER3
;ВОССТАНОВЛЕНИЕ ОСТАТКА,ПРОВЕРКА КОНЦА ЦИКЛА
POP H
ADI 16
JNC ZIKL ;ЗАЦИКЛИВАНИЕ
STC ;CY=1
RET
SLOW:
;####################################################
;ПЕРЕСЫЛКА СЛОВА. MEM(DE) <- MEM(HL)
;####################################################
PUSH PSW
PUSH H
PUSH D
MOV A,M
STAX D
INX H
INX D
MOV A,M
STAX D
POP D
POP H
POP PSW
RET
USTB: ;*****************************************************
RET
DEBI: ;***************************************************
;* ПОДПРОГРАММА ПРЕОБРАЗОВАНИЯ ДВОИЧНО-ДЕСЯТИЧНОГО *
;* ЧИСЛА В ДВОИЧНОЕ. ВХОДНОЙ ПАРАМЕТР: (А), *
;* ВЫХОДНОЙ ПАРАМЕТР: (А). ВСЕ РЕГИСТРЫ СОХРАНЯЮТСЯ*
;***************************************************
PUSH B
;ВЫДЕЛЕНИЕ СТАРШЕЙ СТЦ И МЛАДШЕЙ МЛЦ ЦИФР ЧИСЛА
MOV B,A
ANI 0FH ;МАСКА НА МЛЦ
MOV C,A
MOV A,B
ANI 0F0H ;МАСКА НА СТЦ
RRC
MOV B,A
;ДВОИЧНОЕ СЛОЖЕНИЕ: СТЦ*(8+2)+МЛЦ
RRC
RRC
ADD B
ADD C
POP B
RET
RSB: ;****************************************************
;* П/П ПЕРЕДАЧИ БАЙТА ЧЕРЕЗ RS-232C *
;* ПЕРЕДАВАЕМЫЙ БАЙТ В РЕГИСТРЕ С *
;****************************************************
PUSH B
PUSH PSW
;ОЖИДАНИЕ ГОТОВНОСТИ КР580ВВ51 К ПЕРЕДАЧЕ БАЙТА
POL: LDA SARTC
ANI 01H ;0000 0001
JZ POL
;ОЖИДАНИЕ ГОТОВНОСТИ IBM К ПРИЕМУ БАЙТА
RUL: LDA SARTC
ANI 80H ;1000 0000
JZ RUL
;ПЕРЕДАЧА БАЙТА
MOV A,C
STA SARTD
POP PSW
POP B
RET
;*****************************************************
RSW: RET
;*****************************************************
MASS:
;*****************************************************
;* ПЕРЕПИСЬ МАССИВА ПО НОВОМУ АДРЕСУ *
;* B -ПРИЕМНИК, D -ИСТОЧНИК, H -ДЛИНА (В БАЙТАХ) *
;* РЕГИСТРЫ НЕ СОХРАНЯЮТСЯ *
;*****************************************************
LDAX D
STAX B
INX D
INX B
DCX H
MOV A,H
ORA L
JNZ MASS
RET
;****************************************************
SRED: ;* СРЕДНЕЕ ЗНАЧЕНИЕ ЭЛЕМЕНТОВ МАССИВА СЛОВ *
;* BC - ЧИСЛО ЭЛЕМЕНТОВ , HL - НАЧАЛЬНЫЙ АДРЕС, *
;* DE- СРЕДНЕЕ ЗНАЧЕНИЕ *
;****************************************************
;ОЧИСТКА СУММЫ
XRA A
STA BUFBIOS
STA BUFBIOS+1
STA BUFBIOS+2
STA BUFBIOS+3
STA BUFBIOS+4
PUSH B ;ЧИСЛО ЭЛЕМЕНТОВ В СТЕКЕ
MORE: MOV E,M ;ЧТЕНИЕ СЛАГАЕМОГО ЭЛЕМЕНТА МАССИВА
INX H ;И ПРИРАЩЕНИЕ АДРЕСА
MOV D,M
INX H
XCHG
DCX B ;ПРОВЕРКА КОНЦА
MOV A,B
ORA C
JZ DEL ;НА ДЕЛЕНИЕ
;СУММИРОВАНИЕ
XRA A ;ОБНУЛЕНИЕ ПРИЗНАКА (CY)
LDA BUFBIOS
ADD L
STA BUFBIOS
LDA BUFBIOS+1
ADC H
STA BUFBIOS+1
LDA BUFBIOS+2
ACI 0
STA BUFBIOS+2
LDA BUFBIOS+3
ACI 0
STA BUFBIOS+3
XCHG
JMP MORE
;ДЕЛЕНИЕ
DEL: POP B ;ДЕЛИТЕЛЬ В (ВС)
DCX B
LHLD BUFBIOS
XCHG
LHLD BUFBIOS+2 ;ДЕЛИМОЕ В (HLDE)
CALL ZD32A ;ЧАСТНОЕ В (DE)
RET
D16: ;***************************************************
;ПОДПРОГРАММА ДЕЛЕНИЯ ЦЕЛЫХ ДВОИЧНЫХ ЧИСЕЛ БЕЗ ЗНАКА
;ФОРМАТА 16: 8=(8,8).
;МЕТОД ДЕЛЕНИЯ С ВОССТАНОВЛЕНИЕМ ОСТАТКА.
;ВХОДНЫЕ ПАРАМЕТРЫ: (HL)-ДЕЛИМОЕ, (C)-ДЕЛИТЕЛЬ.ВЫХОД-
;НЫЕ ПАРАМЕТРЫ: (H)-ОСТАТОК,(L)-ЧАСТНОЕ,CY-ПРИЗНАК
;ПЕРЕПОЛНЕНИЯ ЧАСТНОГО.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫ,
;КРОМЕ (DE); СОХРАНЯЕТСЯ (С).
;ОЦЕНКА: ДЛИНА -28 БАЙТ,ВРЕМЯ НЕ БОЛЕЕ 619 ТАКТОВ
;***************************************************
;ПРОВЕРКА ЧАСТНОГО НА ПЕРЕПОЛНЕНИЕ: ЧАСТНОЕ > 8 БИТ ?
MOV A,H
SUB C
RNC ;ЕСЛИ ПЕРЕПОЛНЕНИЕ, CY=0
MVI B,8 ;СЧЕТЧИК ЦИКЛОВ
;СДВИГ ВЛЕВО ОСТАТКА И ЧАСТНОГО В (HL)
Q9: DAD H
MOV A,H ;(A)- СТБ ОСТАТКА
JC Q1 ;ЕСЛИ ПЕРЕПОЛНЕНИЕ ОСТАТКА
;ВЫЧИТАНИЕ ДЕЛИТЕЛЯ ИЗ ОСТАТКА
SUB C
JNC Q2 ;ЕСЛИ РАЗНОСТЬ > 0
;РАЗНОСТЬ < 0, ВОССТАНОВЛЕНИЕ ОСТАТКА
ADD C
MOV H,A
JMP Q3
;ПЕРЕПОЛНЕНИЕ ОСТАТКА,РАЗРЯД ЧАСТНОГО = 1
Q1: SUB C
Q2: MOV H,A
INX H ;+1 В ЧАСТНОЕ
;ПРОВЕРКА КОНЦА ЦИКЛА
Q3: DCR B
JNZ Q9 ;ЗАЦИКЛИВАНИЕ
STC ;CY=1
RET
;
FUNC: ;***************************************************
;* ВЫЧИСЛЕНИЕ ТАБЛИЧНОЙ ФУНКЦИИ *
;* ВХОДЫ: (HL)-АРГУМЕНТ, (DE)-ПЕРВЫЙ ТАБЛ. АРГУМЕНТ,*
;* (BC)-АДРЕС ТАБЛИЦЫ, (A)-ШАГ АРГУМЕНТА. *
;* ВЫХОД: (HL)-ЗНАЧЕНИЕ ФУНКЦИИ *
;***************************************************
;НАЧАЛЬНЫЕ УСТАНОВКИ
PUSH B ;АДРЕС ТАБЛИЦЫ В СТЕКЕ
MOV C,A ;ШАГ АРГУМЕНТА В (C)
;ОПРЕДЕЛЕНИЕ АДРЕСА ЗНАЧЕНИЯ ФУНКЦИИ
CALL ZDOPD
DAD D ;(HL)=(HL)-(DE)
CALL ZD16
MVI H,0 ;В (HL) ИНДЕКС
DAD H ;УДВОЕНИЕ ИНДЕКСА
POP B ;В (BC) АДРЕС ТАБЛИЦЫ
DAD B ;В (HL) АДРЕС ЗНАЧЕНИЯ
;ОПРЕДЕЛЕНИЕ ЗНАЧЕНИЯ ФУНКЦИИ
MOV E,M
INX H
MOV D,M
XCHG ;В (HL) ЗНАЧЕНИЕ ФУНКЦИИ
RET
GRAN: ;*************************************************
;* ВВЕДЕНИЕ АРГУМЕНТА В ГРАНИЦЫ *
;*ВХОДЫ: (HL)-АРГУМЕНТ,(DE)-МАКСИМУМ,(BC)-МИНИМУМ*
;*ВЫХОД: (HL)-АРГУМЕНТ В ГРАНИЦАХ *
;*************************************************
SHLD BUFBIOS
CALL ZDOPH
DAD D ;MAX-ARG
XRA A
MOV A,H
RAL
JNC DUNA ;ПРОВЕРЯЕМ ДАЛЬШЕ
MOV H,D
MOV L,E ;(HL)=MAX
JMP SESE
DUNA: LHLD BUFBIOS
CALL ZDOPH
DAD B ;MIN-ARG
XRA A
MOV A,H
RAL
JC NICH
MOV H,B
MOV L,C ;(HL)=MIN
JMP SESE
NICH: LHLD BUFBIOS
SESE: RET
COD: ;***************************************************
;* П/П ПЕРЕКОДИРОВКИ КОДА ДЛЯ ВЫВОДА НА ИНДИКАТОРЫ *
;* ВХОД: ЧИСЛО ОТ 0 ДО 16 В РЕГИСТРЕ А *
;* ВЫХОД: КОД СИМВОЛА ДЛЯ ВЫВОДА НА ИНДИКАТОРЫ В *
;* РЕГИСТРЕ А *
;***************************************************
PUSH H
PUSH D
LXI H,BCOD ;АДРЕС ТАБЛИЦЫ КОДОВ В HL
MVI D,0
MOV E,A
DAD D
MOV A,M
POP D
POP H
RET
;-----------------------------------------------
;ТАБЛИЦА КОДОВ ОТ 0 ДО 16
BCOD: DB 10H,0,1,2,3,4,6,9,11,5,7,8,10,13,14,15,12
;************************************************
;
;<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>
;<<<<< Н А Ч А Л О П Р О Г Р А М М Ы >>>>>>
;<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>
BEGIN: DI
;----------------------------------------------------
;УСТАНОВКА СТЕКА
LXI SP,STACK
;----------------------------------------------------
;ОЧИСТКА ОЗУ
LXI H,RAM ;НАЧАЛО
LXI D,STACK-100 ;КОНЕЦ