欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6670|回復: 3
打印 上一主題 下一主題
收起左側(cè)

NRF24L01單片機驅(qū)動程序(收發(fā)用同一套代碼)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:161768 發(fā)表于 2017-5-24 03:20 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
收發(fā)用同一套代碼。
注意:

          單片機型號          STC12LE5A48S2

          1   
            用到串口輸出測試信息,按下唯一一個按鍵后,開始發(fā)送,接收端收到100個數(shù)據(jù)包后會打印一次OK,否者收到這100個包有錯,打印這100個數(shù)據(jù)包的序列號。

           2 晶振頻率22.1184M

           3
                  信號腳位定義:

                   sbit IRQ = P1^1;
                   sbit CE =  P1^0;
                   sbit CSN=  P1^4;
                   sbit SCK=  P1^5;
                   sbit MOSI= P1^6;
                   sbit MISO= P1^7;

唯一一個按鍵定義:
                   sbit KEY = P1^2;




單片機源程序如下:

  1. #include"config.h"
  2. #include"stdio.h"
  3. sbit led=P0^0;
  4. /*
  5. unsigned char xdata  re_send[100];
  6. void send_image(unsigned char *pic,unsigned char len)
  7. {
  8.   unsigned int send_k=0;
  9.   unsigned char temp1,temp2,temp3,a=0;
  10.   unsigned char mode_rec=0;
  11.   init_nrf24l01_io();
  12.   while(1)
  13.   {
  14.   ifnnrf_rx_mode();
  15.   IRQ=1;
  16.   SPI_RW_Reg(WRITE_REG+STATUS,0xff);
  17.   tx_buf[0]=0xaa;
  18.   tx_buf[1]=0x55;
  19.   tx_buf[2]=0xaa;
  20.   tx_buf[3]=0x55;
  21.   tx_buf[4]=0x01;
  22.   tx_buf[5]=(len/256);
  23.   tx_buf[6]=(len%256);
  24.   ifnnrf_tx_mode();
  25.   while(IRQ);
  26.   sta=SPI_Read(STATUS);
  27.   SPI_RW_Reg(WRITE_REG+STATUS,0xff);
  28.   if(sta&STA_MARK_TX)
  29.    {
  30.         com_printf("TX OK!",sta);
  31.     break;
  32.    }
  33.   else
  34.    {
  35.         com_printf("TX ER!",sta);
  36.     ifnnrf_CLERN_ALL();
  37.    }
  38.   }
  39.   while(1)
  40.   {
  41.   ifnnrf_rx_mode();
  42.   ifnnrf_CLERN_ALL();
  43.   while(IRQ==0);
  44.   _delay_us(1000);
  45.   if(IRQ==0)
  46.    {
  47.         sta=SPI_Read(STATUS);
  48.         SPI_RW_Reg(WRITE_REG+STATUS,0xff);
  49.         if(sta&STA_MARK_RX)
  50.           {
  51.            SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer;
  52.        if((rx_buf[0]==0xaa)&&(rx_buf[1]==0x55)&&(rx_buf[2]==0xaa)&&(rx_buf[3]==0x55)&&(rx_buf[0]==0x01))
  53.        break;
  54.           }
  55.     }
  56.    }
  57.    while(1)
  58.    {
  59.     IRQ=1;
  60.     SPI_RW_Reg(WRITE_REG+STATUS,0xff);
  61.     tx_buf[0]=(send_k/256);
  62.     tx_buf[1]=(send_k%256);
  63.         for(a=0;a<30;a++)
  64.         tx_buf[a+2]=*(pic+send_k*30+a);
  65.     ifnnrf_tx_mode();
  66.     while(IRQ);
  67.         if(send_k*30<len)
  68.         send_k++;
  69.         else
  70.         break;
  71.    }
  72.     while(1)
  73.     {
  74.           ifnnrf_rx_mode();
  75.           ifnnrf_CLERN_ALL();
  76.           while(IRQ==0);
  77.           _delay_us(1000);
  78.           if(IRQ==0)
  79.            {
  80.                 sta=SPI_Read(STATUS);
  81.                 SPI_RW_Reg(WRITE_REG+STATUS,0xff);
  82.                 if(sta&STA_MARK_RX)
  83.                   {
  84.                    SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer;
  85.                if((rx_buf[0]==0xaa)&&(rx_buf[1]==0x55)&&(rx_buf[2]==0xaa)&&(rx_buf[3]==0x55)&&(rx_buf[4]==0x02))
  86.                    {
  87.            mode_rec=rx_buf[4];
  88.                break;
  89.                    }
  90.                   }
  91.             }
  92.      }

  93.         while(temp2<mode_rec)
  94.     {
  95.           ifnnrf_rx_mode();
  96.           ifnnrf_CLERN_ALL();
  97.           while(IRQ==0);
  98.           _delay_us(1000);
  99.           if(IRQ==0)
  100.            {
  101.                 sta=SPI_Read(STATUS);
  102.                 SPI_RW_Reg(WRITE_REG+STATUS,0xff);
  103.                 if(sta&STA_MARK_RX)
  104.                   {
  105.                    SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer;
  106.            for(temp1=0;temp1<30;temp1++)
  107.                    re_send[temp2+temp1]=rx_buf[temp1];
  108.                   }
  109.             }
  110.      }
  111.    while(temp3<mode_rec)
  112.    {
  113.    
  114.    while(1)
  115.    {
  116.     IRQ=1;
  117.     SPI_RW_Reg(WRITE_REG+STATUS,0xff);
  118.     tx_buf[0]=0;
  119.     tx_buf[1]=temp3;
  120.         for(a=0;a<30;a++)
  121.         tx_buf[a+2]=*(pic+re_send[temp3]*30+a);
  122.     ifnnrf_tx_mode();
  123.     while(IRQ);
  124.         if(send_k*30<len)
  125.         send_k++;
  126.         else
  127.         break;
  128.    }
  129.    temp3++;
  130.    }

  131.       
  132. }       
  133. */  
  134. main()
  135. {
  136.   unsigned char i=0;

  137.   unsigned int count_send=0;
  138.   unsigned int rec_new=0;
  139.   unsigned int rec_old=0;
  140.   unsigned int rec_err=0;
  141.   unsigned int lock_key=0;

  142.   init_cpu();

  143.   init_nrf24l01_io();

  144.   for(i=0;i<32;i++)
  145.   {
  146.     tx_buf[i]=i;
  147.   }
  148.   TI=1;
  149.   printf("hello world");
  150.   printf("hello world");
  151.   ifnnrf_rx_mode();

  152.   while(1)
  153.   {

  154.      KEY=1;
  155.      while(KEY==0)
  156.          {
  157.            IRQ=1;
  158.            SPI_RW_Reg(WRITE_REG+STATUS,0xff);
  159.            count_send++;
  160.            tx_buf[30]=count_send/256;
  161.            tx_buf[31]=count_send%256;
  162.            ifnnrf_tx_mode();
  163.            while(IRQ);
  164.            sta=SPI_Read(STATUS);
  165.            SPI_RW_Reg(WRITE_REG+STATUS,0xff);
  166.            if(sta&STA_MARK_TX)
  167.            {
  168.         if((count_send%100)==0)
  169.                 {
  170.                 TI=1;
  171.         printf("TX OK!%d\n\t",count_send);
  172.                 }
  173.            }
  174.            else
  175.            {
  176.                 TI=1;
  177.         printf("TX ER!%2XH\n\t",sta);
  178.         ifnnrf_CLERN_ALL();
  179.            }
  180.            lock_key=1;

  181.          }        //發(fā)送
  182.          if(lock_key)
  183.          {
  184.          lock_key=0;
  185.          ifnnrf_rx_mode();
  186.          IRQ=1;
  187.          while(IRQ==0);
  188.          _delay_us(400);
  189.          }
  190.          //ifnnrf_rx_mode();  每次都切換到輸入 要過一段時間才能正常接收,而對方在一直發(fā)送,在發(fā)送過來后,這里還沒初始化完,于是數(shù)據(jù)錯誤
  191.        //ifnnrf_CLERN_ALL();
  192.          IRQ=1;
  193.          if(IRQ==0)
  194.          {
  195.           
  196.           sta=SPI_Read(STATUS);
  197.           SPI_RW_Reg(WRITE_REG+STATUS,0xff);
  198.           
  199.            if(sta&STA_MARK_RX)
  200.            {

  201.              SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer;
  202.              rec_new=(rx_buf[30]*256+rx_buf[31]);
  203.                  if(rec_new==(rec_old+1))
  204.                  {
  205.                     P2=0XFF;
  206.                         if((rec_new%100)==0)
  207. ……………………

  208. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
http://www.raoushi.com/bbs/dpj-85697-1.html






分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

無效樓層,該帖已經(jīng)被刪除
板凳
ID:457495 發(fā)表于 2020-8-10 13:44 | 只看該作者
樓主在嗎?  這款音頻解碼芯片切換音樂的時候會不會有卡頓,有什么比較好的解決方案呢。還是一直存在這種卡頓情況
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表