NRF905发不出去数据是什么情况?求大神看一下代码是否有问题

#include <reg52.h>
#include <ABSACC.h>
#include <intrins.h>
#include <stdio.h>

#define uint unsigned int                     
#define uchar unsigned char
    
#define BYTE_BIT0    0x01
#define BYTE_BIT1    0x02
#define BYTE_BIT2    0x04
#define BYTE_BIT3    0x08
#define BYTE_BIT4    0x10
#define BYTE_BIT5    0x20
#define BYTE_BIT6    0x40
#define BYTE_BIT7    0x80

bdata unsigned  char DATA_BUF;
#define DATA7    ((DATA_BUF&BYTE_BIT7) != 0)
#define DATA0   ((DATA_BUF&BYTE_BIT0) != 0)
sbit    flag    =DATA_BUF^7;
sbit    flag1    =DATA_BUF^0;

#define TxRxBuf_Len 4
unsigned char TxRxBuf[TxRxBuf_Len];
code TxAddress[4]={0xcc,0xcc,0xcc,0xcc};

sbit    TXEN=P2^1;
sbit    TRX_CE=P2^2;
sbit    PWR=P1^0;
sbit    MISO=P1^4;
sbit    MOSI=P1^5;
sbit    SCK=P1^6;
sbit    CSN=P1^7;
sbit    AM=P1^2;
sbit    DR=P1^3;
sbit    CD=P1^1;

sbit    call0=P3^2;
sbit  call1=P3^3;
sbit    led0=P3^6;
sbit    led1=P3^7;

#define WC        0x00
#define RC        0x10
#define WTP        0x20
#define RTP        0x21
#define WTA        0x22
#define RTA        0x23
#define RRP        0x24

unsigned char idata RFConf[11]=
{
  0x00,                             //ÅäÖÃÃüÁî//
  0x4c,                             //CH_NO,ÅäÖÃÆµ¶ÎÔÚ423MHZ
  0x0c,                             //Êä³ö¹¦ÂÊΪ10db,²»ÖØ·¢£¬½ÚµçΪÕý³£Ä£Ê½
  0x44,                             //µØÖ·¿í¶ÈÉèÖã¬Îª4×Ö½Ú
  0x04,0x04,                        //½ÓÊÕ·¢ËÍÓÐЧÊý¾Ý³¤¶ÈΪ32×Ö½Ú
  0xCC,0xCC,0xCC,0xCC,              //½ÓÊÕµØÖ·
  0x58,                              //CRC³äÐí£¬8λCRCУÑ飬ÍⲿʱÖÓÐźŲ»Ê¹ÄÜ£¬16M¾§Õñ
};

void Delay(int n)
{
    uint i;
    while(n--)
    for(i=0;i<80;i++);
}

unsigned char SpiRead(void)
{
    unsigned char j;
    for (j=0;j<8;j++)
    {
    DATA_BUF=DATA_BUF<<1;
        SCK=1;
        if (MISO)    //¶ÁÈ¡×î¸ß룬±£´æÖÁ×îĩβ£¬Í¨¹ý×óÒÆÎ»Íê³ÉÕû¸ö×Ö½Ú
        {
            DATA_BUF|=BYTE_BIT0;
        }
        else
        {
            DATA_BUF&=~BYTE_BIT0;
        }
        SCK=0;
     }
     return DATA_BUF;
}
void SpiWrite(unsigned char send)
{
    unsigned char i;
    DATA_BUF=send;
    for (i=0;i<8;i++)
    {
        if (DATA7)
        {
            MOSI=1;
        }
        else
        {
            MOSI=0;
        }
        SCK=1;
        DATA_BUF=DATA_BUF<<1;
        SCK=0;
    }
}

void nRF905Init(void)
{
  CSN=1;                        
    SCK=0;                        
    DR=1;                        
    AM=1;                        
    CD=1;                        
    PWR=1;                    
    TRX_CE=0;                    
    TXEN=0;                    
}

void Config905(void)
{
    uchar i;
    CSN=0;                        
//    SpiWrite(WC);                
    for (i=0;i<11;i++)    
    {
       SpiWrite(RFConf[i]);        
            
    }
    CSN=1;                    
}

void TxPacket(uchar *TxRxBuf)
{
    uchar i;
    CSN=0;
    SpiWrite(WTP);
    for (i=0;i<4;i++) 
    {
        SpiWrite(TxRxBuf[i]);
        
    }
    CSN=1;
    Delay(1);    
    CSN=0;        
    SpiWrite(WTA);                
    for (i=0;i<4;i++)        
    {
        SpiWrite(TxAddress[i]);
        
    }
    CSN=1;        
    TRX_CE=1;                    
    Delay(1);
    TRX_CE=0;                    
}

void SetTxMode(void)
{
    TRX_CE=0;
    TXEN=1;
    Delay(1);                 
}
void SetRxMode(void)
{
    TRX_CE=1;
    TXEN=0;
    Delay(1);                 
}

unsigned char CheckDR(void)        //¼ì²éÊÇ·ñÓÐÐÂÊý¾Ý´«Èë Data Ready
{
//    DR=1;
    if (DR==1&&TRX_CE==1&&TXEN==0)
    {
//        DR=0;
        return 1;
    }
    else
    {
        return 0;
    }
}

void RxPacket(void)                        
{
    uchar i;
    Delay(1);
//    TRX_CE=0;                    
    Delay(100);
  TRX_CE=0;
    CSN=0;                        
  Delay(1);
    SpiWrite(RRP);
    for (i = 0 ;i < 4 ;i++)
    { 
        TxRxBuf[i]=SpiRead();    
    }
    CSN=1;
  Delay(10);
    TRX_CE=1;                            
}
void  RX(void)
{
    SetRxMode();            
//    while (CheckDR()==0);
    Delay(10);
    RxPacket();
//    if(TxRxBuf[0]==0x29)
//    {
//        led0=0;
//        led1=0;
//    }
}


void main()
{
    int t;

    nRF905Init();
    Config905();
    while(1)
    {

        RX();
            if(call0==0) {while(!call0); TxRxBuf[0]=0x22;    t=1;}
            if(call1==0) {while(!call1); TxRxBuf[0]=0x33;t=1;}
            

            if(t==1)
            {
                t=0;
                SetTxMode();
              TxPacket(TxRxBuf);
                
            }
        }
}