PCSH91_305 板


LINE

※ [本文轉錄自 nfsong 信箱] 作者: ksmrt0123 (ksmrt) 看板: ASM 標題: Re: 利用8051撰寫AT command 的問題 時間: Mon Dec 14 23:14:21 2009 改這樣試看看~~~ ※ 引述《maxwellyann (不彥其煩)》之銘言: : init_rs232() //初始化RS232通訊介面 <<這裡怪怪的 分號的部份>> : { //通訊協定:<9600 N 8 1> : SCON=0x50; //設定串列界面工作模式1,接收資料致能 SCON=0xD8; <- 改為 mode 3, 並把TB8設為1 這樣才有正確的stop bit : TMOD=0x20; //設定計時器1工作於模式2 : TH1=0xFD; //設定鮑率為9600BPS : TR1=1; //啟動計時器1開始計數 : TI=1; //設定串列傳送中斷產生旗號 TI=0; : } : tx_char(unsigned char c) //傳送一位元組資料 : { : while(1) : if(TI)break; //等待傳送中斷旗號產生 上兩行改 while(TI) ; : TI=0; //清除串列傳送中斷旗號 : SBUF=c; //由串列埠傳送資料出去 : } : tx_str(char*str) //傳送字串資料 : { : do{tx_char(*str++);} : while(*str!='\0'); 改 while(*str) tx_char(*str++); 可能好一點 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.68.71.218 ※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/14 23:24)
1F:推 maxwellyann:謝謝你唷~我先來試試看! 12/14 23:23
2F:推 maxwellyann:SCON=0xD8 是加上去的還是改掉上面那句? 12/15 12:07
改掉上面
3F:→ maxwellyann:TB8設為1意思是我還要再加東西上去嗎? 12/15 12:13
不用, 這邊只是說明SCON=0xD8的效果
4F:→ maxwellyann:TI=0也是要加打上去的嗎? 12/15 12:15
改掉原來的 TI=1; ※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/15 14:47)
5F:推 maxwellyann:可以請問,如果我只要單純測試RS232這一段,我的硬體 12/15 22:34
6F:→ maxwellyann:該如何配置,才能測試code是否能夠傳送資料呢? 12/15 22:35
用示波器或是邏輯分析儀看TxD的波形啊 這兩樣都沒有就有點麻煩了... ※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/16 00:30)
7F:→ maxwellyann:經過測試RS232的部份只有PIN4有動作,PIN2.PIN3都沒有 12/16 17:10
RS232? 還是51的serial port? 什麼東西的pin 2,3,4? 這兩個並不一樣
8F:→ maxwellyann:動作,是RS232程式碼定義錯誤嗎? 12/16 17:10
怎樣的動作? 有看到波形嗎? 正確嗎?
9F:→ maxwellyann:還有我的BAUD RATE是9600,這個部份需要定義嗎? 12/16 17:15
假如你用的標準的8051, 且crystal用的是 11.0592MHz, 那這麼baudrate應該是9600沒錯 ※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/16 20:38)
10F:→ maxwellyann:我說的是RS232的第二三四腳,只有第四腳有電位差。 12/16 21:31
rs232 pin.4是DTR, 你有用到DTR? 還有什麼叫"有電位差"?
11F:→ maxwellyann:RS232指的是51的serial port,還有要怎麼看51是標準的 12/16 21:47
就說這兩個不一樣了... 把廠牌/型號寫出來啊
12F:→ maxwellyann:經過測試51的2腳(RD).3腳(TD)都沒有反應.只有4腳有 12/16 21:53
你應該又把rs232 什麼又叫"有反應"? 跟51的serial port搞混了 ※ 編輯: ksmrt0123 來自: 219.68.71.218 (12/16 23:03)
13F:→ maxwellyann:我使用的51版是洋天科技TE-51-UC 12/16 23:56
14F:→ maxwellyann:測量過51的serial port 需要使用的RXD、TXD接示波器, 12/17 00:09
15F:→ maxwellyann:都沒有任何反應,DTR沒用到。 12/17 00:10
16F:→ maxwellyann:假設我的51 serial port接GSM RS232(母), 12/17 00:12
17F:→ maxwellyann:連接的線是GSM專用的線,GSM RS232(母)對線(公), 12/17 00:15
18F:→ maxwellyann:線(公)對51 serial port(母),這樣接51跟GSM能順利溝 12/17 00:16
19F:→ maxwellyann:通嗎?我不會測量傳輸線是否為交叉線,也不確定這麼接 12/17 00:18
20F:→ maxwellyann:對不對?麻煩你幫我解答嚕!非常緊急需要你的幫忙! 12/17 00:19
21F:→ maxwellyann:目前我遇到最大的問題在於我不曉得RS232轉換電路是否 12/17 00:20
22F:→ maxwellyann:可以正常運作,如果可以正常運作,跑軟體卻還是沒有動 12/17 00:21
23F:→ maxwellyann:作的話,軟體該怎麼去修改?硬體接收到senser==1的訊 12/17 00:22
24F:→ maxwellyann:號是否要放到暫存器中,如果是的話,我對這部份更是一 12/17 00:23
25F:→ maxwellyann:竅不通,解決完這部份,就剩下ATcommand的部份要測試 12/17 00:24
26F:→ maxwellyann:還有一個重點是,我用的51,它的說明比較煩雜,甚至 12/17 00:31
27F:→ maxwellyann:有什麼功能或者使用方式都跟一般的51不太一樣 12/17 00:31
28F:推 WolfLord:洋天的TE51基本上是89S51,除了燒錄外都跟標準51差不多 12/17 01:55
29F:推 WolfLord:老兄,您別著急,您的GSM MODEM有沒有線上規格可以抓得到? 12/17 01:58
30F:推 WolfLord:然後確定一下,你的GSM MODEM是否為UART或需要轉換信號 12/17 02:02
31F:推 WolfLord:然後,TE51的232第二隻腳是輸出(TX)第三隻腳是輸入(RX) 12/17 02:05
32F:→ WolfLord:地5隻腳是接地,用電錶量看看到MODEM對不對 12/17 02:05
33F:推 WolfLord:真的搞不清楚,先接PC操作看看 12/17 02:24
34F:→ maxwellyann:回WO大,GSM MODEN的規格網路上好像找不到,我打給廠 12/17 13:12
35F:→ maxwellyann:商問,不過是個很爛的廠商,先問他規格 12/17 13:12
36F:→ maxwellyann:還有一個問題,51的serial port 第三腳TX第二腳RX吧? 12/17 13:13
37F:→ maxwellyann:51的serial port應該都一樣吧! 12/17 13:14
38F:→ maxwellyann:還有我要怎麼去量51到MODEN呢?要接傳輸線吧? 12/17 13:15
39F:→ maxwellyann:可是如果接起來了,我要怎麼去量測呢?麻煩你嚕! 12/17 13:16
40F:推 WolfLord:只要用三用電錶就可以測量電線怎麼跳了您該不會連三用電 12/17 14:06
41F:→ WolfLord:錶都不會用吧? 類比的指針表甚至能捕捉到脈衝跳動哪 12/17 14:06
42F:→ maxwellyann:你的意思是測量51的serial port吧!如果是的話我已經 12/17 15:35
43F:→ maxwellyann:用電錶測量過了,RX跟TX都沒有反應,正極接RX.TX負極 12/17 15:37
44F:→ 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)
45F:推 maxwellyann:感恩KS大唷,我先試試看再說!還有我用的是 12/17 16:17
46F:→ maxwellyann:ATMEL AT89S52 12/17 16:18
47F:→ maxwellyann:測試(1)後,每一個pin都是一個5V一個0V,這樣對嗎? 12/17 16:57
嗯, 這樣應該ok
48F:→ 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)
49F:→ maxwellyann:pin10.11當我沒說@@,那不在PORT裡面~~~ 12/17 17:11
50F:→ maxwellyann:(2)測量完了,TXD的波形與你的畫的是一樣的,測(3)! 12/17 17:12
51F:推 maxwellyann:鮑率我不會算,幫我算一下好嗎?Time=0.2ms,CH1=5V, 12/17 17:59
52F:→ maxwellyann:FREQ=1.7453KHZ,算超久算不出來,麻煩你嚕! 12/17 18:00
53F:推 WolfLord:? 沒關過呼叫器啊~ 只是我又不一定在電腦旁 12/17 18:17
54F:推 maxwellyann:TH1=0xFD就是設定BAUDRATE為9600bps對吧! 12/17 18:20
55F:→ maxwellyann:目前我出現的波形都跟你說的一樣,代表說我可以開始 12/17 18:20
56F:→ 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)
57F:推 maxwellyann:我在燒錄的時候設定11.0592來燒,跑你的code也都沒問 12/17 19:45
58F:→ maxwellyann:題,這樣可以確定鮑率是9600bps嗎? 12/17 19:46
不可以
59F:推 maxwellyann:TH1=0xFD,就是設定鮑率9600對吧,所以code可以跑步不 12/17 19:51
60F:→ 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) --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.161.50.245







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP