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