JMP VVV
M5: CPI 05
JNZ M6
LXI H,0F800H
JMP VVV
M6: CPI 06
JNZ M7
LXI H,0FC00H
JMP VVV
M7: CPI 07
JNZ M8
LXI H,0FE00H
JMP VVV
M8: CPI 08
JNZ M9
LXI H,0FF00H
JMP VVV
M9: CPI 09
JNZ M10
LXI H,0FF80H
JMP VVV
M10: CPI 10
JNZ M11
LXI H,0FFC0H
JMP VVV
M11: CPI 11
JNZ M12
LXI H,0FFE0H
JMP VVV
M12: CPI 12
JNZ M13
LXI H,0FFF0H
JMP VVV
M13: CPI 13
JNZ M14
LXI H,0FFF8H
JMP VVV
M14: CPI 14
JNZ M15
LXI H,0FFFCH
JMP VVV
M15: CPI 15
JNZ M16
LXI H,0FFFEH
JMP VVV
M16: LXI H,0FFFFH
JMP VVV
;-----------------------------
VAR1: LDA IND
CPI 00
JNZ P1
LXI H,0000H
JMP VVV
P1: CPI 01
JNZ P2
LXI H,0001H
JMP VVV
P2: CPI 02
JNZ P3
LXI H,0003H
JMP VVV
P3: CPI 03
JNZ P4
LXI H,0007H
JMP VVV
P4: CPI 04
JNZ P5
LXI H,000FH
JMP VVV
P5: CPI 05
JNZ P6
LXI H,001FH
JMP VVV
P6: CPI 06
JNZ P7
LXI H,003FH
JMP VVV
P7: CPI 07
JNZ P8
LXI H,007FH
JMP VVV
P8: CPI 08
JNZ P9
LXI H,00FFH
JMP VVV
P9: CPI 09
JNZ P10
LXI H,01FFH
JMP VVV
P10: CPI 10
JNZ P11
LXI H,03FFH
JMP VVV
P11: CPI 11
JNZ P12
LXI H,07FFH
JMP VVV
P12: CPI 12
JNZ P13
LXI H,0FFFH
JMP VVV
P13: CPI 13
JNZ P14
LXI H,1FFFH
JMP VVV
P14: CPI 14
JNZ P15
LXI H,3FFFH
JMP VVV
P15: CPI 15
JNZ P16
LXI H,7FFFH
JMP VVV
P16: LXI H,0FFFFH
VVV: SHLD DMBRD ;ЗАПИСЬ УПРАВЛЕНИЯ В ДУБЛЬ MBR
REV1: RET
;**********************************************************
END
Приложение 2.
;ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
;КОНТРОЛЛЕРА-КОМПЕНСАТОРА
;РЕАКТИВНОЙ МОЩНОСТИ
;
;************** ПЗУ НАСТРОЙКИ КОНТРОЛЛЕРА **********
;* УСТАНОВКА МИНИМАЛЬНОГО ТОКА И ИЗМЕРЕНИЕ УГЛА ФИ *
;******** ЗАПЛАНИРОВАННЫЙ СДВИГ ФИ - 0 *************
;
;!!!!!!!!!!!! 1 Градус = 10 дискрет !!!!!!!!!
;
;Адреса составных частей ПО
ROM EQU 0000H ;НАЧАЛО ПЗУ
RAM: EQU 7800H ;НАЧАЛО ОЗУ
STACK: EQU 7FFFH ;ВЕРШИНА СТЕКА
; ПРОСТО КОНСТАНТЫ
LONG: EQU 254 ;ДЛИНА МАССИВОВ A,B,C В БАЙТАХ
LONGW: EQU 127 ;ЧИСЛО ЭЛЕМЕНТОВ МАССИВОВ A,B,C
APRED: EQU 1700 ;ЧИСЛО ИМПУЛЬСОВ ПРИ ПРЕД.НАПРЯЖ.
;====================================================
;============ ПОРТЫ ================
;====================================================
;ТАЙМЕР 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 ;УГОЛ ФИ В ДОПОЛНИТЕЛЬНОМ КОДЕ
;
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$ ОБЛАСТЬ ВЕКТОРОВ ПРЕРЫВАНИЙ $
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
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/5 СЕК
;ТАБЛИЦА ДЛЯ ОПРЕДЕЛЕНИЯ СМЕЩЕНИЯ ИЗМЕРЯЕМЫХ ИМПУЛЬСОВ ТОКА И
;НАПРЯЖЕНИЯ ПО ИХ ДЛИТЕЛЬНОСТИ В ДИСКРЕТАХ, ВЫЗВАННОГО
;ГИСТЕРЕЗИСОМ ТРИГГЕРА ШМИТТА. ДИАПАЗОН ИЗМЕНЕНИЯ ДЛИТЕЛЬНОСТИ
;ИМПУЛЬСОВ ОТ 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)
;####################################################
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
;ОЖИДАНИЕ ГОТОВНОСТИ 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,5
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 ;НЕЧУВСТВИТЕЛЬНОСТЬ
;----------------------------------------------------
;СБРОС ТРИГГЕРА RST7.5
MVI A,10H ;0001 0000
DB 30H ;КОМАНДА SIM
;РАЗРЕШЕНИЕ ПРЕРЫВАНИЯ МИКРОПРОЦЕССОРА
EI
MVI A,18H
DB 30H
BASE: ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$ ЦИКЛ ОСНОВНОЙ ПРОГРАММЫ, ПРЕРЫВАЕМЫЙ $
;$ ВРЕМЯ ОТ ВРЕМЕНИ ЗАПРОСАМИ TRAP, RST7.5 $
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
JMP BASE
;-----------------------------------------------
;****************************************************
;* ОБРАБОТКА ПРЕРЫВАНИЯ TRAP 20MC *
;****************************************************
TRAP: PUSH PSW
PUSH B
PUSH D
PUSH H
;СЧИТЫВАНИЕ СЧЕТЧИКОВ 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 ;СТ. БАЙТ
;----------------------------------------------------
LDA DPRTB
ANI 10H
JZ JJJ
;НАСТРОЙКА ИМПУЛЬСА МИН. ТОКА НА ЗНАЧЕНИЕ 790...810
LHLD BUFER+2
CALL ZDOPH
SHLD TOK
;ПРОВЕРЯЮ ЛЕВУЮ ГРАНИЦУ
LXI D,810
DAD D
MOV A,H
MVI C,1
RAL
JC KRALA
;ПРОВЕРЯЮ ПРАВУЮ ГРАНИЦУ
LHLD TOK
LXI D,790
DAD D
MOV A,H
MVI C,8
RAL
JNC KRALA
;ЦЕНТР
MVI C,4
KRALA: MOV A,C
CALL ZCOD
STA PRTC
JJJ: POP H
POP D
POP B
POP PSW
EI
RET
;
;****************************************************
;* ОБРАБОТКА ПРЕРЫВАНИЯ RST7.5 1CЕК *
;****************************************************
RST75: PUSH PSW
PUSH B
PUSH D
PUSH H
MVI A,10H
DB 30H ;СБРОС ТРИГГЕРА RST7.5
CALL WRITE
CALL CONTROL ;ВЫЗОВ CONTROL
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
;
;==========================================
;ВЫЧИСЛЕНИЕ ФИ В ДИСКРЕТАХ
;-------------------------
;ОПРЕДЕЛЕНИЕ СМЕЩЕНИЯ 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 ;УГОЛ ФИ В ДОПОЛНИТЕЛЬНОМ КОДЕ
;
;ИНДИКАЦИЯ УГЛА ФИ НА СВЕТОДИОДАХ
;--------------------------------
LDA DPRTB
ANI 10H
JNZ KONEC
;ПРОВЕРКА КВАДРАНТА
LHLD FI
MOV A,H
RAL
JC STUK
MVI A,0 ;НОЛЬ, ЕСЛИ ФИ В ЕМКОСТНОМ КВАДРАНТЕ
STA FIK
JMP ZVER
;Т.К. ФИ В ИНДУКТИВНОМ КВАДРАНТЕ ОТРИЦАТЕЛЬНЫЙ
STUK: CALL ZDOPH
;ДЕЛЮ НА 40 (линейка через 4 градуса!!!!)
MVI C,40
CALL ZD16
MOV A,L
STA FIK
ZVER: ;ВЫВОД НА СВЕТОДИОДЫ
LDA FIK
CALL ZCOD
STA PRTC
KONEC: RET
;**********************************************************
END
Приложение 3.
program new;
{прием по rs-232c сообщений от контроллера-компенсатора. Сообщение из 18 байтов (синхрослово начала строки + 8 слов данных). Формат 8 бит, 2 стоп-бита, 9600 бод}
uses crt;
var
i,a,b,c:integer;
procedure init;
begin
asm
mov dx,1
mov ax,00e7h
int 14h
mov dx,2f9h
mov al,0
end
end;
function priem:integer;
begin
asm
{проверка клавиатуры}
mov ah,6
mov dl,0ffh
int 21h
jnz @3
{выставил запрос DTR}
mov dx,2fch
mov al,1
out dx,al
{проверка готовности}
mov dx,2fdh
@1:in al,dx
and al,1
jz @1
{снял запрос DTR}
mov dx,2fch
mov al,0
out dx,al
{чтение байта}
mov dx,2f8h
in al,dx
mov ah,0
jmp @4
@3:mov ax,5555
@4:mov @Result,ax
end
end;
begin
Clrscr;
writeln('инициализация');
init;
writeln('принимаю');
while priem<>85 do;
a:=priem;
repeat
for i:=1 to 9 do
begin
a:=priem;b:=priem;c:=b*256+a;
if i<>9 then write(c:8);
if a=5555 then break;
end;
Clrscr;
until a=5555;
end.
Приложение 4.
Плата контроллера. Спецификация.
Обознач. |
Наименование |
К-во |
Примечание |
|
Розетки соединительные |
|
|
XS1 |
PC-40-7 |
1 |
|
XS2..S3 |
PC-28-7 |
2 |
|
XS4 |
PC-16-7 |
1 |
|
XS5 |
PC-8-7 |
1 |
|
|
Вилки внешних разъемов |
|
|
XP1,XP4 |
MPH 4-1 12 |
2 |
|
XP2 |
D-разъем IBM 9pin (мама) |
1 |
|
XP3 |
|
1 |
|
VD1.VD4 |
Диод КД 522Б |
4 |
|
VS1...VS2 |
Стабилитрон КС162А |
2 |
|
V1...V16 |
Светодиод типа АЛ307АМ прямоуг. |
16 |
|
|
Выключатели |
|
|
Q1,Q2 |
Выключатель ВДМ1-8 |
2 |
|
|
Наборы резисторов |
|
|
DR1..DR3 |
HP1-4-9-0.125-10кОм 10% |
3 |
|
|
Резисторы МЛТ |
|
|
R1 |
МЛТ-0.125-3.6 кОм 10% |
1 |
|
R2 |
МЛТ-0.125-100 кОм 10% |
1 |
Only! |
R3 |
МЛТ-2-160 кОм 10% |
1 |
|
R4 |
МЛТ-2-5.6 кОм 10% |
1 |
|
R5...R6 |
МЛТ-0.125-3.6 кОм 10% |
2 |
Only! |
R7 |
МЛТ-0.125-2кОм 10% |
1 |
|
R8 |
МЛТ-0.125-24 Ом 10% |
1 |
На РУ10 |
R9 |
МЛТ-0.125-330 Ом 10% |
1 |
|
RH1 |
МЛТ-0.125-240 Ом 10% |
1 |
ТМ2(2,4,10,13) |
RH2 |
МЛТ-0.125-560 Ом 10% |
1 |
ИР12(12)+ИР12(12) |
RH3 |
МЛТ-0.125-330 Ом 10% |
1 |
ВИ53(11,14,16) |
|
Потенциометр |
|
|
RP1 |
СП5-16ВА-0.25ВТ 680 ОМ (или 1 кОм) |
1 |
|
|
Транзисторная оптопара |
|
|
Т1 |
АОТ101АС |
1 |
|