⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nrf24l01.lst

📁 此程序是基于51单片机的NRF24L01的无线通信模块的程序。
💻 LST
字号:
C51 COMPILER V3.20,  SN-50203013  NRF24L01                                                 04/23/08  17:20:23  PAGE 1   


DOS C51 COMPILER V3.20, COMPILATION OF MODULE NRF24L01
OBJECT MODULE PLACED IN NRF24L01.OBJ
COMPILER INVOKED BY: C:\C51\BIN\C51.EXE NRF24L01.C DB OE SMALL ROM(LARGE) 

stmt level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          #include "nRF24L01.h"
   4          #include "i2c.h"
   5          
   6          sbit CE=P1^7;
   7          sbit CSN=P1^4;
   8          sbit SCK=P1^5;
   9          sbit MOSI=P3^1;
  10          sbit MISO=P3^0;
  11          sbit IRQ=P3^2;
  12          sbit green=P1^6;
  13          sbit red=P3^4;
  14          
  15          unsigned char bdata sta;
  16          sbit RX_DR = sta^6;
  17          sbit TX_DS = sta^5;
  18          sbit MAX_RT = sta^4;
  19          
  20          unsigned char sn;
  21          char t_buff[1]={0};
  22          char r_buff[1]={0};
  23          bit flag=0;
  24          
  25          unsigned char config_t[1]={0x0e};
  26          unsigned char en_aa[1]={0x01};
  27          unsigned char en_rxaddr[1]={0x01};
  28          unsigned char setup_retr[1]={0x1a};//auto re_transmit delay is 586us;auto retransmit count is 10;
  29          unsigned char rf_ch[1]={40};
  30          unsigned char rf_setup[1]={0x0f};
  31          
  32          void init_io(void)
  33          {
  34   1       CE=0;
  35   1       CSN=1;
  36   1       SCK=0;
  37   1      }
  38          
  39          void init_int0(void)
  40          {
  41   1        EA=1;
  42   1        EX0=1;
  43   1        IT0=0;
  44   1      }
  45          
  46          void delay_ms(unsigned int x)
  47          {
  48   1          unsigned int i,j;
  49   1          for(i=0;i<x;i++)
  50   1          {
  51   2             j=108;
  52   2                 ;
  53   2             while(j--);
  54   2          }
  55   1      }
C51 COMPILER V3.20,  SN-50203013  NRF24L01                                                 04/23/08  17:20:23  PAGE 2   

  56          
  57          unsigned char SPI_R(unsigned char cn,unsigned char n,char *p)
  58          {
  59   1        unsigned char i,j;
  60   1        
  61   1        CSN=0;
  62   1        for(i=0;i<8;i++)
  63   1        {
  64   2          MOSI = (cn & 0x80);         // output 'byte', MSB to MOSI
  65   2          cn = (cn << 1);
  66   2          sn = (sn<<1);          // shift next bit into MSB..
  67   2          SCK = 1;                      // Set SCK high..
  68   2          sn |= MISO;       		  // capture current MISO bit
  69   2          SCK = 0;            		  // ..then set SCK low again
  70   2         }
  71   1         for(j=0;j<n;j++)
  72   1         {
  73   2           for(i=0;i<8;i++)
  74   2           {
  75   3           *p =(*p<<1);
  76   3           SCK=1;
  77   3           *p |= MISO;
  78   3           SCK=0;
  79   3           }
  80   2           p++;
  81   2         }
  82   1        CSN=1;
  83   1        return(sn);
  84   1      }
  85          
  86          unsigned char SPI_W(unsigned char cn,unsigned char n,char *p)
  87          {
  88   1        unsigned char i,j;
  89   1        CSN=0;
  90   1        for(i=0;i<8;i++)
  91   1        {
  92   2          MOSI = (cn & 0x80);         // output 'byte', MSB to MOSI
  93   2          cn = (cn << 1);
  94   2          sn = (sn<<1);          // shift next bit into MSB..
  95   2          SCK = 1;                      // Set SCK high..
  96   2          sn |= MISO;       		  // capture current MISO bit
  97   2          SCK = 0;            		  // ..then set SCK low again
  98   2        }
  99   1          for(j=0;j<n;j++)/*先写低字节的,再写高字节的*/
 100   1          {
 101   2            for(i=0;i<8;i++)
 102   2            {
 103   3              MOSI= *p&0x80;
 104   3              *p<<=1;
 105   3              SCK=1;
 106   3               _nop_();
 107   3              SCK=0;
 108   3              _nop_();
 109   3            }
 110   2            p++;
 111   2          }
 112   1         CSN=1;
 113   1        return(sn);
 114   1      }
 115          
 116          void ISR_int0(void) interrupt 0 using 1
 117          {
C51 COMPILER V3.20,  SN-50203013  NRF24L01                                                 04/23/08  17:20:23  PAGE 3   

 118   1        CE=0;
 119   1        sta=SPI_R(NOP,0,r_buff);
 120   1        if(TX_DS)
 121   1        {
 122   2          green=0;
 123   2          red=1;
 124   2        }
 125   1        if(MAX_RT)
 126   1        {
 127   2          red=0;
 128   2          green=1;
 129   2        }
 130   1        SPI_W(WRITE_REG + STATUS,1,&sta);//clear RX_DS or TX_DS or MAX_RT interrupt flag
 131   1        flag=1;
 132   1      }
 133          
 134          void main(void)
 135          {
 136   1        int temp,temp1;
 137   1        unsigned char SLAdd_R,SLAdd_W;
 138   1        unsigned char re_buff[2]={0x01,0x60};
 139   1        unsigned char pi_buff[1]={0x00};
 140   1        unsigned char r_buff[2]; 
 141   1        
 142   1        SLAdd_R=0x95;
 143   1        SLAdd_W=0X94; 
 144   1        
 145   1        init_io();
 146   1        init_int0();
 147   1        
 148   1        SPI_W(WRITE_REG + CONFIG,1,config_t);
 149   1        SPI_W(WRITE_REG + EN_AA,1,en_aa);
 150   1        SPI_W(WRITE_REG + EN_RXADDR,1,en_rxaddr);
 151   1        SPI_W(WRITE_REG + SETUP_RETR,1,setup_retr);
 152   1        SPI_W(WRITE_REG + RF_CH,1,rf_ch);
 153   1        SPI_W(WRITE_REG + RF_SETUP,1,rf_setup);
 154   1        
 155   1        sendnbyte(&SLAdd_W,2,re_buff);
 156   1        stop();
 157   1        sendnbyte(&SLAdd_W,1,pi_buff);
 158   1        delay_ms(240);
 159   1        recnbyte(&SLAdd_R,2,r_buff);
 160   1        
 161   1        loop:
 162   1        {
 163   2        SPI_W(WR_TX_PLOAD,2,r_buff);
 164   2        CE=1;
 165   2        while(1)
 166   2        {
 167   3          sendnbyte(&SLAdd_W,2,re_buff);
 168   3          stop();
 169   3          sendnbyte(&SLAdd_W,1,pi_buff);
 170   3          delay_ms(240);
 171   3          recnbyte(&SLAdd_R,2,r_buff);
 172   3          if(flag)
 173   3          {
 174   4            flag=0;
 175   4            red=1;
 176   4            green=1;
 177   4            goto loop;
 178   4          }
 179   3        }
C51 COMPILER V3.20,  SN-50203013  NRF24L01                                                 04/23/08  17:20:23  PAGE 4   

 180   2        }
 181   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    949    ----
   CONSTANT SIZE    =      3    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10      36
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -