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

📄 rf_wakupb.lst

📁 NRF24E1的唤醒功能
💻 LST
字号:
C51 COMPILER V7.20   RF_WAKUPB                                                             07/08/2008 19:47:09 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE RF_WAKUPB
OBJECT MODULE PLACED IN RF_wakupB.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE RF_wakupB.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg24e1.h>
   2          /*  LED1-LED4  */
   3          sbit LED1      = P0^7;
   4          sbit LED2      = P0^6;
   5          sbit LED3      = P0^5;
   6          sbit LED4      = P0^4;
   7          const char Test=0xAA;
   8          struct RFConfig
   9          {
  10              unsigned char n;
  11              unsigned char buf[15];
  12          };
  13          
  14          typedef struct RFConfig RFConfig;
  15          
  16          #define ADDR_INDEX  8   // Index to address bytes in RFConfig.buf 
  17          #define ADDR_COUNT  4   // Number of address bytes
  18          const RFConfig tconf =
  19          {
  20              15,
  21              0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  22              0xaa, 0xbb, 0x12, 0x34, 0x83, 0x6c, 0x04
  23          };
  24          const RFConfig rconf =
  25          {
  26              15,
  27              0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  28              0xaa, 0xbb, 0x12, 0x34, 0x83, 0x6c, 0x05
  29          };
  30          
  31          void Delay100us(volatile unsigned char n)
  32          {
  33   1          unsigned char i;
  34   1          while(n--)
  35   1              for(i=0;i<35;i++)
  36   1                  ;
  37   1      }
  38          
  39          void Delayms(volatile unsigned char n)
  40          {
  41   1          unsigned char j;
  42   1          while(n--)
  43   1              for(j=0;j<10;j++)
  44   1                      Delay100us(10);
  45   1      
  46   1      }
  47          
  48          unsigned char SpiReadWrite(unsigned char b)
  49          {
  50   1          EXIF &= ~0x20;                  // Clear SPI interrupt
  51   1          SPI_DATA = b;                   // Move byte to send to SPI data register
  52   1          while((EXIF & 0x20) == 0x00)    // Wait until SPI hs finished transmitting
  53   1              ;
  54   1          return SPI_DATA;
  55   1      }
C51 COMPILER V7.20   RF_WAKUPB                                                             07/08/2008 19:47:09 PAGE 2   

  56          
  57          void Init_Receiver(void)
  58          {
  59   1          unsigned char b;
  60   1      
  61   1          CS = 1;
  62   1          Delay100us(0);
  63   1          for(b=0;b<rconf.n;b++)
  64   1          {
  65   2              SpiReadWrite(rconf.buf[b]);
  66   2          }
  67   1          CS = 0;
  68   1          
  69   1          CE = 1;
  70   1      }       
  71          
  72          void TransmitPacket(unsigned char b)
  73          {
  74   1          unsigned char i;
  75   1          CE = 1;
  76   1          Delay100us(0);
  77   1          for(i=0;i<ADDR_COUNT;i++)
  78   1              SpiReadWrite(tconf.buf[ADDR_INDEX+i]);
  79   1          SpiReadWrite(b);
  80   1          CE = 0;
  81   1          Delay100us(3);                  // Wait ~300us   
  82   1      }
  83          void Init_transmit(void)
  84          {
  85   1            unsigned char b;
  86   1          
  87   1          CS = 1;
  88   1          Delay100us(0);
  89   1          for(b=0;b<tconf.n;b++)
  90   1          {
  91   2              SpiReadWrite(tconf.buf[b]);
  92   2          }
  93   1          CS = 0;
  94   1              }
  95          
  96          void main(void)
  97          {
  98   1          unsigned char Temp;
  99   1          P0_ALT=0x06;
 100   1              P0_DIR=0x06;
 101   1          PWR_UP=1;
 102   1              Delay100us(30);
 103   1              SPICLK=0;
 104   1              SPI_CTRL=0x02;
 105   1              Init_Receiver();
 106   1              
 107   1              LED1=0;
 108   1          Delayms(20);   
 109   1          LED1=1;
 110   1      
 111   1          LED2=0;
 112   1          Delayms(20);  
 113   1          LED2=1;
 114   1      
 115   1          LED3=0;
 116   1          Delayms(20);  
 117   1          LED3=1;
C51 COMPILER V7.20   RF_WAKUPB                                                             07/08/2008 19:47:09 PAGE 3   

 118   1       
 119   1          LED4=0;
 120   1          Delayms(20);  
 121   1          LED4=1;
 122   1      
 123   1              while(1)
 124   1        {
 125   2           if(DR1==1)
 126   2               {
 127   3                  Temp=SpiReadWrite(0);
 128   3                      if(Temp==Test)
 129   3                      {
 130   4                         Init_transmit();
 131   4                 TransmitPacket(Test);
 132   4                 Init_Receiver();
 133   4                 LED1=0;
 134   4                 Delayms(20);   
 135   4                 LED1=1;
 136   4                         }
 137   3                       }
 138   2      
 139   2                 }
 140   1              }
 141          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    242    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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