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

SCORPIO / DIPLOM / ECONOM / DIPLOM! / PRIL

.DOC
Скачиваний:
23
Добавлен:
16.04.2013
Размер:
219.14 Кб
Скачать

Приложение

  1. Листинг рабочей программы контроллера

  2. Листинг тестовой программы контроллера

  3. Листинг программы обмена информацией NEW

  4. Спецификация элементов

  5. Стоимость элементов

Приложение 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 ;КОНЕЦ

CALL ZDOPH

DAD D

LXI D,RAM

XCHG

MVI B,0

Q: MOV M,B

INX H

DCX D

MOV A,E

ORA D

JNZ Q

;----------------------------------------------------

;УСТАНОВКА БАЙТА СИНХРОНИЗАЦИИ НАЧАЛА СТРОКИ НА

;МОНИТОРЕ IBM

MVI A,55H

STA VIDEO

;----------------------------------------------------

;ПРОГРАММИРОВАНИЕ ППИ К580ВВ55

MVI A,92H ;1001 0010

STA RUSP ;PA,PB - ВВОД; PC - ВЫВОД

MVI A,10H ;ПОГАСИЛ ИНДИКАТОР

STA PRTC

;----------------------------------------------------

;ПРОГРАММИРОВАНИЕ ТАЙМЕРА 1

MVI A,34H ;0011 0100, РЕЖИМ 2, СЧЕТЧИК 0

STA RUST1

MVI A,0FFH

STA ST1Z0 ;МЛ. БАЙТ

STA ST1Z0 ;СТ. БАЙТ

;

MVI A,74H ;0111 0100, РЕЖИМ 2, СЧЕТЧИК 1

STA RUST1

MVI A,0FFH

STA ST1Z1 ;МЛ. БАЙТ

STA ST1Z1 ;СТ. БАЙТ

;

MVI A,0B4H ;1011 0100, РЕЖИМ 2, СЧЕТЧИК 2

STA RUST1

MVI A,0FFH

STA ST1Z2 ;МЛ. БАЙТ

STA ST1Z2 ;СТ. БАЙТ

;----------------------------------------------------

;ПРОГРАММИРОВАНИЕ ТАЙМЕРА 2

MVI A,34H ;0011 0100, РЕЖИМ 2, СЧЕТЧИК 0

STA RUST2 ;RST7.5 1ГЦ ИЗ TRAP 50ГЦ

MVI A,50

STA ST2Z0 ;МЛ. БАЙТ

MVI A,0

STA ST2Z0 ;СТ. БАЙТ

;

MVI A,74H ;0111 0100, РЕЖИМ 2, СЧЕТЧИК 1

STA RUST2 ;СИНХРОНИЗАЦИЯ A,B,C 180 КГЦ

MVI A,6

STA ST2Z1 ;МЛ. БАЙТ

MVI A,0

STA ST2Z1 ;СТ. БАЙТ

;

MVI A,0B4H ;1011 0100, РЕЖИМ 2, СЧЕТЧИК 2

STA RUST2 ;RS-232C 9600x16 ГЦ

MVI A,7

STA ST2Z2 ;МЛ. БАЙТ

MVI A,0

STA ST2Z2 ;СТ. БАЙТ

;----------------------------------------------------

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

MVI A,0CEH ;1100 1110,ПОСЫЛКА 8 БИТ,2 СТОП-БИТА,

STA SARTC ;9600х16, НЕТ БИТА ПАРИТЕТА

MVI A,1

STA SARTC ;РЕЖИМ ПЕРЕДАЧИ

;---------------------------------------------------

;УСТАНОВКА ДУБЛЕЙ ПОРТОВ

LDA PRTA

STA DPRTA

LDA PRTB

STA DPRTB

MVI A,0

STA IND

;---------------------------------------------------

;ОПРЕДЕЛЕНИЕ ДИСКРЕТНОСТИ УПРАВЛЕНИЯ В СЕКУНДАХ

;от 30 сек до 8 минут (15х30+30 сек)

LDA PRTA ;ПРИ КОЭФ.=0 DISKU=STEPU

ANI 0FH

MOV C,A ;КОЭФФИЦИЕНТ

LHLD STEPU ;ШАГ

