Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SCORPIO / DIPLOM / DIPLX.DOC
Скачиваний:
26
Добавлен:
16.04.2013
Размер:
1.27 Mб
Скачать

Литература

  1. Красик В.В. Автоматические устройства компенсации реактивной мощности в электросетях предприятий. – 2-е изд., перераб. и доп. – М.: Энергоатомиздат, 1983. – 136 с., ил.

  2. Статичесие компенсаторы для регулирования реактивной мощности. Под ред. Р.М.Матура. – М.: Энергоатомиздат, 1987. – 254 с.

  3. Гуртовцев А.Л., Гудыменко С.В. Программы для микропроцессоров: Справ. пособие.- Мн.: Высш. шк., 1989. – 352 с.

  4. Каган Б.М., Сташин В.В. Основы проектирования микропроцессорных устройств автоматики. – М.: Энергоатомиздат, 1987. – 304 с.

  5. Титов М.А. и др. Изделия электронной техники. Микропроцессоры и однокристальные микроЭВМ: Справочник. – М.: Радио и связь, 1994. – 120с.: ил.

  6. Коффрон Дж., Лонг В. Расширение микропроцессорных систем. – М.: Машиностроение, 1987. – 320 с.

  7. Большие интегральные схемы запоминающих устройств: Справочник. Под ред. А.Ю.Гордонова и Ю.Н.Дьякова. – М.: Радио и связь, 1990. – 288с.: ил.

  8. Лебедев О.Н. и др. Изделия электронной техники. Цифровые микросхемы. Микросхемы памяти. Микросхемы ЦАП и АЦП: Справочник. – М.: Радио и связь, 1994. – 248 с.: ил.

  9. Замятин В.Я. и др. Мощные полупроводниковые приборы. Тиристоры: Справочник. – М.: Радио и связь, 1987. – 576 с.: ил.

  10. Иванов В.И. Полупроводниковые оптоэлектронные приборы: Справочник. – М.: Энергоатомиздат, 1989. – 448с.: ил.

  11. Сташин В. В. Проектирование цифровых устройств на однокристальных микроконтроллерах. – М., «Энергоатомиздат», 1990, 224 с.

  12. Мини- и микро – ЭВМ в управлении промышленными объектами. – Л., «Машиностроение», 1984, 336 с., ил.

  13. Электрические нагрузки промышленных предприятий. - Л., «Энергия», 1971, 264 с. Авт.: С. Д. Волобринский, Г. М. Каялов, П. Н. Клейн, Б. С. Мешель.

  14. Железко Ю.С. Компенсация реактивной мощности в сложных электрических системах. – М.: Энергия, 1981. – 200 с.

  15. Статические компенсаторы реактивной мощности в электрических системах: Пер. тематического сборника рабочей группы Исследовательского Комитета №38 СИГРЭ. - М., «Энергоатомиздат», 1990, 174 с.

  16. В.И.Каракеян, Л.А.Константинова, Н.М.Ларионов, В.М.Писеев, под ред.к.т.н. доц В.И. Каракеяна. Методические указания по выполнению раздела «Охрана труда в дипломных проектах».-М.,МИЭТ,1983.

  17. Л.А.Константинова, Н.М.Ларионов, В.М.Писеев, под ред.к.т.н. доц В.И. Каракеяна. Методические указания по выполнению раздела «Охрана труда в дипломных проектах» для студентов МИЭТ.-М.,:МИЭТ,1988.

  18. Под ред. С.В.Белова. Охрана окружающей среды. -М.,Высшая школа,1991.

Моисеева Н.К., Павлова А.М., Проскуряков А.В.

  1. "Методика выполнения организационно-экономической части дипломного проекта",МИЭТ 1987 г.

  2. Проскуряков А.В., Анискин Ю.П.

"Методические указания к выполнению курсовой работы « Оценка динамики трудоемкости и себестоимости на стадии освоения» МИЭТ 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 ;КОНЕЦ

42

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