OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2410|回复: 0

用51单片机做NRF24L01的无线收发实验,一发一收,从机应该循环收到ABCDEFGH,但现在却收到ABCDEFGH HHHHHHHH HHHHHHHH...

[复制链接]

5

主题

7

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2016-3-6
在线时间
9 小时
发表于 2016-3-18 19:52:01 | 显示全部楼层 |阅读模式
主函数
#include "NRF24L01.H"                  
unsigned long i;
unsigned char status;
unsigned char Tx_Buf1[8] = {'A','B','C','D','E','F','G','H'};
unsigned char RX_BUF_DATA[24] = {0};
void main()
{
    int i = 0;
    CE = 0;
    SCK = 0;
    CSN = 1;
    Serial_Init();//初始化串口
//发送 模式代码
#if MODE
        TX_Mode();
        Delay(100);
    while(1)
    {
                        Transmit(Tx_Buf1);
                        while(CheckACK());
                        P1 &= 0xfe;
                        Delay(100);
        }
//接收代码
#else
                        RX_Mode();
                    Delay(100);//防止编译警告
                       
                        while( 1 )
                        {
                                {
                                        if(nRF24L01_RxPacket(Rx_Buf))
                                {

                                                Serial_SendString(Rx_Buf);

                                }       
                                }
                        }
#endif
                                       
}


void ser() interrupt 4
{
        static char i = 0;
        ES=0;
    if(RI)
    {
                RI=0;

            Tx_Buf=SBUF;
               
                i++;

                if ( 8 == i )
                {
                       
                        i = 0;
                        SerialRevFlag = 1;
                }
               
        }
    ES=1;
}


本来应该循环收到的是ABCDEFGH......,但实际上收到的是ABCDEFGH HHHHHHHH  HHHHHHHH  HHHHHHHH.....,不知道程序到底哪儿有问题
头文件里的一些函数定义如下:
void Serial_Init(void)
{
        TMOD=0x20;                   //用定时器设置串口波特率
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        REN=1;          //串口初始化
        SM0=0;
        SM1=1;
        EA=1;           //开启总中断
        ES=1;
}

void Serial_SendChar(uchar date)
{
    ES=0;
        SBUF=date;                         //发送数据a到SBUF,即将单片机的数据发送到计算机
        while(!TI);
        TI=0;
        ES=1;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-9-28 23:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表