MOV E,L

CALL ZY88B

XCHG

LHLD STEPU

DAD D

SHLD DISKU ;ДИСКРЕТНОСТЬ УПРАВЛЕНИЯ

;----------------------------------------------------

;ОПРЕД. ЗАДАНИЯ ФИ от -30град до +30град (15х2град)

LDA PRTA ;ПРИ КОЭФ.=0 ZADF=0

RAR

RAR

RAR

RAR

ANI 0FH

MOV C,A ;КОЭФФИЦИЕНТ

LHLD STEPZ ;ШАГ

MOV E,L

CALL ZY88B

LDA PRTB ;ЗНАК:

ANI 80H ;"0" -ЕМКОСТНОЙ КВАДРАНТ "+"

JNZ VPER ;"1" -ИНДУКТИВНЫЙ КВАДРАНТ "-"

CALL ZDOPH

VPER: SHLD ZADF ;ЗАДАНИЕ В ДОПОЛНИТЕЛЬНОМ КОДЕ

;----------------------------------------------------

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

;от 2 град до 32 град (15х2+2 град)

LDA PRTB ;ПРИ КОЭФ.=0 NECH=STEPN

ANI 0FH

MOV C,A ;КОЭФФИЦИЕНТ

LHLD STEPN ;ШАГ

MOV E,L

CALL ZY88B

XCHG

LHLD STEPN

DAD D

SHLD NECH ;НЕЧУВСТВИТЕЛЬНОСТЬ

;----------------------------------------------------

;ТЕСТ СВЕТОДИОДОВ

MVI C,10H

XXX: MOV A,C

CALL ZCOD

STA PRTC

MVI B,0

XX: MVI D,128

ZZ: DCR D

JNZ ZZ

DCR B

JNZ XX

DCR C

JNZ XXX

LDA IND ;ВОССТАНАВЛИВАЮ СВЕТОДИОДЫ

CALL ZCOD

STA PRTC

;----------------------------------------------------

;УСТАНОВКА СЧЕТЧИКОВ ПРЕРЫВАНИЙ RST7.5,TRAP

LHLD DISKU

SHLD CINT

LDA DISKW

STA CNMI

;-----------------------------------------------------

;СБРОС ТРИГГЕРА RST7.5

MVI A,10H ;0001 0000

DB 30H ;КОМАНДА SIM

;РАЗРЕШЕНИЕ ПРЕРЫВАНИЯ МИКРОПРОЦЕССОРА

EI

MVI A,18H

DB 30H

BASE: ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;$ ЦИКЛ ОСНОВНОЙ ПРОГРАММЫ, ПРЕРЫВАЕМЫЙ $

;$ ВРЕМЯ ОТ ВРЕМЕНИ ЗАПРОСАМИ TRAP, RST7.5 $

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;ПРОВЕРКА ВЫКЛЮЧАТЕЛЯ, РАЗРЕШАЮЩЕГО ПЕРЕДАЧУ

;ВИДЕОБУФЕРА В IBM

LDA PRTB

ANI 40H ;0100 0000

JZ FLA ;НЕТ РАЗРЕШЕНИЯ

;ПЕРЕДАЧА ВИДЕОБУФЕРА В IBM

MVI B,12H ;СЧЕТЧИК БАЙТОВ ВИДЕОБУФЕРА

LXI H,VIDEO

MALO: MOV C,M ;ПЕРЕДАВАЕМЫЙ БАЙТ В (С)

CALL ZRSB

INX H

DCR B

JNZ MALO

;ПОДСВЕТКА СВЕТОДИОДОВ

FLA: MVI C,10H

YYY: MOV A,C

CALL ZCOD

STA PRTC

DCR C

JNZ YYY

LDA IND ;ВОССТАНАВЛИВАЮ СВЕТОДИОДЫ

CALL ZCOD

STA PRTC

;ЗАДЕРЖКА ВРЕМЕНИ

MVI B,0

ZX: MVI D,10

YY: DCR D

JNZ YY

DCR B

JNZ ZX

JMP BASE

;-----------------------------------------------

;****************************************************

;* ОБРАБОТКА ПРЕРЫВАНИЯ TRAP 20MC *

