发新话题
打印

如何解决无线多机通信冲突问题

如何解决无线多机通信冲突问题

使用华荣汇带前向纠错的RF Modem,可以采用简单的监听_避让的方法来解决无线多机随机发送冲突的问题,大致思路(以WAP200B在无线表决的应用为例)如下:

;
无线接收串口中断服务程序


UARTRF: JB
RI,UARTRCV


CLR
TI


RETI


UARTRCVCALL
RXPRO
;
接收数据处理


LCALL
RANDOM
;
每接收到一个字节的数据,就调用一次随机延时程序


RETI



;1mS
的定时器中断服务程序


T1MSINTUSH
ACC


PUSH
PSW


CLR
TF0


DJNZ
TX_DELAY,T1MSINTE


MOV
A,TX_NUM


JZ
T1MSINT1

;
没有数据发送就结束


LCALL
TXRF
;
发送数据


T1MSINT1CALL
RANDOM


T1MSINTEOP
PSW


POP
ACC


RETI




;
计算延时,每包传送数据为64字节(无线传输时间32mS)


RANDOM: PUSH
DPH



PUSH
DPL



RANDOM1:MOV
A,TX_DELAY



CLR

C



SUBB
A,#80
;
如果后续延时已经超过80ms(根据发送数据包的大小来确定),就不再延时



JNC

RANDOME




INC
RAND_P


MOV
A,RAND_P


ADD
A,SYSID
;S_ID
,设备ID



ANL
A,#0FH


MOV
RAND_P,A


MOV
DPTR,#RAND_TAB
;
查随机数表


MOVC
A,@A+DPTR



ADD
A,TX_DELAY



MOV
TX_DELAY,A


CLR
C


SUBB
A,#40
;
如果调整后的延时时间小于40ms(取决于系统中数据包的大小),继续调整


JC
RANDOM1


RANDOME:
POP
DPL


POP
DPH


RET

需要更详细的资料,请发mail给我:smartrf@263.net

TOP

发新话题