01F3 78 A_ZERO:mov a,b ; все Х = 0
01F4 E6 F3 ani 0f3h
01F6 32 10 80 O_R1:sta RG1 ; выдаем Х на индикацию
01F9 3A 3E 02 lda Q
01FC 32 14 80 sta RG2 ; выдаем Q на индикацию
01FF E1 pop h ; вместо последнего значения в стеке
0200 21 28 00 lxi h,FBEGIN; записываем адрес первой инструкции
0203 E5 push h ; следующей за инициализацией
0204 3E 02 mvi a,2
0206 32 06 80 sta PPI+2 ; сигнализируем ВЕ51 о том,
0209 3E 10 mvi a,10h ; что перешли к началу цикла
020B 32 04 80 sta PPI
020E FB ei
020F C9 ret ; возврат
; прерывание от БСС1
0210 3A 02 08 INT1: lda SECOND
0213 B7 ora a
0214 CA 1D 02 jz CONT
0217 3E 0C mvi a,0ch ; если это второй сбой (уже было
0219 32 06 80 sta PPI+2 ; повторение цикла), то останов
021C 76 hlt
021D 3C CONT:inr a
021E 32 02 08 sta SECOND
0221 7A mov a,d
0222 F6 04 ori 04
0224 32 06 80 sta PPI+2
0227 E1 pop h ; вместо последнего значения в стеке
0228 21 28 00 lxi h,FBEGIN; записываем адрес первой инструкции
022B E5 push h ; следующей за инициализацией
022C 3E 02 mvi a,2
022E 32 06 80 sta PPI+2 ; сигнализируем ВЕ51 о том,
0231 3E 10 mvi a,10h ; что перешли к началу цикла
0233 32 04 80 sta PPI
0236 FB ei
0237 C9 ret
; прерывание от БСС2
0238 3E 0C INT2: mvi a,0ch ; сигнализируем об ошибке
023A 32 06 80 sta PPI+2 ; останов
023D 76 hlt
;----------------------------------------
; ROM (постоянные ПЗУ)
;----------------------------------------
023E 55 Q: db 55h
023F 14 A0: db 14h
0240 25 A1: db 25h
0241 E0 L_FRQ: db e0h
0242 2E H_FRQ: db 2eh
;----------------------------------------
; таблица переходов к обработчикам
; прерываний
;----------------------------------------
;int0
0400 C3 65 01 jmp INT0
;int1
0404 org 0404h
0404 C3 10 02 jmp INT1
;int2
0408 org 0408h
0408 C3 38 02 jmp INT2
;int3
040C org 040ch
040C C3 94 01 jmp INT3
;int4
0410 org 0410h
0410 C3 B0 01 jmp INT4
;int4
0414 org 0414h
0414 C3 CB 01 jmp INT5
;int5
0418 org 0418h
0418 C3 CB 01 jmp INT5
;----------------------------------------
; RAM (ОЗУ)
;----------------------------------------
0800 org 0800h
; таблица входных величин и результатов
0800 00 DT: db 0 dup(7)
; таблица входных величин и результатов
; последнего рабочего режима
0801 00 DT_INT: db 0 dup(5)
; признак повторного сбоя
0802 00 SECOND: db 0
; стек
0803 00 STACK: db 0 dup(50h)
;----------------------------------------
; переферийные устройства
;----------------------------------------
8000 00 PIC: db 0 ; ПКП
8004 00 PPI: db 0 ; ППА
8008 00 PCI: db 0 ; ПСА
800C 00 PIT: db 0 ; ПТ
8010 00 RG1: db 0 ; регистр 1
8014 00 RG2: db 0 ; регистр 2
8018 00 RG3: db 0 ; регистр 3
801C 00 RG4: db 0 ; регистр 4
8020 00 K: db 0 ; регистр К
8024 00 OUT_REG: db 0 ; регистр для ЦАП
Labels:
FBEGIN 0028
BEGIN 002F
A_K 0034
RDY 0040
CMP_Q 0091
Y3 009D
SAVEY2 009F
O_Y2 00D2
O_Y3 00E7
EO_Y2 00F5
O_Y4 0101
C_MODE 0115
F_DTI 0128
C_ERR 0134
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.