;****************************************************

TRAP: PUSH PSW

PUSH B

PUSH D

PUSH H

;ДИСПЕТЧЕР ПРЕРЫВАНИЯ:

;ОБРАБАТЫВАЮ ТОЛЬКО КАЖДОЕ DISKW-ОЕ ПРЕРЫВАНИЕ

LDA CNMI ;СЧИТЫВАНИЕ СЧЕТЧИКА ПРЕРЫВАНИЯ

DCR A ;ДЕКРЕМЕНТ СЧЕТЧИКА ПРЕРЫВАНИЯ

STA CNMI ;ЗАПИСЬ В СЧЕТЧИК ПРЕРЫВАНИЯ

JNZ EN ;НА КОНЕЦ

LDA DISKW ;УСТАНОВКА СЧЕТЧИКА ПРЕРЫВАНИЯ

STA CNMI

;СЧИТЫВАНИЕ СЧЕТЧИКОВ A,B,C ТАЙМЕРА 1

;ИНВЕРСИЯ И ЗАПИСЬ В БУФЕР

MVI A,04H ;0000 0100

STA RUST1

LDA ST1Z0 ;МЛ. БАЙТ

CMA

MOV L,A

LDA ST1Z0 ;СТ. БАЙТ

CMA

MOV H,A

SHLD BUFER

;-----------------------

MVI A,44H ;0100 0100

STA RUST1

LDA ST1Z1 ;МЛ. БАЙТ

CMA

MOV L,A

LDA ST1Z1 ;СТ. БАЙТ

CMA

MOV H,A

SHLD BUFER+2

;----------------------

MVI A,084H ;1000 0100

STA RUST1

LDA ST1Z2 ;МЛ. БАЙТ

CMA

MOV L,A

LDA ST1Z2 ;СТ. БАЙТ

CMA

MOV H,A

SHLD BUFER+4

;ПРОГРАММИРОВАНИЕ ТАЙМЕРА 1

MVI A,34H ;0011 0100, РЕЖИМ 2, СЧЕТЧИК 0

STA RUST1

MVI A,0FFH

STA ST1Z0 ;МЛ. БАЙТ

STA ST1Z0 ;СТ. БАЙТ

;

MVI A,74H ;0111 0100, РЕЖИМ 2, СЧЕТЧИК 1

STA RUST1

MVI A,0FFH

STA ST1Z1 ;МЛ. БАЙТ

STA ST1Z1 ;СТ. БАЙТ

;

MVI A,0B4H ;1011 0100, РЕЖИМ 2, СЧЕТЧИК 2

STA RUST1

MVI A,0FFH

STA ST1Z2 ;МЛ. БАЙТ

STA ST1Z2 ;СТ. БАЙТ

;----------------------------------------------------

;ЗАПИСЬ В ВИДЕОБУФЕР*******************************************

LHLD ASRED

SHLD VIDEO+2

LHLD BSRED

SHLD VIDEO+4

LHLD CSRED

SHLD VIDEO+6

LHLD ZADF

SHLD VIDEO+8

LHLD FI

SHLD VIDEO+10

LHLD DFI

SHLD VIDEO+12

LHLD NECH

SHLD VIDEO+14

LHLD ERRO

SHLD VIDEO+16

;----------------------

;ВЫВОД УПРАВЛЕНИЯ В MBR

EN: LHLD DMBRD

SHLD MBRD

POP H

POP D

POP B

POP PSW

EI

RET

;

;****************************************************

;* ОБРАБОТКА ПРЕРЫВАНИЯ RST7.5 1CЕК *

;****************************************************

RST75: PUSH PSW

PUSH B

PUSH D

PUSH H

;ДИСПЕТЧЕР ПРЕРЫВАНИЯ:

;КАЖДУЮ СЕКУНДУ ОТРАБАТЫВАЕТ П/П WRITE

;ЧЕРЕЗ DISK СЕКУНД НАЧИНАЕТ РАБОТАТЬ П/П CONTROL

MVI A,10H

DB 30H ;СБРОС ТРИГГЕРА RST7.5

CALL WRITE

LHLD CINT ;СЧИТЫВАНИЕ СЧЕТЧИКА ПРЕРЫВАНИЯ

