全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1697
推到 Plurk!
推到 Facebook!

我也有一個8051 RS-232 vs VB的問題...

缺席
ss99ss
一般會員


發表:4
回覆:7
積分:2
註冊:2005-04-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-22 14:31:30 IP:218.166.xxx.xxx 未訂閱
各位前輩好,小弟用89s51測試將資料以RS232回傳,結果非常奇怪    跑mode 1,9600,n,8,1    當我按下RESET後,8051的確有將東西送出去,但是這時候VB的MSCOMM Event不會 被呼叫,我多按幾次RESET後,8051竟然開始起肖,TX送出來的是極慢的上下跳動(大概2bps?),這時候VB就會一次把之前吃的東西全部吐出來,而且補上0.... 如果我將 class="code"> ; 檔名:Rs2321.a51 ; 配合"RS232實習板" ; 傳送一字串為"HELLO!!" ; START: MOV TMOD,#20H ;TMOD=20H,設定TIMER1為8位元自動載入定時器 MOV TH1,#0FDH ;TH1=0FDH MOV TL1,#0FDH ;TL1=0FDH,設定鮑率為9600BPS CLR SM0 ;SM0=0 SETB SM1 ;SM1=1,設定串列傳輸為模式1 SETB TR1 ;TR1=1,開始計時 MOV DPTR,#HTABLE ;DPTR=HTABLE之位址 LOOP: CLR A ;A=0 MOVC A,@A DPTR ;A=[DPTR A],位址上之資料 JZ EXIT ;若A=0,則跳至EXIT MOV SBUF,A ;SBUF=A WHILE: JNB TI,WHILE ;若TI=0表示未傳完,需等待 CLR TI ;TI=0 INC DPTR ;DPTR=DPTR 1,指向下一資料 JMP LOOP ;GOTO LOOP EXIT: JMP $ ;原地跳躍 HTABLE: DB "HELLO!!",0 END ;程式結束 (VB的原始碼)
Private Sub Command1_Click()
  If MSC1.PortOpen = False Then MSC1.PortOpen = True
End Sub
'----------------------------------------------------
Private Sub Command2_Click()
  If MSC1.PortOpen = True Then MSC1.PortOpen = False
  Debug.Print "======================"
End Sub
'----------------------------------------------------
Private Sub Form_Unload(Cancel As Integer)
  If MSC1.PortOpen = True Then MSC1.PortOpen = False
  Debug.Print "======================"
End Sub
'-----------------------------------------------------
Private Sub MSC1_OnComm() 'MSCOMM 觸發
  MSC1.Settings = "9600,n,8,1"
  Dim Buffer As Variant ,i
  MSC1.InputMode = comInputModeBinary
  Buffer = MSC1.Input
    For i = LBound(Buffer) To UBound(Buffer)
       Debug.Print "X"   Str(Buffer(i))   " - "   Chr(Buffer(i))
    Next i
  Debug.Print " "
End Sub
該如何解決呢? 還有,為何RESET幾次後會變成TX亂跳呢? (我已經有加1u的de-bounce電容) 請指教, 感激不盡! 發表人 - ss99ss 於 2005/04/22 19:30:22

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-22 18:46:56 IP:61.70.xxx.xxx 未訂閱
PO文前請先參照版規! po程式碼請縮排.請修改配合!謝謝!!
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
ss99ss
一般會員


發表:4
回覆:7
積分:2
註冊:2005-04-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-22 19:34:41 IP:218.166.xxx.xxx 未訂閱
引言: PO文前請先參照版規! po程式碼請縮排.請修改配合!謝謝!!
改好了,這樣可以嗎? 另,我發現如果把資料傳完後,電壓會停在-10V上,如果拉到5V,那就會觸發了 這是什麼樣的問題呢?

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-22 19:43:56 IP:61.70.xxx.xxx 未訂閱
有電路圖的話,煩請補貼一下.大家比較能確定你硬體有沒有問題.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
ss99ss
一般會員


發表:4
回覆:7
積分:2
註冊:2005-04-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-22 20:02:14 IP:218.166.xxx.xxx 未訂閱
引言: 有電路圖的話,煩請補貼一下.大家比較能確定你硬體有沒有問題.
電路圖是沒有... 不過這是很簡單的電路,8051的TD/RD接到HIN232CP(MAX232),然後接到RS232 因為動作都有出來,電腦也有收到,所以應該不是接錯....
ss99ss
一般會員


發表:4
回覆:7
積分:2
註冊:2005-04-20

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-23 02:48:14 IP:218.166.xxx.xxx 未訂閱
引言:
引言: 有電路圖的話,煩請補貼一下.大家比較能確定你硬體有沒有問題.
電路圖是沒有... 不過這是很簡單的電路,8051的TD/RD接到HIN232CP(MAX232),然後接到RS232 因為動作都有出來,電腦也有收到,所以應該不是接錯....
我找到問題點了,就是MSComm.RThreshold必須=<一次送進來的BYTE 給大家參考一下
系統時間:2024-05-02 17:04:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!