如何解決無線多機通信沖突問題
使用華榮匯帶前向糾錯的RF Modem,可以采用簡單的監(jiān)聽_避讓的方法來解決無線多機隨機發(fā)送沖突的問題,大致思路(以WAP200B在無線表決的應(yīng)用為例)如下:
;無線接收串口中斷服務(wù)程序
UARTRF: JB RI,UARTRCV
CLR TI
RETI
UARTRCV:LCALL RXPRO ;接收數(shù)據(jù)處理
LCALL RANDOM ;每接收到一個字節(jié)的數(shù)據(jù),就調(diào)用一次隨機延時程序
RETI
;1mS的定時器中斷服務(wù)程序
T1MSINT:PUSH ACC
PUSH PSW
CLR TF0
DJNZ TX_DELAY,T1MSINTE
MOV A,TX_NUM
JZ T1MSINT1 ;沒有數(shù)據(jù)發(fā)送就結(jié)束
LCALL TXRF ;發(fā)送數(shù)據(jù)
T1MSINT1:LCALL RANDOM
T1MSINTE:POP PSW
POP ACC
RETI
;計算延時,每包傳送數(shù)據(jù)為64字節(jié)(無線傳輸時間32mS)
RANDOM: PUSH DPH
PUSH DPL
RANDOM1:MOV A,TX_DELAY
CLR C
SUBB A,#80 ;如果后續(xù)延時已經(jīng)超過80ms(根據(jù)發(fā)送數(shù)據(jù)包的大小來確定),就不再延時
JNC RANDOME
INC RAND_P
MOV A,RAND_P
ADD A,SYSID ;S_ID,設(shè)備ID
ANL A,#0FH
MOV RAND_P,A
MOV DPTR,#RAND_TAB ;查隨機數(shù)表
MOVC A,@A+DPTR
ADD A,TX_DELAY
MOV TX_DELAY,A
CLR C
SUBB A,#40 ;如果調(diào)整后的延時時間小于40ms(取決于系統(tǒng)中數(shù)據(jù)包的大小),繼續(xù)調(diào)整
JC RANDOM1
RANDOME: POP DPL
POP DPH
RET
需要更詳細(xì)的資料,請發(fā)mail給我:smartrf@263.net
文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。