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

📄 transmitter.lst

📁 关于NORDIC公司的NRF24E1芯片的单片机编程,使其自动载入EPPROM中内容
💻 LST
字号:
C51 COMPILER V7.50   TRANSMITTER                                                           11/20/2006 22:09:40 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE TRANSMITTER
OBJECT MODULE PLACED IN Transmitter.OBJ
COMPILER INVOKED BY: D:\keil\C51\BIN\C51.EXE Transmitter.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*=====================================================================
   2           * 
   3           *由 Keil C51 V7.50 编译通过
   4           *==============================================================================
   5          */
   6          #include <reg24e1.h>
   7          
   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          
  19          
  20          const RFConfig tconf =
  21          {
  22              15,                          //If the nRF2401 subsystem is to be configured for 2 channel RX in ShockBurst, a
  23                              //total of 120 bits must be shifted in during the first configuration
  24                             // after VDD is applied.                是不是不要120--143bit(Reserved for testing) 了
  25              0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                     //数据包是8位8位的传,地址是32位,需要CRC,是16位,
  26              0xaa, 0xbb, 0x12, 0x34, 0x83, 0x6f, 0x05                       //1 Mbps的 RF Data Rate,16MHz的时钟频率,调制于2404MHz.
  27          };                      //      The MSB bit should be loaded first into the configuration register
  28          
  29          
  30          void Delay100us(volatile unsigned char n)
  31          {
  32   1          unsigned char i;
  33   1          while(n--)
  34   1              for(i=0;i<35;i++)
  35   1                  ;
  36   1      }
  37          
  38          void Delayms(volatile unsigned char n)
  39          {
  40   1          unsigned char j;
  41   1          while(n--)
  42   1              for(j=0;j<10;j++)
  43   1                      Delay100us(10);
  44   1      
  45   1      }
  46          
  47          unsigned char SpiReadWrite(unsigned char b)
  48                          // Output data is shifted on negedge SCK, and input data is read on posedge SCK
  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.50   TRANSMITTER                                                           11/20/2006 22:09:40 PAGE 2   

  56          
  57          void TransmitPacket(unsigned char b)
  58          {
  59   1          unsigned char i;
  60   1          CE = 1;
  61   1          Delay100us(0);
  62   1          for(i=0;i<ADDR_COUNT;i++)
  63   1              SpiReadWrite(tconf.buf[ADDR_INDEX+i]);   //先传4bytes的地址(0xaa, 0xbb, 0x12, 0x34)
  64   1          SpiReadWrite(b);
  65   1          CE = 0;
  66   1          Delay100us(3);                               // Wait 300us   
  67   1      }
  68          
  69          unsigned char GetChar(void)
  70          {
  71   1          unsigned char c;
  72   1          while(!RI)
  73   1              ;
  74   1          RI = 0;
  75   1          c=SBUF ;
  76   1          return c;
  77   1      }
  78          
  79          void Transmitter(void)
  80          {
  81   1          unsigned char b;
  82   1          
  83   1          CS = 1;
  84   1          Delay100us(0);
  85   1          for(b=0;b<tconf.n;b++)
  86   1          {
  87   2              SpiReadWrite(tconf.buf[b]);
  88   2          }
  89   1          CS = 0;
  90   1          b=GetChar();                      
  91   1          TransmitPacket(b);          // Transmit data
  92   1      }
  93          
  94          
  95          
  96          void Init(void)
  97          {
  98   1      
  99   1      //  Port ini
 100   1          P0_ALT = 0x06;                    // Select alternate functions on pins P0.1 and P0.2,  TXD RXD 
 101   1               
 102   1          PWR_UP = 1;                    // Turn on Radio
 103   1          Delay100us(30);               // Wait > 3ms 
 104   1          SPICLK = 0;                  // Max SPI clock (XTAL/8)
 105   1          SPI_CTRL = 0x02;            // Connect internal SPI controller to Radio CH1
 106   1      
 107   1      //  serial communication ini
 108   1          TH1 = 243;           // 19200@16MHz (when T1M=1 and SMOD=1)     19200=(2/32)*{(16M/4)*[1/(256-243)]} 
 109   1          CKCON |= 0x10;      // T1M=1 (/4 timer clock)                                            
 110   1          PCON = 0x80;       // SMOD=1 (double baud rate)
 111   1          SCON = 0x52;      // Serial mode 1, enable receiver
 112   1          TMOD = 0x20;     // Timer1 8bit auto reload                 
 113   1          TCON = 0x40;    // Start timer1                             
 114   1      }    
 115          
 116          
 117          void main(void)
C51 COMPILER V7.50   TRANSMITTER                                                           11/20/2006 22:09:40 PAGE 3   

 118          {
 119   1          Init();
 120   1          while(1)
 121   1                   {
 122   2                   Transmitter();
 123   2                   Delayms(500);              //间隔0.5s发一次
 124   2                   }       
 125   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    187    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16       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 + -