随机延时冲突避让算法 点击:571 | 回复:0



JNC

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 2回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2007年8月03日
发表于:2007-08-24 16:33:00
楼主

  ;采用随机延时方式发送数据  

        ;无线接收串口中断服务程序
        UARTRF: JB      RI,UARTRCV
                CLR     TI
                RETI
        UARTRCV:LCALL   RXPRO           ;接收数据处理
                LCALL   RANDOM          ;每接收到一个字节的数据,就调用一次随机延时程序
                RETI

        ;1mS的定时器中断服务程序
        T1MSINT:PUSH    ACC
                PUSH    PSW
                CLR     TF0
                DJNZ    TX_DELAY,T1MSINTE
                MOV     A,TX_NUM
                JZ      T1MSINT1        ;没有数据发送就结束
                LCALL   TXRF            ;发送数据
        T1MSINT1:LCALL  RANDOM          
        T1MSINTE:POP    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 &nbs


热门招聘
相关主题

官方公众号

智造工程师