Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 12656|回復: 4
打印 上一主題 下一主題

VB6-->RS232-->8051 寫51端程式盲點

[複製鏈接]
xu3u4rmp4 該用戶已被刪除
跳轉到指定樓層
1#
發表於 2009-11-26 17:21:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我要做VB串列控制伺服馬達遇到問題
問題:
VB端  Command1按下     丟出3筆串列資料
Private Sub Command1_Click()
     MSComm1.Output = Chr$(1)
    MSComm1.Output = Chr$(2)
    MSComm1.Output = Chr$(3)
End Sub

問題是51的部分
while (RI==0);{RI=0,a=SBUF;}     //把VB端  1  給a  此時a=1
while (RI==0);{RI=0,b=SBUF;}     //把VB端  2  給b  此時b=1
while (RI==0);{RI=0,c=SBUF;}     //把VB端  3  給c  此時c=1
我的8051  接收連續的3筆資料這樣可以順利的接收嗎?
我的51程式要怎樣才能接收連續的3筆資料?
2#
發表於 2009-12-30 10:38:40 | 只看該作者
這樣寫是對的,但是應該每收完1BYTE就要去處理,而不是連續收3BYTE
可以while (RI==0);{RI=0,a=SBUF;}之後加一行處理
因為接收程式不應該是一筆一筆地收,這樣一來不彈性,二來會容易錯
3#
發表於 2009-12-30 14:52:42 | 只看該作者
不考慮用中斷作嗎?
在中斷裡也是一個byte看一次,
這樣就不一定只收 3 byte
而且在中斷也不會把全部 mcu 資源都耗在 while裡

逃避不作 中斷是沒有用的
遲早都會遇見用中斷的機會
如果功能越來越多的時候
會用中斷才會進步阿.......
4#
發表於 2009-12-30 16:59:12 | 只看該作者
本帖最後由 miaoichi 於 2009-12-30 17:01 編輯

這樣感覺你對8051的中斷可能不熟
因為你在接收時,buf滿8位元後,會產生
一個中斷,然後會跳到一個中斷副程式
把你要的判斷或功能寫在裡面,
這樣就不會有問題了
因為mcu中斷一次然後處理完,第2個byte都還沒滿
比你想像中的還快,所以不會有這樣的問題


補充一下,你的mcu是會處理正常情況下,當rx收到data時,會一個bit的存起來
直到8個位元,然後產生一個中斷,處理完又回到正常狀態,又下一個中斷來
再去執行,這樣週而復始。
5#
發表於 2012-3-6 17:37:36 | 只看該作者
親愛的朋友,
其實你可以賺得比現在快10倍,
錢賺得少不是你的錯,只是還沒找到方法!

誠心跟大家分享一個很棒的網路事業!!
讓智慧型自動化網路賺錢系統加倍你的收入!!
立即點入下列網址,免費試用系統90天〈需年滿20歲,無誠勿試〉
歡迎跟我一起打拼賺錢>> http://litailhsu.blogspot.com/
                              >> http://litailhsu.blogspot.com/


(註冊成功後,請每天務必查收信箱重要信息!!)



---------
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-11-23 16:03 , Processed in 0.052268 second(s), 9 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表