廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 19888 個閱讀者
 
<< 上頁  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.073910 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言