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