找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1136|回复: 2
打印 上一主题 下一主题
收起左侧

nrf24l01在传送数据中不时的跳出其他数字,是哪里出错了么?

[复制链接]
跳转到指定楼层
楼主
ID:678740 发表于 2020-5-2 16:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用nrf24l01向另一块单片机传送一个含有5个数字的数组,然后用数码管显示,显示中隔几秒就会跳出数字35,这表示什么呀?我把中断关了出现的频率会低一些,但是后会跳出35.求解呀!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:648281 发表于 2020-5-2 16:52 | 只看该作者
你好!
1、没有程序
2、没有硬件连接图
3、不知道你要实现什么
4、更不知道怎么来找出问题
回复

使用道具 举报

板凳
ID:678740 发表于 2020-5-18 23:09 | 只看该作者
51hei**1140 发表于 2020-5-2 16:52
你好!
1、没有程序
2、没有硬件连接图

谢谢回复!!发那么多问题终于有人回复了,看到的有点晚,希望您有时间看到能够再次回复。谢谢!
我想用一个单片机向另一个发送一组数据,然后用数码管显示出来,
//发射的主函数
void main(void)
{       
        char i=0;
        int x=0,y=0;
        unsigned char sta;
        delay_ms(1000);
        init_io();                //引脚初始化
        //delay_ms(1000);
        TX_Mode();
        while(1)
        {
                readadc(0,1);
                tx_buf[0]=ad1;
                tx_buf[1]=ad2;
                CE = 0;
          SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); //将数据送入发射缓冲区
                CE = 1;
                while(IRQ);
                sta=SPI_Read(STATUS);
                SPI_RW_Reg(FLUSH_TX, 0xff);                                                                                                        //清除发射缓冲区
                SPI_RW_Reg(WRITE_REG+STATUS,sta);                                                                                //清除各种中断标志
                delay_ms(50);
               
        }
}

void readadc(unsigned char add1,add2)
{
        ad1=read_adc(add1);
        ad1=read_adc(add1);
        ad2=read_adc(add2);
        ad2=read_adc(add2);
}
/**************/
//接受端
void main(void)
{
        uchar sta;
       
        Timer1Init();
        Timer0Init();
        init_io();                                                                //初始化IO引脚
        delay_ms(1000);
        RX_Mode();                                                                //配置为接收模式
        while(1)
        {
                sta=SPI_Read(STATUS);                //读取芯片的状态寄存器
          if((sta & 0x40) != 0)                //是否发生了接收数据完成的中断
          {                                                                                                //是的话,将收到的数据存到数组rx_buf里
                   SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);
                }
                if(rx_buf[4]==0x23&&rx_buf[0]!=35)//判断收到的数据是不是0x23
                {       
                       
                        pwm_chage();
                        dpy_chage_display(rx_buf[0]/100,rx_buf[0]%100/10,rx_buf[0]%10,PWM/10,PWM%10,rx_buf[1]/100,rx_buf[1]%100/10,rx_buf[1]%10);
                }
                        SPI_RW_Reg(FLUSH_RX,0xff);        //清除接收缓冲器
                        SPI_RW_Reg(WRITE_REG+STATUS,sta);//清除接收中断标志
                        delay_ms(2);
        }
}
void time0() interrupt 1
{
        dpy_display();
}
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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