ad8801/ad8803
rev. 一个
–11–
这 子程序 开始 由 设置 适当的 比特 入点 这 串行
控制 注册 至 配置 这 串行 港口 用于 模式 0 歌剧-
操作. 下一个 这 dac’s 芯片 选择 输入 是 设置 低 至 启用 这
ad8801/ad8803. 这 dac 地址 是 获得 从 记忆
位置 dac_地址, 已调整 至 补偿 用于 这 8051’s
串行 数据 格式, 和 已移动 至 这 串行 缓冲区 注册. 在
这个 点, 串行 数据 变速器 开始 自动. 当
全部 8 比特 有 被 已发送, 这 发送 中断 有点 是 设置, 和
这 子程序 然后 收益 至 发送 这 dac 值 已存储 在
位置 dac_值. 最后 这 芯片 选择 输入 是 re-
翻转 高, 导致 这 适当的 ad8801/ad8803 输出
电压 至 变更, 和 这 子程序 结束.
这 8051 发送 数据 出点 的 其 轮班 注册 lsb 第一, 同时 这
ad8801/ad8803 需要 数据 msb 第一. 这 子程序 那里-
前 包括 一个 byteswap 子程序 至 reformat 这 数据.
这个 例行程序 转让 这 msb-第一 字节 在 位置 shift1 至
一个 lsb-第一 字节 在 位置 shift2. 这 例行程序 旋转 这
msb 的 这 第一 字节 进入 这 进位 与 一个 旋转 左 进位 入点-
结构, 然后 旋转 这 进位 进入 这 msb 的 这 第二 字节
与 一个 旋转 右侧 进位 说明书. 之后 8 循环, shift2
包含 这 数据 入点 这 适当的 格式.
这 byteswap 例行程序 入点 清单 1 是 方便 因为 这
dac 数据 可以 是 已计算 入点 正常 lsb 窗体. 用于 示例,
生产 一个 坡道 电压 开启 一个 dac 是 简单地 一个 物质 的 re-
peatedly 递增 这 dac_值 位置 和 正在调用
这 ld_8801 子程序.
如果 这
µ
c’s 硬件 串行 港口 是 正在 已使用 用于 其他 目的,
这 ad8801/ad8803 可以 是 已加载 由 使用 这 平行 港口.
一个 典型 平行 接口 是 显示 入点 图 26. 这 串行 数据
是 已传输 至 这 dac 通过 这 8051’s port1.7 输出, 同时
port1.6 行为 作为 这 串行 时钟.
软件 用于 这 接口 的 f伊格尔 26 是 包含 入点 清单 2. 这
子程序 将 发送 这值 已存储 在 lo阳离子 dac_值 至
这 一个d8801/ad8803 dac 地址 由 位置 dac_地址.
这 程序 开始 由 设置 这 ad8801/ad8803’s 串行
时钟 和 芯片 选择 输入 高, 然后 设置 芯片 选择 低
至 开始 这 串行 接口 流程. 这 dac 地址 是 已加载
进入 这 蓄能器 和 三个 旋转 右侧 轮班 是 按-
成型. 这个 地点 这 dac 地址 入点 这 3 msbs 的 这 交流电-
cumulator. 这 地址 是 然后 已发送 至 这 ad8801/ad8803 通过
这 发送_串行 子程序. 下一个, 这 dac 值 是 已加载
进入 这 蓄能器 和 已发送 至 这 ad8801/ad8803. 最后,
这 芯片 选择 输入 是 设置 高 至 完成 这 数据 转让.
; 这个 8051
µ
c 子程序 荷载 一个 ad8801 或 ad8803 dac 与 一个 8-有点 值,
; 使用 这 8051’s 平行 港口 #1.
; 这 dac 值 是 已存储 在 位置 dac_值
; 这 dac 地址 是 已存储 在 位置 dac_地址
;
; 变量 declarations
PORT1 数据 90H ;sfr 注册 用于 港口 1
dac_值 数据 40H ;dac 值
dac_地址 数据 41H ;dac 地址 (0 通过 7)
LOOPCOUNT 数据 43H ;计数 循环
;
ORG 100H ;任意 开始
ld_8803: ORL port1,#11110000b ;设置 clk, /cs 和 /shdn high,
clr port1.5 ;设置 芯片 选择 低
mov loopcount,#3 ;地址 是 3 比特
mov 一个,dac_地址 ; 获取 dac 地址
rr 一个 ; 旋转 这 dac
rr 一个 ;地址 至 这 大多数
rr 一个 ;重大 比特 (msbs)
ACALL 发送_串行 ;发送 这 地址
mov loopcount,#8 ;做 8 比特 的 数据
mov 一个,dac_值
ACALL 发送_串行 ;发送 这 数据
SETB port1.5 ;设置 /cs 高
ret ;完成了吗
发送_串行: rlc 一个 ;移动 下一个 有点 至 进位
mov port1.7,c ;移动 数据 至 sdi
clr port1.6 ;脉冲 这
SETB port1.6 ; clk 输入
DJNZ loopcount,发送_串行 ;回路 如果 不 完成了吗
ret;
结束
清单 2. 软件 用于 这 8051 至 ad8801/ad8803 平行 港口 接口