Элементы и узлы информационных и управляющих систем (Основы теории и синтеза). Булатов В.Н. - 206 стр.

UptoLike

Составители: 

Рубрика: 

подпрограммы IN_INT ввода байта по прерыванию. Подпрограммы TIM1 и
TIМ05 приведены в разделе 16.
IN_INT: DIS I ;Запретить прерывание по входу INT.
MOV R2,#08 ;Инициализация счетчика R2 на 8 циклов.
CALL TIM05 ;Вызов задержки на 0,5 интервала.
M2: CALL TIM1 ;Вызов задержки на 1 интервал.
CLR C ;Флаг С в ноль; если на входе INT ноль,
JNI M1 ;то перейти на М1; в противном случае
CPL C ;флаг С проинвертировать (то есть С=1).
M1: RLC A ;Сдвиг в А влево (D0:= C).
DJNZ R2,M2 ;Уменьшить R2; если не 0, то на М2.
CLR F1 ;Ус т а н о в и т ь флаг
CPL F1 ; F1 (F1=1) признак принятого байта.
EN I ;Разрешить прерывание.
RETR ;Возврат из аппаратного прерывания.
В результате работы подпрограммы принятый байт находится в
аккумуляторе, а сам факт приема байта от ЭВМ (для супервизора)
зафиксирован флагом F1 (F1=1).
Подпрограмма вывода очень похожа на подпрограмму ввода. Стартовый
бит, равный нулю, располагается во флаге С, выводимый байтв
аккумуляторе. Пример подпрограммы вывода OUT_RS232 приведен ниже.
OUT_RS232: MOV R2,#09 ;Число сдвиговв регистр R2.
M2: RRC A ;Сдвиг вправо в A: D7:= C.
OUT P1,A ;Вывести в порт Р1 (разряд D7).
DJNZ R2,M1 ;R2 – 1; если не 0, то на М1.
RET ;Выйти из подпрограммы.
M1: CALL TIM1 ;Вызов задержки на 1 интервал.
JMP M2 ;Переход на М2 (следующий сдвиг).
подпрограммы IN_INT ввода байта по прерыванию. Подпрограммы TIM1 и
TIМ05 приведены в разделе 16.


IN_INT:     DIS I             ;Запретить прерывание по входу INT.
            MOV R2,#08        ;Инициализация счетчика R2 на 8 циклов.
            CALL TIM05        ;Вызов задержки на 0,5 интервала.
M2:         CALL TIM1;Вызов задержки на 1 интервал.
            CLR C             ;Флаг С в ноль; если на входе INT ноль,
            JNI    M1         ;то перейти на М1; в противном случае
            CPL C             ;флаг С проинвертировать (то есть С=1).
M1:         RLC A             ;Сдвиг в А влево (D0:= 〈C〉).
            DJNZ R2,M2        ;Уменьшить 〈R2〉; если не 0, то на М2.
            CLR F1            ;Установить флаг
            CPL F1            ; F1 (F1=1) – признак принятого байта.
            EN     I          ;Разрешить прерывание.
            RETR              ;Возврат из аппаратного прерывания.


  В результате работы подпрограммы принятый байт находится в
аккумуляторе, а сам факт приема байта от ЭВМ (для супервизора)
зафиксирован флагом F1 (F1=1).
  Подпрограмма вывода очень похожа на подпрограмму ввода. Стартовый
бит, равный нулю, располагается во флаге С, выводимый байт – в
аккумуляторе. Пример подпрограммы вывода OUT_RS232 приведен ниже.


OUT_RS232:         MOV R2,#09       ;Число сдвигов – в регистр R2.
      M2:          RRC A            ;Сдвиг вправо в A: D7:= 〈C〉.
                   OUT P1,A         ;Вывести в порт Р1 (разряд D7).
                   DJNZ R2,M1       ;〈R2〉 – 1; если не 0, то на М1.
                   RET              ;Выйти из подпрограммы.
      M1:          CALL TIM1;Вызов задержки на 1 интервал.
                   JMP M2           ;Переход на М2 (следующий сдвиг).