DCX H ;ДЕКРЕМЕНТ СЧЕТЧИКА ПРЕРЫВАНИЯ

MOV A,H

ORA L

SHLD CINT ;ЗАПИСЬ СЧЕТЧИКА ПРЕРЫВАНИЯ

JNZ ENN ;НА КОНЕЦ

LHLD DISKU ;УСТАНОВКА СЧЕТЧИКА ПРЕРЫВАНИЯ

SHLD CINT

CALL CONTROL ;ВЫЗОВ CONTROL

ENN: POP H

POP D

POP B

POP PSW

EI

RET

;****************************************************

WRITE: ;* ПОДПРОГРАММА ПЕРЕЗАПИСИ ИЗ БУФЕРА В СКОЛЬЗЯЩИЕ *

;* МАССИВЫ A,B,C ФИКСИРОВАННОЙ ДЛИНЫ 127 СЛОВ *

;****************************************************

;СДВИГ МАССИВА ВЛЕВО НА МЕСТО ПУСТЫШКИ

LXI B,APUS ;ПРИЕМНИК

LXI D,ABEG ;ИСТОЧНИК

LXI H,LONG ;ДЛИНА

CALL ZMASS

;------------------------

LXI B,BPUS ;ПРИЕМНИК

LXI D,BBEG ;ИСТОЧНИК

LXI H,LONG ;ДЛИНА

CALL ZMASS

;------------------------

LXI B,CPUS ;ПРИЕМНИК

LXI D,CBEG ;ИСТОЧНИК

LXI H,LONG ;ДЛИНА

CALL ZMASS

;------------------------

;ПЕРЕЗАПИСЬ ИЗ БУФЕРА В МАССИВ

LHLD BUFER

SHLD AEND

LHLD BUFER+2

SHLD BEND

LHLD BUFER+4

SHLD CEND

RET

;****************************************

CONTROL: ;* ПОДПРОГРАММА УПРАВЛЕНИЯ КОМПЕНСАЦИЕЙ *

;****************************************

;

;ПРОВЕРКА ЗАПОЛНЕНИЯ МАССИВОВ A,B,C

LHLD APUS

MOV A,L

ORA H

JZ KONEC

;----------------------------------------

;УСРЕДНЕНИЕ ЗНАЧЕНИЙ A,B,C

LXI B,LONGW

LXI H,ABEG

CALL ZSRED

XCHG

SHLD ASRED

;---------

LXI B,LONGW

LXI H,BBEG

CALL ZSRED

XCHG

SHLD BSRED

;---------

LXI B,LONGW

LXI H,CBEG

CALL ZSRED

XCHG

SHLD CSRED

;

;ОСОБЫЕ СИТУАЦИИ

;===============

;ТОК МЕНЬШЕ МИНИМАЛЬНОГО?

;------------------------------------------

;ОПРЕДЕЛЕНИЕ РАЗНОСТИ

LHLD BSRED ;Imin - I

CALL ZDOPH

XCHG

LXI H,BMIN

DAD D

SHLD DELB ;РАЗНОСТЬ В ДОП. КОДЕ

;ОПРЕДЕЛЕНИЕ ЗНАКА РАЗНОСТИ DELB

LHLD DELB

MOV A,H

RAL

JC MINU

;ПРИ DELB>0 ВЫКЛЮЧАЕМ КОНДЕНСАТОР

MVI A,2 ;--------------------------------------

STA UPR ;--------------------------------------

JMP OSOB ;--------------------------------------

MINU: ;ПРОВЕРКА НА ВХОЖДЕНИЕ В ЗОНУ НЕЧУВСТВИТЕЛЬНОСТИ ПРИ DELB<0

LHLD DELB

XCHG

LXI H,NECHB

DAD D ;НЕЧУВСТВИТЕЛЬНОСТЬ-РАЗНОСТЬ

MOV A,H

RAL

JC PROV ;ПРИ ВЫХОДЕ ИЗ ЗОНЫ НЕЧУВСТ.(ОТРИЦ. РЕЗУЛЬТАТ)

;ПЕРЕХОД К ПРОВЕРКЕ ВЕЛИЧИНЫ НАПРЯЖЕНИЯ

