广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 19285 个阅读者
 
<< 上页  1   2   3  下页 >>(共 3 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
tgs0910 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x61
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

大大可以收到
我a和b的第二脚都接地
那请问一下到底要如何接
才能不要接收到自己的资料
又能当a发射时b能接收
    当b发射时a能接收
但是大大我把 /re 接4.7k电阻接vcc
不管是A接或B接
两颗都部会亮
谢谢


[ 此文章被tgs0910在2006-04-04 18:22重新编辑 ]


献花 x0 回到顶端 [10 楼] From:台湾 | Posted:2006-04-04 17:58 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

你到底要一送一收还是两边都可以送收??? 或是你要利用 RS485 的脚位控制来当发送或接收端???

不想接收 RS485 资料就把 /RE 接 High 就可以了.
想发送资料的 RS485 第三脚 DE 接 High 就可以发送了, 但不可以两边同时接 High,
那么即使 8051 没有发送也会有问题.
SCON 中的 bit 3 为 REN, 8051 的资料上写的是接收致能, 如果没设为 1 应该无法接收
不过我倒没试过设为 0 还能不能接收, 因为书上写要设为 1, 那为何要设为 0 呢???

我不晓的你的 P2 有没有 pull high, 如果没有的话, 那么 MOV SBUF,P2 会送出什么资料就很难讲了.

假设情况:
一. 经由 RS485 的脚位来决定 A 或 B 当发送端或接收端(或一个送另一个收)
A 当发送端: RS485 DE 接 High, /RE 接 High. B 当接收端: RS485 DE 接 Low, /RE 接 Low
如果这种接法还不行, 你可以用示波器来量接收端 RS485 的第一脚是否有讯号进来.
如果没有示波器也可以用三用电表的 DC 电压来量这只脚.
当有讯号接收时, 你会看到电压会变动, 如果没有资料的话电压会维持在大约 5V 而且不会变动

二. 两者同时又想送也想收
以 RS485 Bus 价购是无法双向送收的.
一般的作法是一个当 Master, 另一个当 Slave.
由 Master 主动送资料给 Slave 然后等待 Slave 的回应
这样两边就不会有同时送资料的情况发生
另一种作法就类似 Ethernet 网路的作法(CSMA/CD)
简单来说就是送之前先检查 Bus 有没有人在送资料
如果没有就将资料送出去并检查送出去的资料是否正确(如果别人也在送资料可能会被破坏)
一旦有问题就停止发送一段特定的时间(每片网路卡的特定时间不一定相同)
然后再回到检查 Bus 有没有人在送资料的阶段
如此周而复始几次后还不成功就告知上层传送失败.


献花 x0 回到顶端 [11 楼] From:台湾中华电信 | Posted:2006-04-06 01:28 |
tgs0910 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x61
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

大大不好意思小弟没说清楚
小弟想要 a 送资料时只有 b 收到
        b 送资料时只有 a 收到
非同步

SCON 中的 bit 3 为 REN, 8051 的资料上写的是接收致能, 如果没设为 1 应该无法接收
不过我倒没试过设为 0 还能不能接收, 因为书上写要设为 1, 那为何要设为 0 呢???
能接收
参考金华的书


我不晓的你的 P2 有没有 pull high, 如果没有的话, 那么 MOV SBUF,P2 会送出什么资料就很难讲了
大大所为的 pull high是要外接4.7k的电组还是要在程式上
因为小弟是用副控制

就是要让p的那知脚亮就把p2和地接在一起
像小弟这种做法须要 pull high嘛
谢谢


献花 x0 回到顶端 [12 楼] From:台湾中华电信 | Posted:2006-04-06 20:43 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

小弟想要 a 送资料时只有 b 收到
    b 送资料时只有 a 收到
非同步
-> 我想 RS485 的控制你应该都知道了, 那 A 或 B 想发送资料就必须 DE, /RE 接对电位才行

不过一般我们的应用都是 DE 接到 CPU 的接脚, 要发送之前将 DE 拉 High, 送完后拉Low
/RE 永远接地来接收. 然后在 Serial INT 内判别 DE 是否为 High, 如果是的话将收到的资料丢掉.
因为这是自己送出来的资料经由RS485 Bus回来.

大大所为的 pull high是要外接4.7k的电组还是要在程式上
因为小弟是用副控制
-> 什么是副控制??? 我一般是程式跟外部接4.7K到Vcc两者都用


献花 x0 回到顶端 [13 楼] From:台湾中华电信 | Posted:2006-04-07 00:00 |
tgs0910 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x61
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

小弟所谓的副控制就是把接脚接地
                                不接vcc
就是 正电压永远on住
要让哪个动作就加负电压

然后在 Serial INT 内判别 DE 是否为 High, 如果是的话将收到的资料丢掉
可不可以请大大说清楚一点
小弟太笨了
谢谢


献花 x0 回到顶端 [14 楼] From:台湾 | Posted:2006-04-07 16:44 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

小弟所谓的副控制就是把接脚接地
                    不接vcc
就是 正电压永远on住
要让哪个动作就加负电压
-> 这两段话好像有点矛盾, "正电压永远 ON 住"跟"不接 Vcc" 不太合?
不过这不是重点, 我不晓的你现在的情况有什么问题吗?
还有我总觉得你想要 A 发送 B 接收, 然后又希望 A 接收 B 发送.
这在你目前的软硬体线路下应该是不可能的.
还是我弄错了??? 那你怎么确定要由 A 发送或 B 发送??
经由 RS485 DE, /RE 接 High 或 Low 来决定吗?
如果是就应该跟我 11 楼写的情况一相同了
那这样会有问题吗?

Serial INT 指的是 8051 的串列中断. 下面为我常用的程式写法, 你可以参考看看
但是我觉得重点是你的问题在哪里是否己经清楚了, 不然我想改了也没用吧!?

org 0023h
jmp SerialINT

SeralINT:
  push psw
  push a
PollSerial:
  jbc ti, TrmInt
  jbc ri, RcvInt
  jmp SerialINT_Exit
TrmInt:
  setb XmtDataReady
  jmp PollSerial
RcvInt:
  mov a, sbuf
  jb P3.4, PollSerial ; 假设 P3.4 接到 RS485 DE, 如果 DE 为 High, 就将资料丢掉
  ; 将收到的资料放在记忆体或直接判别也可以
  jmp PollSerial
SerialINT_Exit:
  pop a
  pop psw
  reti

SendChar:
  clr ti
  clr XmtDataReady
  setb p3.4   ; 将 RS485 DE 拉 High
  mov sbuf, a
SendChar_Wait:
  jbc ti, SendChar_Exit
  jnb XmtDataReady, SendChar_Wait
SendChar_Exit:
  clr p3.4 ; 将 RS485 DE 拉 Low
  ret


献花 x0 回到顶端 [15 楼] From:台湾中华电信 | Posted:2006-04-07 19:26 |
tgs0910 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x61
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

大大不好意思
小弟为了这个问题
去买了一台示波器
小弟的设计是要由8051来控制
rs485的发射和接收
就是像大大所写的程式那样
可以发射也可以接收
当a发射时b就接收
当b发射时a就接收
不是同时发射接收
就是经由 RS485 DE, /RE 接 8051的一只脚用程式写High 或 Low 来决定
大大你先不管我要用8051来控制的那一段
我现在最大的疑问是
我用a单做发射
    b单做接收
我现在把b的DE, /RE 接地
    把a的 / RE 接地
            DE接VCC时
B可以收到A发射的东西
但是当我把A的DE, /RE接VCC时
B却收不到A发射的东西

第二个问题是
我用示波器去量ASCII码时量出来的东西跟二进制的东西是不同的
为什么会这样
我用探棒的黑色鳄鱼夹去接地
然后用探棒去接8051的RXD
谢谢

第三个问题是
89S52的ASCII码可以改是发射7个或是8个位元嘛
一般的ASCII码不是有发射7个位元和8个位元两种模式嘛
谢谢


献花 x0 回到顶端 [16 楼] From:台湾中华电信 | Posted:2006-04-17 21:07 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

有了示波器用来量讯号来找问题就变的很简单了(前提当然是要会量啰!)
示波器不便宜吧! 如果数位储存的应该要几万块吧!? 蛮佩服你的上进心啦!

我用a单做发射
  b单做接收
我现在把b的DE, /RE 接地
  把a的 / RE 接地
        DE接VCC时
B可以收到A发射的东西
但是当我把A的DE, /RE接VCC时
B却收不到A发射的东西
-> 这不太合理, 你可以量 B 端的 RXD 及 A 端的 TXD 看看那边有问题?
一般示波器应该有两个 Channel, 你可以同时量测这两只脚就应该知道问题出在哪了?
除非 /RE 接 High 会影响 DE, 不过看 datasheet 应该不会啊!
所以量量看最容易知道问题在哪!
如果 B 端的 RXD 及 A 端的 TXD 同时有讯号那么就应该是你的程式或判断有问题了!?

第二个问题是
我用示波器去量ASCII码时量出来的东西跟二进制的东西是不同的
为什么会这样
我用探棒的黑色鳄鱼夹去接地
然后用探棒去接8051的RXD
谢谢
-> 这样接没错, 应该是你解读错误. RS232 的通讯协定一般为
1 Start bit, 8 Data bits, 1 Stop bit
Start bit 为 Low
Data bit 为 bit 0 先送出, 然后 bit 1, 2, 3, 4...
Stop bit 为 High
例如: 你送出 Ɔ'(30h=00110000b), 示波器看到的是
0 00001100 1 (1 Start bit, 8 Data bits, 1 Stop bit)

三个问题是
89S52的ASCII码可以改是发射7个或是8个位元嘛
一般的ASCII码不是有发射7个位元和8个位元两种模式嘛
谢谢
-> 可以. 如果为 7 Data bits, 一般都会再跟一个同位检查位元 (Parity bit), 有四种模式
1. Even(偶同位) - 所有 Data bits 的 1 必须为偶数, 如 0000100 同位元就为 1 凑成偶数
2. Odd(奇同位) - 所有 Data bits 的 1 必须为奇数, 如 0000110 同位元就为 1 凑成奇数
3. Space - 强迫为 0
4. Mark - 强迫为 1
8051 只支援 8 Data bits, 9 Data bits 所以如果要 7 Data bits
你可以选择用 Mark(如果接收者没有同位检查位元), 或跟接收者同样的同位检查
8051 可没有像 PC 的 UART chip 一样有上面几种模式可以选
如果你要同位检查必须自己写程式加上去
例如: (7 Data bits)
1. Even: (利用 8051 PSW 中的 P 位元, 因为 8051 的 P 位元就是偶同位)
  clr a.7
  mov c, p
  mov a.7, c
  mov sbuf, a
2. Odd:
  clr a.7
  mov c, p
  cpl c
  mov a.7, c
  mov sbuf, a
3. Space
  clr a.7
  mov sbuf, a
4. Mark
  setb a.7
  mov sbuf, a


献花 x0 回到顶端 [17 楼] From:台湾中华电信 | Posted:2006-04-19 02:12 |
tgs0910 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x61
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

ORG     00h          
        MOV     TMOD,#00100000B
        MOV     TH1,#0FDH    
        SETB     TR1
        ORL     PCON,#80H
        MOV     SCON,#01110000B
;
LOOP:   JNB       RI,K0
        CLR       RI
;
        MOV     A,SBUF
;
C1:     CJNE     A,#30H,C2
        CLR     P1.0
        JMP     K0
;
C2:     CJNE     A,#31H,C3
        CLR     P1.1
        JMP     K0          
;
C3:     CJNE     A,#32H,C4
        CLR     P1.2
        JMP     K0
;
C4:     CJNE     A,#33H,C5
        CLR     P1.3
        JMP     K0
;
C5:     CJNE     A,#34H,C6
        CLR     P1.4
        JMP     K0
;
C6:     CJNE     A,#35H,C7
        CLR     P1.5
        JMP     K0
;
C7:     CJNE     A,#36H,C8
        CLR     P1.6
        JMP     K0
;
C8:     CJNE     A,#37H,LOOP
        CLR     P1.7
        JMP     K0
;
K0:     MOV     P2,#11111111B
        JB       P2.0,K1
      MOV     A,#30H
      JMP     K8
;
K1:     JB       P2.1,K2
        MOV     A,#31H
      JMP     K8
;
K2:     JB       P2.2,K3
      MOV     A,#32H
      JMP     K8
;
K3:     JB       P2.3,K4
      MOV     A,#33H
      JMP     K8
;
K4:     JB       P2.4,K5
      MOV     A,#34H
      JMP     K8
;
K5:     JB       P2.5,K5
      MOV     A,#35H
      JMP       K8
;
K6:   JB       P2.6,K7
      MOV     A,#36H
      JMP     K8
;
K7:   JB       P2.7,LOOP
    MOV     A,#37H    
    JMP       K8
;
K8:   MOV     SBUF,A
      JNB     TI,$
      CLR     TI
      AJMP   LOOP
;
END
大大请问一下我这样写有什么问题
为何收不到
还有我把/RE接VCC
量时都没有信号
我去


献花 x0 回到顶端 [18 楼] From:台湾 | Posted:2006-04-19 18:45 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

为何收不到
还有我把/RE接VCC
-> 你说的应该是 A 端 /RE, DE 接 High, B 端的 /RE, DE 接 Low 吧!?

量时都没有信号
-> B 端 RXD 量不到讯号? 确认一下这时 A 端的 TXD 有没有讯号?
如果 A 端 TXD 有讯号而且 DE 接 High, 那么可以量一下 RS485 第 6, 7 脚有没有讯号.
如果没有那就是 RS485 没有送出去, 那 B 端 RXD 当然收不到


献花 x0 回到顶端 [19 楼] From:台湾中华电信 | Posted:2006-04-19 19:36 |

<< 上页  1   2   3  下页 >>(共 3 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.016491 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言