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

📄 rfwakeup.lst

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


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

line level    source

   1          #include <reg24e1.h>
   2          #define TICK   10e-3                    // 10ms (100Hz) tick
   3          /*  LED1-LED4  */
   4          sbit LED1      = P0^7;
   5          sbit LED2      = P0^6;
   6          sbit LED3      = P0^5;
   7          sbit LED4      = P0^4;
   8          const char Test=0xAA;
   9          struct RFConfig
  10          {
  11              unsigned char n;
  12              unsigned char buf[15];
  13          };
  14          
  15          typedef struct RFConfig RFConfig;
  16          
  17          #define ADDR_INDEX  8   // Index to address bytes in RFConfig.buf 
  18          #define ADDR_COUNT  4   // Number of address bytes
  19          const RFConfig tconf =
  20          {
  21              15,
  22              0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  23              0xaa, 0xbb, 0x12, 0x34, 0x83, 0x6c, 0x04
  24          };
  25          const RFConfig rconf =
  26          {
  27              15,
  28              0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  29              0xaa, 0xbb, 0x12, 0x34, 0x83, 0x6c, 0x05
  30          };
  31          
  32          void Delay100us(volatile unsigned char n) reentrant
  33          {
  34   1          unsigned char i;
  35   1          while(n--)
  36   1              for(i=0;i<35;i++)
  37   1                  ;
  38   1      }
  39          
  40          void Delayms(volatile unsigned char n)  reentrant
  41          {
  42   1          unsigned char j;
  43   1          while(n--)
  44   1              for(j=0;j<10;j++)
  45   1                      Delay100us(10);
  46   1      
  47   1      }
  48          void WriteRTC(unsigned int m)
  49          {
  50   1         while(REGX_CTRL & 0x10)             // Wait for the interface to be ready
  51   1              ;
  52   1          REGX_MSB = m >> 8;
  53   1          REGX_LSB = m & 0xff;
  54   1          REGX_CTRL = 0x0a;
  55   1        while(REGX_CTRL & 0x10)             // Wait for the interface to be ready
C51 COMPILER V7.20   RFWAKEUP                                                              07/08/2008 19:45:20 PAGE 2   

  56   1              ;
  57   1          
  58   1      }unsigned char SpiReadWrite(unsigned char b)
  59          {
  60   1          EXIF &= ~0x20;                  // Clear SPI interrupt
  61   1          SPI_DATA = b;                   // Move byte to send to SPI data register
  62   1          while((EXIF & 0x20) == 0x00)    // Wait until SPI hs finished transmitting
  63   1              ;
  64   1          return SPI_DATA;
  65   1      }
  66          
  67          void Init_Receiver(void)
  68          {
  69   1          unsigned char b;
  70   1      
  71   1          CS = 1;
  72   1          Delay100us(0);
  73   1          for(b=0;b<rconf.n;b++)
  74   1          {
  75   2              SpiReadWrite(rconf.buf[b]);
  76   2          }
  77   1          CS = 0;
  78   1          
  79   1          CE = 1;
  80   1      }       
  81          
  82          void TransmitPacket(unsigned char b)
  83          {
  84   1          unsigned char i;
  85   1          CE = 1;
  86   1          Delay100us(0);
  87   1          for(i=0;i<ADDR_COUNT;i++)
  88   1              SpiReadWrite(tconf.buf[ADDR_INDEX+i]);
  89   1          SpiReadWrite(b);
  90   1          CE = 0;
  91   1          Delay100us(3);                  // Wait ~300us   
  92   1      }
  93          void Init_transmit(void)
  94          {
  95   1            unsigned char b;
  96   1          
  97   1          CS = 1;
  98   1          Delay100us(0);
  99   1          for(b=0;b<tconf.n;b++)
 100   1          {
 101   2              SpiReadWrite(tconf.buf[b]);
 102   2          }
 103   1          CS = 0;
 104   1              }
 105          
 106          
 107          
 108          void RTCISR(void) interrupt 12
 109          {
 110   1         unsigned char Temp;
 111   1         EA=0;
 112   1         WDTI=0;
 113   1         LED3=0;
 114   1         Delayms(20);  
 115   1         LED3=1;
 116   1         PWR_UP=1;
 117   1         Delay100us(30);
C51 COMPILER V7.20   RFWAKEUP                                                              07/08/2008 19:45:20 PAGE 3   

 118   1         SPICLK=0;
 119   1         SPI_CTRL=0x02;
 120   1      
 121   1         Init_transmit();
 122   1         TransmitPacket(Test);
 123   1         Init_Receiver();
 124   1      
 125   1         Delayms(50);
 126   1         if(DR1==1)
 127   1         {
 128   2            Temp=SpiReadWrite(0);
 129   2                if(Temp==Test)
 130   2                 {
 131   3                   LED2=0;
 132   3               Delayms(20);  
 133   3               LED2=1;
 134   3                       }
 135   2                 }
 136   1      
 137   1         EA=1;
 138   1         }
 139          
 140          void main(void)
 141          {
 142   1          P0_ALT=0x06;
 143   1              P0_DIR=0x06;
 144   1          EA=1;
 145   1          EWDI=1;
 146   1      
 147   1              LED1=0;
 148   1          Delayms(20);   
 149   1          LED1=1;
 150   1      
 151   1          LED2=0;
 152   1          Delayms(20);  
 153   1          LED2=1;
 154   1      
 155   1          LED3=0;
 156   1          Delayms(20);  
 157   1          LED3=1;
 158   1       
 159   1          LED4=0;
 160   1          Delayms(20);  
 161   1          LED4=1;
 162   1        
 163   1          WriteRTC(5/TICK);
 164   1              while(1)
 165   1        {
 166   2            LED1=0;
 167   2            Delayms(20);  
 168   2            LED1=1;
 169   2            //CK_CTRL = 0x01;
 170   2                }
 171   1      
 172   1        }
 173          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    364    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
C51 COMPILER V7.20   RFWAKEUP                                                              07/08/2008 19:45:20 PAGE 4   

   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33    ----
   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 + -