使用华荣汇带前向纠错的RF Modem,可以采用简单的监听_避让的方法来解决无线多机随机发送冲突的问题,大致思路(以WAP200B在无线表决的应用为例)如下:<br /> ;无线接收串口中断服务程序<br /> UARTRF: JB RI,UARTRCV<br /> CLR TI<br /> RETI<br /> UARTRCV:LCALL RXPRO ;接收数据处理<br /> LCALL RANDOM ;每接收到一个字节的数据,就调用一次随机延时程序<br /> RETI<br /><br /> ;1mS的定时器中断服务程序<br /> T1MSINT:PUSH ACC<br /> PUSH PSW<br /> CLR TF0<br /> DJNZ TX_DELAY,T1MSINTE<br /> MOV A,TX_NUM<br /> JZ T1MSINT1 ;没有数据发送就结束<br /> LCALL TXRF ;发送数据<br /> T1MSINT1:LCALL RANDOM <br /> T1MSINTE:POP PSW<br /> POP ACC<br /> RETI <br /><br /> ;计算延时,每包传送数据为64字节(无线传输时间32mS)<br /> RANDOM: PUSH DPH<br /> PUSH DPL<br /> RANDOM1:MOV A,TX_DELAY<br /> CLR C<br /> SUBB A,#80 ;如果后续延时已经超过80ms(根据发送数据包的大小来确定),就不再延时<br /> JNC RANDOME<br /> INC RAND_P<br /> MOV A,RAND_P<br /> ADD A,SYSID ;S_ID,设备ID<br /> ANL A,#0FH<br /> MOV RAND_P,A<br /> MOV DPTR,#RAND_TAB ;查随机数表<br /> MOVC A,@A+DPTR <br /> ADD A,TX_DELAY <br /> MOV TX_DELAY,A<br /> CLR C<br /> SUBB A,#40 ;如果调整后的延时时间小于40ms(取决于系统中数据包的大小),继续调整<br /> JC RANDOM1 <br /> RANDOME: POP DPL<br /> POP DPH<br /> RET<br />需要更详细的资料,请发mail给我:smartrf@263.net<br /> |
|