;ПРИ ВХОЖДЕНИИ В ЗОНУ (ПОЛОЖ.РЕЗУЛЬТАТ) НИЧЕГО НЕ ДЕЛАЮ

MVI A,0 ;======================================

STA UPR ;======================================

JMP OSOB ;======================================

;

PROV: ;НАПРЯЖЕНИЕ БОЛЬШЕ МАКСИМАЛЬНОГО (410 ВОЛЬТ)?

;------------------------------------------

;ОПРЕДЕЛЕНИЕ РАЗНОСТИ

LHLD ASRED ;Umax-U

CALL ZDOPH

XCHG

LXI H,AMAX

DAD D

SHLD DELA ;РАЗНОСТЬ В ДОП. КОДЕ

;ОПРЕДЕЛЕНИЕ ЗНАКА РАЗНОСТИ DELA

LHLD DELA

MOV A,H

RAL

JNC PL

;ПРИ DELA<0 ВЫКЛЮЧАЕМ КОНДЕНСАТОР

MVI A,2 ;--------------------------------------

STA UPR ;--------------------------------------

JMP OSOB ;--------------------------------------

PL: ;ПРОВЕРКА НА ВХОЖДЕНИЕ В ЗОНУ НЕЧУВСТВИТЕЛЬНОСТИ ПРИ DA>0

LHLD DELA

XCHG

LXI H,NECHA

CALL ZDOPH

DAD D ;РАЗНОСТЬ-НЕЧУВСТВИТЕЛЬНОСТЬ

MOV A,H

RAL

JNC OBRAB ;ПРИ ВЫХОДЕ ИЗ ЗОНЫ НЕЧУВСТ.(ПОЛОЖ. РЕЗУЛЬТАТ )

;ПЕРЕХОД К РЕГУЛИРОВАНИЮ ФИ

;ПРИ ВХОЖДЕНИИ В ЗОНУ (ОТРИЦ. РЕЗУЛЬТАТ) НИЧЕГО НЕ ДЕЛАЮ

MVI A,0 ;======================================

STA UPR ;======================================

JMP OSOB ;======================================

;

OSOB: ;ДЛЯ ИНДИКАЦИИ НА ПЭВМ ДЕЛАЮ

LXI H,0

SHLD FI

SHLD DFI

JMP KONEC

;----------------------------------

OBRAB: ; РАСЧЕТ УПРАВЛЕНИЯ В НОРМАЛЬНЫХ СИТУАЦИЯХ

;==========================================

;ВЫЧИСЛЕНИЕ ФИ В ДИСКРЕТАХ

;-------------------------

;ОПРЕДЕЛЕНИЕ СМЕЩЕНИЯ F(A)

LHLD ASRED ;АРГУМЕНТ

LXI B,700 ;MIN

LXI D,1300 ;MAX

CALL ZGRAN ;ГРАНИЦЫ

LXI D,700 ;ПЕРВЫЙ ТАБЛИЧНЫЙ АРГУМЕНТ

LXI B,TABL ;АДРЕС ТАБЛИЦЫ

MVI A,10 ;ШАГ АРГУМЕНТА

CALL ZFUNC

SHLD FA

;ОПРЕДЕЛЕНИЕ СМЕЩЕНИЯ F(B)

LHLD BSRED ;АРГУМЕНТ

LXI B,700 ;MIN

LXI D,1300 ;MAX

CALL ZGRAN ;ГРАНИЦЫ

LXI D,700 ;ПЕРВЫЙ ТАБЛИЧНЫЙ АРГУМЕНТ

LXI B,TABL ;АДРЕС ТАБЛИЦЫ

MVI A,10 ;ШАГ АРГУМЕНТА

CALL ZFUNC

SHLD FB

;ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЯ ФИ=C-(((A-FA)-(B-FB))/2+000)

LHLD ASRED

XCHG

LHLD FA

CALL ZDOPH

DAD D

PUSH H

LHLD BSRED

XCHG

LHLD FB

CALL ZDOPH

DAD D

CALL ZDOPH ;(HL)=-(B-FB)

POP D ;(DE)=A-FA

DAD D ;(HL)=СУММА

XRA A

MOV A,H

