AD28msp01
rev. 一个
–5–
{this adsp-2101 程序 initializes 这 ad28msp01}
{and executes 一个 loopback, 或者 表达-通过, routine.}
. 单元/内存/激励 = 0 msp01;
. var/dm/circ rec[2]; {receive 文字 buffer}
. var/dm/circ trans[2]; {transmit 文字 buffer}
{lnterrupt vectors}
rset: jump 开始;
rti; rti; rti;
irq2v: rti; rti; rti; rti;
sprt0t: ax0 = 0x25; dm(0x3ff3) = ax0; {disable tx autobuffer}
rti; rti;
sprt0r: jump receive;
rti; rti; rti;
sprt1t: rti; rti; rti; rti;
sprt1r: rti; rti; rti; rti;
timerv: rti; rti; rti; rti;
{initialize dags}
开始:
i2 =
^
rec;
l2 = %rec;
i3 = ^trans;
l3 = %trans;
m0 = 0;
m1 = 1;
s1 = 0;
dm(0x3000) = si; {reset 这 ad28msp01}
{initialize 这 adsp-2101}
init
dsp:
ax0 = 0x2a0f; {ext rfs, int tfs, ext sclk, slen = 15}
dm(0x3ff6) = ax0; {sport0 控制 register}
ax0 = 0x101f; {enable sport0}
dm(0x3fff) = ax0; {system 控制 register}
{initialize ad28msp01 控制 register}
init
msp01: {note: 这个 部分 可以 是 autobuffered.}
imask = 0x10; {enable sport0 tx interrupt}
ar = 0;
cntr = 6;
做 initi 直到 ce;
tx0 = ar; {transmit address}
空闲;
tx0 = si; {transmit 控制 word}
空闲;
ay0 = ar;
initi: ar = ay0 +1; {increment address}
ax1 = 1;
ar = 0x18; {power 向上 ad28msp01}
tx0 = ax1;
空闲;
tx0 = ar;
ar = b#0025; {enable rx autobuffering 和 i2, m1}
dm(0x3ff3) = ar; {autobuffer 控制 register}
imask = 0x18; {enable rx 和 tx interrupt}
wait: jump wait; {wait 为 receive interrupt}
{receive 中断 routine}
receive:
dm(0x3ff3) = si; {disable autobuffering}
ax1= dm(i2, m1); {read 第一 receive 文字 从 buffer}