ВУЗ:
Составители:
Рубрика:
подпрограммы 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 (следующий сдвиг).
Страницы
- « первая
- ‹ предыдущая
- …
- 204
- 205
- 206
- 207
- 208
- …
- следующая ›
- последняя »
