rev. 一个
–14–
ad8801/ad8803
PSHY
PSHA
*
* enter 内容 的 sdi1 数据 寄存器
*
LDAA $0000 hi-字节 数据 承载 从 记忆
STAA SDI1 sdi1 = 数据 在 location 0000h
*
* enter 内容 的 sdi2 数据 寄存器
*
LDAA $0001 低-字节 数据 承载 从 记忆
STAA SDI2 sdi2 = 数据 在 location 0001h
*
LDX #SDI1 堆栈 pointer 在 1st 字节 至 send 通过 sdi
LDY #$1000 堆栈 pointer 在 在-碎片 寄存器
*
* 重置 ad8801 至 一个-half 规模 (ad8803 做 不 有 一个 重置 输入)
*
BCLR portc,y $02 assert /rs
BSET portc,y $02 de-assert /rs
*
* 得到 ad8801/03 准备好 为 数据 输入
*
BCLR portd,y $20 assert /cs
*
TFRLP LDAA 0,x 得到 一个 字节 至 转移 通过 spi
STAA SPDR 写 sdi 数据 reg 至 开始 xfer
*
WAIT LDAA SPSR 循环 至 wait 为 spif
BPL WAIT spif 是 这 msb 的 spsr
* (当 spif 是 设置, spsr 是 negated)
INX increment 计数器 至 next 字节 为 xfer
CPX #SDI2+1 是 我们 完毕 还 ?
BNE TFRLP 如果 不, xfer 这 第二 字节
*
* 更新 ad8801 输出
*
BSET portd,y $20 获得 寄存器 &放大; 更新 ad8801
*
PULA 当 完毕, restore 寄存器 x, y &放大; 一个
PULY
PULX
RTS ** 返回 至 主要的 程序 **
listing 3. ad8801/ad8803 至 mc68hc11 接口 程序 源 代号