Пр о ц е с с о р TMS 3 2 0C4 x
61
Примеры программирования коммуникационных портов
В основу работы программ, приведенных в качестве примеров, положена
проверка уровня FIFO буферов коммуникационного порта. Адреса регистров
порта и начальный адрес памяти записаны как константы в секции .
data
про-
граммы. Для загрузки констант во вспомогательные регистры используется
прямая адресация.
Пример ввода:
•
адресные константы загружаются в рабочие регистры AR0, AR1, AR2 с ис-
пользованием прямой адресации;
•
разрешается работа входного буфера порта записью соответствующего кода
в регистр управления с косвенной адресацией;
•
в регистр R9 записывается маска, которая используется для выделения битов
INPUT LEVEL, отражающих уровень входного буфера FIFO в регистре
управления порта;
•
командой TSTB производится проверка уровня входного FIFO.
•
если проверка дает нуль (входной FIFO буфер пуст), цикл ввода завершается
переходом на метку EXIT;
•
если проверка дает значение, отличное от нуля, осуществляется запись дан-
ных из входного регистра порта в память с использованием регистра R10 и
косвенной адресации через регистр AR1, затем выполняется снова переход на
проверку уровня заполнения входного буфера.
Считывание данных из входного буфера порта приводит к уменьшению
уровня на единицу. В примере биты INPUT LEVEL регистра управления ком-
муникационного порта используются в качестве счетчика циклов.
Пример ввода с коммуникационного порта с проверкой уровня входного FIFO
.data
P0_CTR
.word 00100040h
P0_INP
.word 00100041h
P0_OUT
.word 00100042h
IRAM
.word 002FFC00h
.text
LDPK
P0_CTR
; загрузка указателя страницы DP
LDA
@P0_CTR, AR2
; адрес регистра управления порта
LDA
@P0_INP, AR0
; адрес входного буфера порта
LDA
@IRAM, AR1
; адрес памяти для приема данных
AND3
0F7H,
∗
AR2, R9
;
STI
R9,
∗
AR2
; разрешение входного канала порта
LDI
1E00h, R9
; маска для проверки уровня входного FIFO
WAIT: TSTB
∗
AR2, R9
; проверка
BZ
EXIT
; если буфер пуст, завершение ввода
LDI
∗
AR0, R10
; ввод
STI
R10,
∗
AR1++(1)
; запись в память
BU
WAIT
; переход на проверку
EXIT: