推 maxwellyann:謝謝你唷~我先來試試看! 12/14 23:23
推 maxwellyann:SCON=0xD8 是加上去的還是改掉上面那句? 12/15 12:07
改掉上面
→ maxwellyann:TB8設為1意思是我還要再加東西上去嗎? 12/15 12:13
不用, 這邊只是說明SCON=0xD8的效果
→ maxwellyann:TI=0也是要加打上去的嗎? 12/15 12:15
改掉原來的 TI=1;
※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/15 14:47)
推 maxwellyann:可以請問,如果我只要單純測試RS232這一段,我的硬體 12/15 22:34
→ maxwellyann:該如何配置,才能測試code是否能夠傳送資料呢? 12/15 22:35
用示波器或是邏輯分析儀看TxD的波形啊
這兩樣都沒有就有點麻煩了...
※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/16 00:30)
→ maxwellyann:經過測試RS232的部份只有PIN4有動作,PIN2.PIN3都沒有 12/16 17:10
RS232? 還是51的serial port? 什麼東西的pin 2,3,4?
這兩個並不一樣
→ maxwellyann:動作,是RS232程式碼定義錯誤嗎? 12/16 17:10
怎樣的動作? 有看到波形嗎? 正確嗎?
→ maxwellyann:還有我的BAUD RATE是9600,這個部份需要定義嗎? 12/16 17:15
假如你用的標準的8051, 且crystal用的是 11.0592MHz,
那這麼baudrate應該是9600沒錯
※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/16 20:38)
→ maxwellyann:我說的是RS232的第二三四腳,只有第四腳有電位差。 12/16 21:31
rs232 pin.4是DTR, 你有用到DTR?
還有什麼叫"有電位差"?
→ maxwellyann:RS232指的是51的serial port,還有要怎麼看51是標準的 12/16 21:47
就說這兩個不一樣了...
把廠牌/型號寫出來啊
→ maxwellyann:經過測試51的2腳(RD).3腳(TD)都沒有反應.只有4腳有 12/16 21:53
你應該又把rs232 什麼又叫"有反應"?
跟51的serial port搞混了
※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/16 23:03)
→ maxwellyann:我使用的51版是洋天科技TE-51-UC 12/16 23:56
→ maxwellyann:測量過51的serial port 需要使用的RXD、TXD接示波器, 12/17 00:09
→ maxwellyann:都沒有任何反應,DTR沒用到。 12/17 00:10
→ maxwellyann:假設我的51 serial port接GSM RS232(母), 12/17 00:12
→ maxwellyann:連接的線是GSM專用的線,GSM RS232(母)對線(公), 12/17 00:15
→ maxwellyann:線(公)對51 serial port(母),這樣接51跟GSM能順利溝 12/17 00:16
→ maxwellyann:通嗎?我不會測量傳輸線是否為交叉線,也不確定這麼接 12/17 00:18
→ maxwellyann:對不對?麻煩你幫我解答嚕!非常緊急需要你的幫忙! 12/17 00:19
→ maxwellyann:目前我遇到最大的問題在於我不曉得RS232轉換電路是否 12/17 00:20
→ maxwellyann:可以正常運作,如果可以正常運作,跑軟體卻還是沒有動 12/17 00:21
→ maxwellyann:作的話,軟體該怎麼去修改?硬體接收到senser==1的訊 12/17 00:22
→ maxwellyann:號是否要放到暫存器中,如果是的話,我對這部份更是一 12/17 00:23
→ maxwellyann:竅不通,解決完這部份,就剩下ATcommand的部份要測試 12/17 00:24
→ maxwellyann:還有一個重點是,我用的51,它的說明比較煩雜,甚至 12/17 00:31
→ maxwellyann:有什麼功能或者使用方式都跟一般的51不太一樣 12/17 00:31
推 WolfLord:洋天的TE51基本上是89S51,除了燒錄外都跟標準51差不多 12/17 01:55
推 WolfLord:老兄,您別著急,您的GSM MODEM有沒有線上規格可以抓得到? 12/17 01:58
推 WolfLord:然後確定一下,你的GSM MODEM是否為UART或需要轉換信號 12/17 02:02
推 WolfLord:然後,TE51的232第二隻腳是輸出(TX)第三隻腳是輸入(RX) 12/17 02:05
→ WolfLord:地5隻腳是接地,用電錶量看看到MODEM對不對 12/17 02:05
推 WolfLord:真的搞不清楚,先接PC操作看看 12/17 02:24
→ maxwellyann:回WO大,GSM MODEN的規格網路上好像找不到,我打給廠 12/17 13:12
→ maxwellyann:商問,不過是個很爛的廠商,先問他規格 12/17 13:12
→ maxwellyann:還有一個問題,51的serial port 第三腳TX第二腳RX吧? 12/17 13:13
→ maxwellyann:51的serial port應該都一樣吧! 12/17 13:14
→ maxwellyann:還有我要怎麼去量51到MODEN呢?要接傳輸線吧? 12/17 13:15
→ maxwellyann:可是如果接起來了,我要怎麼去量測呢?麻煩你嚕! 12/17 13:16
推 WolfLord:只要用三用電錶就可以測量電線怎麼跳了您該不會連三用電 12/17 14:06
→ WolfLord:錶都不會用吧? 類比的指針表甚至能捕捉到脈衝跳動哪 12/17 14:06
→ maxwellyann:你的意思是測量51的serial port吧!如果是的話我已經 12/17 15:35
→ maxwellyann:用電錶測量過了,RX跟TX都沒有反應,正極接RX.TX負極 12/17 15:37
→ maxwellyann:接地對吧!還有可請大大開呼叫器嗎?這樣問你較方便! 12/17 15:38
假如還在debug, 可照下列步驟做:
(0) 名詞定義
0.1 實驗板: 洋天 TE-51-UC
0.2 51: 8051 uP, 廠牌與型號未知, 可能是 Atmel 89S51
0.3 Serial port: 8051 IC 上的 serial io port, 包含
RxD (pin 10) 與 RxD (pin 11)
0.4 RS232: TE-51-UC板子上的 DE-9 接頭的那個介面.
RS232跟 51 serial port相關但不相同, 不要搞混
TE-51-UC板子應該是DCE端, TxD是pin3, RxD是pin 2
(1) 確認 8051 正確燒錄與執行
請先確定寫好的程式有正確的燒錄進8051,
並且有正確執行. 把下列程式燒進去51裡,
用示波器或電表量看看51的IO port輸出是否正確:
#include <reg51.h>
main()
{
P0 = 0x55;
P1 = 0x55;
P2 = 0x55;
P3 = 0x55;
}
(2) 確認 51 serial port 有正確輸出
#include <reg51.h>
main()
{
int c;
SCON=0xD8;
TMOD=0x20;
TH1=0xFD;
TR1=1;
TI=1;
TI=0;
c = 0;
while(1) {
SBUF = 0x00;
while(!TI) ;
TI = 0;
}
}
把上面的程式燒進 51 後, 用示波器量 51 的 TxD (pin 11),
會看到這樣的波形:
_ _ _ _ _
TxD: |_________| |_________| |_________| |_________| |___
(3) 確認 baudrate
假如8051用的是11.0592MHz的crystal, 那serial port輸出
會是 9600 bps. 輸出0x00, 包含1個start bit 跟8個data bits
均為 low, 所以TxD波形 low 的寬度是 9個 bit time, 約為
937.5 uS; high只佔1個bit time, 約104uS.
_ _
|_________| |____
^-937.5uS-^
^-^
104uS
(4) 先這樣看情況再說吧...
※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/17 16:01)
推 maxwellyann:感恩KS大唷,我先試試看再說!還有我用的是 12/17 16:17
→ maxwellyann:ATMEL AT89S52 12/17 16:18
→ maxwellyann:測試(1)後,每一個pin都是一個5V一個0V,這樣對嗎? 12/17 16:57
嗯, 這樣應該ok
→ maxwellyann:還有pin10.RX電壓4.6V,pin11.TX電壓0V,這樣正常嗎? 12/17 16:59
你的RS232有接東西嗎? 理論上沒接其他東西的話
RxD應該要維持 5V, TxD 因為送 0x00出去, 用電錶
量到 0V 應該ok...
你不是有示波器? 用示波器看比較準~
量量看有沒有我畫的那樣的波形
※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/17 17:05)
→ maxwellyann:pin10.11當我沒說@@,那不在PORT裡面~~~ 12/17 17:11
→ maxwellyann:(2)測量完了,TXD的波形與你的畫的是一樣的,測(3)! 12/17 17:12
推 maxwellyann:鮑率我不會算,幫我算一下好嗎?Time=0.2ms,CH1=5V, 12/17 17:59
→ maxwellyann:FREQ=1.7453KHZ,算超久算不出來,麻煩你嚕! 12/17 18:00
推 WolfLord:? 沒關過呼叫器啊~ 只是我又不一定在電腦旁 12/17 18:17
推 maxwellyann:TH1=0xFD就是設定BAUDRATE為9600bps對吧! 12/17 18:20
→ maxwellyann:目前我出現的波形都跟你說的一樣,代表說我可以開始 12/17 18:20
→ maxwellyann:測試程式碼嚕,對吧!那code不改直接測吼!對吧? 12/17 18:22
還是先確定baudrate正確比較好, 1.7543KHz有點怪怪的.
不然你看一下板子上的 crystal 上面打多少?
假如不是 11.0592 的話 baudrate就不對, 要改 TH1.
示波器還是要學一下... 不會看示波器以後debug會很困難
你說的 CH1=5V是垂直(電壓)的區間(division)一格是5V, 在這不重要,
Time=0.2mS 表示水平一格是 0.2mS = 200uS,
假如TxD以9600bps送出 0x00, 那 low 的部份就會佔
937.5uS, 大約是4格多接近5格. 這樣可大約估出波形寬度了.
可配合 trigger position來調整波形在螢幕上的位置,
把前面的下降緣對齊格線, 這樣量就比較準確了.
現在的示波器都是DSO, 有遊標(cursors)做精確地量測,
把第一個cursor放在下降緣, 第二個放上升緣,
這樣low 的寬度 DSO 就自動量好顯示在螢幕上了.
(一般在右上方顯示 |A-B| 或是 一個三角形(delta)的就是了)
※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/17 19:01)
推 maxwellyann:我在燒錄的時候設定11.0592來燒,跑你的code也都沒問 12/17 19:45
→ maxwellyann:題,這樣可以確定鮑率是9600bps嗎? 12/17 19:46
不可以
推 maxwellyann:TH1=0xFD,就是設定鮑率9600對吧,所以code可以跑步不 12/17 19:51
→ maxwellyann:就代表51是11.0592嗎,這麼說對吧! 12/17 19:51
不對
你應該要讀一下 8051 serial port跟baudrate的設定.
當baudrate固定, crystal頻率跟(0x100-TH1)成正比.
crystal 越快, 0x100-TH1 就要越大,
TH1 也就越小.
至於 keil c 設定的 11.0592 MHz 是供 simulator 計算時間用的,
跟實際一點關係都沒有. 你可試試把 keil 設成 generic 8052,
crystal 可設成 999 MHz, 燒錄看看跑起來有沒有不一樣~~~
※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/17 20:24)
推 WolfLord:(耍冷)感覺遇到很盧的菜鳥了。你要不要乾脆收費代製算了 12/17 20:45
這划不來吧 ^^
※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/17 21:40)
推 maxwellyann:我剛剛用keil c跑DEBUG,可是鮑率顯示0耶 = = 12/17 22:42
→ maxwellyann:還有KS大你說的將keil設成reneric 8052我不懂意思= = 12/17 22:44
推 WolfLord:我突然發覺你們再雞同鴨講.....uVersion的SIM狀態UART 12/17 22:46
→ WolfLord:不會從硬體出去的,要不去買真的ICE要不直接燒錄直接RUN 12/17 22:46
→ WolfLord:不要用STEP MODE啦 .... 12/17 22:47
推 maxwellyann:Wolf大的意思是如此太麻煩了嗎?直接跑軟體就好事嗎? 12/17 23:06
推 WolfLord:不是麻煩,是軟體模擬不會真的送到IC上輸出 12/17 23:08
→ WolfLord:除非你有真的硬體ICE,不然就是直接燒直接跑,觀察對不對 12/17 23:09
推 Jhih8051:精闢的解說,不得不推一下! 12/26 02:15