发信人: champaign (原野), 信区: ECE
标 题: 纯 软 件 实 现 单 片 机 远 程 通 信
发信站: 紫 丁 香 (Sat Jan 8 19:36:55 2000), 转信
发信人: fangf (方方), 信区: DSP
标 题: 纯 软 件 实 现 单 片 机 远 程 通 信
发信站: 饮水思源站 (Sun Sep 12 01:02:49 1999) , 站内信件
纯 软 件 实 现 单 片 机 远 程 通 信
武 汉 华 中 理 工 大 学 波 士 电 子 公 司 周 定 波
----------------------------------------------------------------------------
----
---- GMS97C2051 是 韩 国LG 公 司 生 产 的 内 部 带2K E2PROM 的 与MCS-51 兼 容
的 单 片 机。GMS97C2051 省 去 了MCS-51 的P0 和P3 口, 但 是 多 了 一 个 内
部 硬 件 比 较 器。 由 于 单 片 机 的 通 信 信 号 为TTL 电 平, 如 果 不 采
取 其 它 的 措 施, 其 在 通 信 速 率 为9600bps 时 通 信 距 离 不 超 过5 米。
一 般 为 了 廷 长 单 片 机 的 通 信 距 离, 采 用RS-232/RS-485 转 换 器、RS
-232/RS-422 转 换 器 或 光 隔 远 程 收 发 器。 本 文 介 绍 的 方 法 可 将GMS
97C2051 单 片 机 之 间 通 信 距 离 延 长 到1200 米 以 上, 而 且 不 需 要 添
加 任 何 硬 件 措 施, 完 全 用 软 件 来 实 现。
---- 要 用 纯 软 件 方 法 实 现GMS97C2051 单 片 机 之 间 的 远 程 通 信, 首
先 必 须 将 单 片 机 的TTL 电 平 用 软 件 方 法 转 换 为 差 分 电 平, 其 次
要 用 普 通I/O 口 线 来 构 成 软 件 串 行 口, 并 且 在 软 件 上 进 行 正 确
的 配 合。
---- TTL 电 平 转 换 成 差 分 电 平 的 纯 软 件 方 法
---- GMS97C2051 单 片 机 的 信 号 均 为TTL 电 平。TTL 电 平 信 号 传 输 距 离
非 常 有 限, 一 般 在9600bps 传 输 率 时 传 输 距 离 不 超 过5 米。 而 差
分 电 平 信 号 则 是 取 决 于 两 根 信 号 线 之 间 的 电 平 差 值, 如 果 某
根 信 号 线 的 电 平 高 于 另 一 根, 则 信 号 为1, 否 则 为0。 由 于 差 分
电 平 信 号 可 以 避 免 长 距 离 传 输 导 线 上 的 电 荷 积 累, 并 且 具 有
更 宽 的 电 平 范 围, 所 以 传 输 距 离 远 得 多。RS-485 差 分 电 平 信 号
在9600bps 传 输 率 时 传 输 距 离 可 达1200 米。
---- 为 了 用 纯 软 件 实 现 差 分 电 平 传 输 就 不 能 使 用GMS97C2051 本 身
的 硬 件 串 行 口, 而 是 用 普 通I/O 线 来 实 现 串 行 通 信. 差 分 电 平 要
用 两 根I/O 口 线 来 实 现, 比 如P1.2 和P1.3 两 根 线( 见 图1)。 当 传 输 信
号 为1 时,P1.2 为+5V, 而P1.3 为0V。 当 传 输 信 号 为0 时,P1.2 为0V, 而
P1.3 为+5V。 注 意P1.2 和P1.3 不 得 同 时 置+5V 或 同 时 置0V。
---- GMS97C2051 单 片 机 的P1.0 和P1.1 可 以 分 别 作 为 片 内 精 密 模 拟 电
压 比 较 器 的 正 输 入 端(AIN0) 和 负 输 入 端(AINI), 所 以 正 好 可
以 用 于 接 收 差 分 电 平 信 号。 内 部 电 压 比 较 器 的 输 出 已 经 在 芯
片 内 部 连 到P3.6 口, 所 以 可 以 通 过 读 取P3.6 口 的 值 来 得 到 差 分
电 平 信 号。
---- 软 件 串 行 口 的 实 现 方 法
---- 由 普 通I/O 口 线 来 实 现 串 行 通 信, 习 惯 上 称 为 软 件 串 行 口。
采 用 差 分 电 平 通 信 的 软 件 串 行 口 的 硬 件 接 线 图 如 图2。A、B 两
机 均 为GMS97C2051 单 片 机。P1.2 和P1.3 用 于 发 送,P1.0 和P1.1 口 用 于
接 收,P1.0 同 时 接 本 机 中 断INT0。 软 件 串 行 口 一 般 全 用 标 准 的10
位 异 步 通 信 格 式:1 位 起 始 位( 信 号0),8 位 数 据 位,1 位 停 止 位
( 信 号1)。 接 收 时 均 是 低 位 数 据 在 前, 高 位 数 据 在 后。
---- 软 件 串 行 口 接 收 和 发 送 的 工 作 原 理 和 过 程 如 下: 单 片 机
复 位 后, 执 行 初 始 化 程 序 时, 定 义P1 口 为 位 控 方 式, 其 中P1.0 和
P1.1 定 义 为 输 入,P1.2 和P1.3 定 义 为 输 出。P1.2 初 始 化 为"1",P1.3 初
始 化 为"0", 这 样 发 送 信 号 处 于 停 止 位( 差 分 电 平"1")。 定 义IN
T0 为 负 边 缘 触 发。 允 许 中 断 且 定 义 成 高 优 先 级, 然 后 开 中 断,
两 机 进 入 随 时 可 开 始 串 行 通 信 的 等 待 状 态。A、B 不 通 信 时, 两
机 的 收 发 均 为"1", 一 旦 某 机( 假 设 为A) 需 要 与 对 方 通 信,A 机
以 约 定 的 波 特 率( 假 定 为9600bps), 通 过P1.2 和P1.3 发 送。 发 送 和
接 收 一 个 字 节 的 过 程 如 下:
---- A 机 发 送 端 首 先 发 送 起 始 位("0" 电 平),B 机INT0 引 脚 产 生 下
跳 沿 后, 产 生 中 断 申 请。B 机CPU 响 应 此 中 断 后, 执 行INT0 中 断 服
务 子 程 序。 在 中 断 服 务 子 程 序 开 始, 用 位 输 入 指 令 读 入P3.6 状
态, 如 果 是"1" 电 平, 则 表 明 此 次 中 断 是 受 干 扰 所 致, 因 而 取
消 此 次 接 收 过 程, 中 断 返 回; 如 果P3.6 状 态 读 入 电 平 是"0", 则
表 明 本 次 中 断 确 系A 机 发 送 起 始 位 所 引 起, 经 精 确 延 时, 在A 机
发 送 各 数 据 位 中 间 处 进 行 采 样, 获 得 各 数 据 位 的 状 态, 最 后
生 成 一 个 字 节, 送 有 关 单 元 之 后 中 断 返 回。 虽 然 送 往INT0 的 信
号 为TTL 电 平, 但 是 由 于 它 的 传 输 速 率 非 常 之 低, 加 上 软 件 抗
干 扰 措 施, 所 以 仍 然 可 以 有 效 地 传 输1200 米。
---- 软 件 串 行 口 远 程 通 信 的 关 键 是 如 何 以 较 高 的 波 特 率 可 靠
地 实 现 数 据 的 发 送 和 接 收。 下 面 介 绍 一 组 以9600bps 波 特 率 设
计, 用MCS-51 汇 编 语 言 编 写 的 具 有 很 强 抗 干 扰 能 力 和 很 高 可 靠
性 的 收 发 一 个 字 节 的 子 程 序。
---- 软 件 串 行 通 信 的 编 程 软 件
---- 串 行 通 信 要 实 现 成 功 接 收 必 须 解 决 以 下 关 键 技 术:(1) 要
准 确、 快 速 检 测 出 对 方 发 出 的 起 始 位 以 及 起 始 位 负 跳 变 的 时
刻;(2) 保 证 在 每 个 数 据 位 中 间 采 样;(3) 具 有 有 效 的 校 验 和
查 错 手 段。
---- 我 们 针 对 性 地 采 取 以 下 措 施: 用 定 义 成 高 级 中 断 的 外 中
断 引 脚 与 接 收 线 相 连, 来 及 时 捕 捉 起 始 位 信 息, 并 在 确 定 采
样 时 刻 的 计 算 中 扣 除 中 断 响 应 滞 后 的 延 时 时 间; 精 心 设 计、
编 写 程 序, 逐 条 计 算 指 令 实 际 执 行 时 间, 排 除 其 他 中 断 干 扰(
关 中 断), 从 而 保 证 在 每 个 数 据 位 中 间 处 进 行 采 样; 每 位 重
复 采 样 多 次, 确 定 各 数 据 位 的 状 态, 从 而 可 大 大 减 少 远 程 通
信 常 见 的 瞬 态 干 扰( 其 特 点 是 幅 度 大、 作 用 时 间 短、 随 机 性 强
) 对 通 信 的 不 良 影 响。 综 合 采 用 上 述 技 术 措 施 以 中 断 方 式 工
作 的 接 收(1 帧) 的 中 断 服 务 源 程 序 如 下:
---- 软 件 串 行 口 接 收 中 断 服 务 子 程 序:
CLR A7H ;关中断
CLR A ;A清0
MOV R0,#03H ;置采样次数
MOV C,P3.6 ;接收数据送标志位C
JC NEXT1 ;如果P3.6=1转NEXT1
INC A ;如果P3.6=0,则A加1
SJMP NEXT2
NEXT1: NOP:NOP:NOP
NEXT2: DJNZ R0,NEXT0 ;连续采样3次
CLR C
SUBB A,#02H ;P3.6的值2次以上为1则中断返回
JC END1
---- 以 上 指 令 共46 个 机 器 周 期(T), 加 上 中 断 响 应 平 均 延 时5 个
机 器 周 期, 所 以 程 序 执 行 到 此, 即A 机 从 发 送 起 始 位( 开 始 变
低) 到 此 已 经 历51T。 由 于MCS-51 指 令 的1 个 机 器 周 期(T) 相 当 于
12 个 时 钟 周 期, 所 以 当 用12MHz 的 晶 振 时,1 个 机 器 周 期(1T) 相
当 于 是1 μs。51T 相 当 于51 μs。
MOV R1,#08H ;置数据位数,用去4T
MOV R0,#2CH ;延时44×2=88T
NEXT3: DJNZ R0,NEXT3 ;
---- 从A 机 发 出 起 始 位 到 此 共 延 时51T+4T+88T=143T, 相 当 于143 μs。
---- 传 输 率 为9600bps 时, 每 位 费 时104 μs( 即1s/9600)。 从 起 始 位
开 始 到D0 位 中 间1.5 位, 费 时1.5 ×104 μ s=156 μs。 下 面 程 序 在156
μs 及 其 前 后 各11 μs 处 对D0 位 进 行 共3 次 采 样, 记 录D0 采 样 结 果
为0 的 次 数。 如 果3 次 采 样 结 果 为0 的 次 数 小 于 等 于1, 则 判 断D0
=1。 如 果3 次 采 样 结 果 为0 的 次 数 大 于 等 于2, 则 判 断D0=0。 这 样
极 大 地 增 强 了 串 行 通 信 的 可 靠 性。 然 后 再 经 过 延 时 后 对 其 他
各 位 数 据 进 行 同 样 的 三 次 采 样, 直 到D0 ~D7 共8 位 数 据 全 部 采
样 结 束。
NOP
MOV R2,#03H
NEXT4: MOV C,P3.6 ;对P3.6进行3次采样
JC NEXT5 ;如果P3.6=1则转NEXT5
INC R0 ;否则计P3.6=0的次数
NEXT5: DJNZ R2,NEXT4
MOV A,R0 ;如果P3.6=0的次数≤1,则Cy=1
CLR C ;如果P3.6=0的次数≥2,则Cy=0
SUBB A,#02H
RRC A ;Cy移入A数字位
MOV R0,#02H ;再延时的循环次数
DJNZ R1,NEXT3 ;8位数据没采样完,重复
---- 以 上 程 序 执 行 用 去40T, 加 上 前 面 的143T, 共 花 去183 μs。 每
次 返 回NEXT3 循 环 一 次, 读 入 一 位 数 据。 在 程 序 转 入NEXT3 前, 给R
0 赋 值02H, 就 能 保 证 以 后 各 位 数 据 位3 次 采 样 的 准 确 时 刻。 此
中 断 服 务 子 程 序 段 不 仅 能 实 现 在 每 位 数 据 采 样, 而 且 还 在 中
间 时 刻 前 后11 μs 各 采 样1 次。 以3 次 数 据 的 多 数 结 果 确 定 该 位
的 值, 可 大 大 降 低 因 干 扰 出 错 的 概 率, 因 此 在 干 扰 严 重 的 远
程 通 信 中 有 很 强 的 适 应 性。
---- 结 论
---- 本 文 介 绍 的GMS97C2051 单 片 机 远 程 通 信 的 纯 软 件 方 法 和 程 序
也 适 合 于ATMEL 公 司 的AT89C2051 单 片 机, 对 其 他 单 片 机 的 远 程 通
信 也 具 有 一 定 的 参 考 价 值。 文 中 提 供 的 软 件 接 口 方 法 和 源 程
序 经 实 际 应 用 表 明, 该 方 法 可 延 长 通 信 距 离 至1200 米(9600bps
时)。 本 方 法 的 不 足 之 处 在 于 对 软 件 编 程 要 求 比 较 高, 如 果 要
实 现 既 软 件 编 程 简 单、 又 通 用 性 好 的 单 片 机 远 程 通 信, 还 是
要 使 用RS-232/RS-485/RS-422 转 换 器 或 光 隔 远 程 收 发 器。
--
感情是一个难以驯服的野马
理智却是一个严厉的马夫
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.228.139]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:207.798毫秒