|
发表于 2010-12-18 21:35:55
|
显示全部楼层
利用网上当下来的程序如下,但是发不出第二个数据!也找不到原因,请不吝赐教!否则我会蛋疼:
BYTE Transmit(BYTE __xdata *buff,BYTE bytes) //发送
{
BYTE i,BytesToSend; //
RFIF = 0;
RFTXRXIF = 0;
BytesToSend = bytes ;// 数据包长度就是byte,为方便实际应用中增加其他字节,定义了bytestosend变量
if(BytesToSend <= 64)
{
SIDLE(); // Exit RX / TX, turn off frequency synthesizer and exit
STX(); // Switch radio to TX
while(RFTXRXIF == 0); // 等待发送结束
RFTXRXIF = 0; // 清除发送标志
RFD = BytesToSend;
while(RFTXRXIF == 0); // 等待发送结束
RFTXRXIF = 0; // 清除发送标志
for(i=0;i<( BytesToSend-1);i++)
{
RFD = *buff++; // 发送数据
while(RFTXRXIF == 0); // 等待发送结束=====》》》》这里永远不结束,发不出第二个数据了!!!!
RFTXRXIF = 0; // 清除发送标志
}
RFD = *buff; // 发送最后一BYTE
while(RFIF&IRQ_DONE == 0); // 等待发送结束
RFIF &= ~IRQ_DONE; //清结束标志
RFIF &= ~IRQ_DONE; // Tx/Rx completed, clear interrupt flag
S1CON &= ~0x03; // Clear the general RFIF interrupt registers
return TRUE;
}
else
{
return FALSE;
}
} |
|