Robofun 機器人論壇
標題:
VB6-->RS232-->8051 寫51端程式盲點
[打印本頁]
作者:
xu3u4rmp4
時間:
2009-11-26 17:21
標題:
VB6-->RS232-->8051 寫51端程式盲點
我要做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筆資料?
作者:
miaoichi
時間:
2009-12-30 10:38
這樣寫是對的,但是應該每收完1BYTE就要去處理,而不是連續收3BYTE
可以while (RI==0);{RI=0,a=SBUF;}之後加一行處理
因為接收程式不應該是一筆一筆地收,這樣一來不彈性,二來會容易錯
作者:
mac1
時間:
2009-12-30 14:52
不考慮用中斷作嗎?
在中斷裡也是一個byte看一次,
這樣就不一定只收 3 byte
而且在中斷也不會把全部 mcu 資源都耗在 while裡
逃避不作 中斷是沒有用的
遲早都會遇見用中斷的機會
如果功能越來越多的時候
會用中斷才會進步阿.......
作者:
miaoichi
時間:
2009-12-30 16:59
本帖最後由 miaoichi 於 2009-12-30 17:01 編輯
這樣感覺你對8051的中斷可能不熟
因為你在接收時,buf滿8位元後,會產生
一個中斷,然後會跳到一個中斷副程式
把你要的判斷或功能寫在裡面,
這樣就不會有問題了
因為mcu中斷一次然後處理完,第2個byte都還沒滿
比你想像中的還快,所以不會有這樣的問題
補充一下,你的mcu是會處理正常情況下,當rx收到data時,會一個bit的存起來
直到8個位元,然後產生一個中斷,處理完又回到正常狀態,又下一個中斷來
再去執行,這樣週而復始。
作者:
wendy0023
時間:
2012-3-6 17:37
親愛的朋友,
其實你可以賺得比現在快10倍,
錢賺得少不是你的錯,只是還沒找到方法!
誠心跟大家分享一個很棒的網路事業!!
讓智慧型自動化網路賺錢系統加倍你的收入!!
立即點入下列網址,
免費
試用系統90天〈需年滿20歲,無誠勿試〉
歡迎跟我一起打拼賺錢>>
http://litailhsu.blogspot.com/
>>
http://litailhsu.blogspot.com/
(註冊成功後,請
每天務必查收信箱
重要信息!!)
---------
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2