RAR

MOV H,A

MOV A,L

RAR

MOV L,A ;(HL)=СУММА/2

LXI D,000

DAD D

CALL ZDOPH

XCHG

LHLD CSRED ;В (HL) C

DAD D

SHLD FI ;УГОЛ ФИ В ДОПОЛНИТЕЛЬНОМ КОДЕ

;

;ОПРЕДЕЛЕНИЕ РАССОГЛАСОВАНИЯ

;---------------------------

LHLD FI ;ЗАДАНИЕ-ТЕК.ФИ

CALL ZDOPH

XCHG

LHLD ZADF

DAD D

SHLD DFI ;РАССОГЛОСОВАНИЕ В ДОП. КОДЕ

;ВЫЧИСЛЕНИЕ УПРАВЛЕНИЯ

;=====================

;ОПРЕДЕЛЕНИЕ ЗНАКА РАССОГЛАСОВАНИЯ DFI

LHLD DFI

MOV A,H

RAL

JNC PLUS

;ПРИ DFI<0 ВЫКЛЮЧАЕМ КОНДЕНСАТОР

MVI A,2 ;--------------------------------------

STA UPR ;--------------------------------------

JMP KONEC ;--------------------------------------

PLUS: ;ПРОВЕРКА НА ВХОЖДЕНИЕ В ЗОНУ НЕЧУВСТВИТЕЛЬНОСТИ ПРИ DFI>0

LHLD DFI

XCHG

LHLD NECH

CALL ZDOPH

DAD D ;РАССОГЛАСОВАНИЕ-НЕЧУВСТВИТЕЛЬНОСТЬ

MOV A,H

RAL

JNC ZONA ;ПРИ ВЫХОДЕ ИЗ ЗОНЫ НЕЧУВСТ.(ПОЛОЖ. РАЗНОСТЬ)

;ПРИ ВХОЖДЕНИИ В ЗОНУ (ОТРИЦ. РАЗНОСТЬ) НИЧЕГО НЕ ДЕЛАЮ

MVI A,0 ;======================================

STA UPR ;======================================

JMP KONEC ;======================================

ZONA: ;ПРИ ВЫХОДЕ РАССОГЛАСОВАНИЯ ИЗ ЗОНЫ ВКЛЮЧАЮ КОНДЕНСАТОР

MVI A,1 ;++++++++++++++++++++++++++++++++++++++

STA UPR ;++++++++++++++++++++++++++++++++++++++

JMP KONEC ;++++++++++++++++++++++++++++++++++++++

;

KONEC: ;УПРАВЛЕНИЕ КОНДЕНСАТОРНОЙ БАТАРЕЕЙ

;==================================

LDA UPR

CPI 0

JZ REV1 ;НИЧЕГО НЕ НАДО

CPI 1

JZ REV2 ;БУДЕМ ВКЛЮЧАТЬ КОНДЕНСАТОР

;ВЫКЛЮЧЕНИЕ КОНДЕНСАТОРА (ВИД НА ИНДИКАТОРЫ)

;-------------------------------------------

LDA IND

CPI 0

JZ KRAS

DCR A

JMP KRAS

REV2: ;ВКЛЮЧЕНИЕ КОНДЕНСАТОРА (ВИД НА ИНДИКАТОРЫ)

;------------------------------------------

LDA IND

CPI 16

JZ KRAS

INR A

KRAS: STA IND

;ПЕРЕКОДИРУЮ И ЗАЖИГАЮ ИНДИКАТОР

;-------------------------------

LDA IND

CALL ZCOD

STA PRTC

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

;------------------------------------------

LDA DPRTB

ANI 20H ;0010 0000

JNZ VAR1

;ЗАПИСЬ УПРАВЛЕНИЯ В ДУБЛЬ MBR

;-----------------------------

LDA IND

CPI 00

JNZ M1

LXI H,0000H

JMP VVV

M1: CPI 01

JNZ M2

LXI H,8000H

JMP VVV

M2: CPI 02

JNZ M3

LXI H,0C000H

JMP VVV

M3: CPI 03

JNZ M4

LXI H,0E000H

JMP VVV

M4: CPI 04

JNZ M5

LXI H,0F000H

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