PIC16CR54C
ds40191a-第页 20
初步
1998 微芯片 技术 公司
5.5 我/o 编程 注意事项
5.5.1 双向 我/o 端口
一些 说明 操作 内部 作为 阅读 跟踪
by 写 运营. 这
BCF
和
BSF
说明, 用于
示例, 阅读 这 整个 港口 进入 这 cpu, 执行
这 有点 操作 和 re-写 这 结果. 注意事项 必须
是 已使用 当 这些 说明 是 已应用 至 一个 港口
在哪里 一个 或 更多 针脚 是 已使用 作为 输入/产出.f或
示例, 一个
BSF
操作 开启 bit5 的 portb 将 原因
全部 八 比特 的 portb 至 是 阅读 进入 这 cpu, bit5 至
是 设置 和 这 portb 值 至 是 书面 至 这 输出
锁扣.如果 另一个 有点 的 portb 是 已使用 作为 一个
双向 我/o 管脚 (说 bit0) 和 它 是 defined 作为 一个
输入 在 这个 时间, 这 输入 信号 目前 开启 这 管脚
本身 将 是 阅读 进入 这 cpu 和 重写 至 这
数据 门闩 的 这个 特别 管脚, 覆盖 这
预明显的 内容. 作为 长 作为 这 管脚 停留 入点 这 输入
模式, 否 问题 发生. 然而, 如果 bit0 是 已切换
进入 输出 模式 稍后 开启, 这 内容 的 这 数据 门闩
may 现在 是 未知.
示例 5-1显示 这 效果 的 两个 顺序
读取-修改-write 说明 (e?.g.,
bcf, bsf
, 等等.) 开启
一个 我/o 港口.
一个 管脚 积极 输出 一个 高 或 一个 低 应该 不 是
driven 从 外部 设备 在 这 相同 时间 入点 订单
至 变更 这 水平 开启 这个 管脚 (“wired-or”, “wired-and”).
这 结果 高 输出 电流 将 损伤 这
芯片.
示例 5-1: 读取-修改-写入
说明 开启 一个
我/o 港口
;初始 港口 设置
; portb&指示灯;7:4> 输入
; portb&指示灯;3:0> 产出
;portb&指示灯;7:6> 有 外部 引体向上 和 是
;不 已连接 至 其他 电路
;
; 港口 门闩 港口 针脚
; ---------- ----------
bcf portb, 7 ;01pp pppp 11pp pppp
bcf portb, 6 ;10pp pppp 11pp pppp
movlw 03fh ;
tris portb ;10pp pppp 10pp pppp
;
;备注 那 这 用户 将 有 预期 这 管脚
;数值 至 是 00pp pppp. 这 2nd bcf 导致
;rb7 至 是 锁定 作为 这 管脚 值 (高).
5.5.2 连续 运营 开启 我/o
端口
这 实际 写 至 一个 我/o 港口 发生 在 这 结束 的
一个 说明书 循环, 鉴于 用于 阅读, 这 数据
must 是 有效 在 这 开始 的 这 说明书 循环
(图 5-2). 因此, 护理 必须 是 行使 如果 一个
write 跟踪 由 一个 阅读 操作 是 携带 出点 开启 这
相同 我/o 港口. 这 顺序 的 说明 应该
allow 这 管脚 电压 至 稳定 (荷载 从属)
bef矿石 这 下一个 说明书, 哪个 原因 那 file 至 是
阅读 进入 这 cpu, 是 处决. 否则, 这
预明显的 州 的 那 管脚 将 是 阅读 进入 这 cpu
右ather 比 这 新建 州. 当 入点 怀疑, 它 是 更好 至
separ吃了 这些 说明 与 一个
nop
或 另一个
instr结构 不 访问 这个 我/o 港口.
图 5-2: 连续 我/o 操作
pc pc + 1 pc + 2
pc + 3
Q1 Q2
Q3
Q4
Q1 Q2
Q3
Q4
Q1 Q2
Q3
Q4
Q1 Q2
Q3
Q4
说明书
已获取
rb7:rb0
movwf portb
nop
港口 管脚
抽样 这里
nop
movf portb,w
说明书
处决
movwf portb
(写 至
portb)
nop
movf portb,w
这个 示例 显示 一个 写
至 portb 跟踪 由 一个 阅读
从 portb.
(阅读
portb)
港口 管脚
书面 这里