rx433.lst

来自「nrf24E1单通道带超时判断无线收发:调试完nrf9e5后就继续调试的」· LST 代码 · 共 164 行

LST
164
字号
C51 COMPILER V7.50   RX433                                                                 10/21/2008 13:14:09 PAGE 1   


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

line level    source

   1          /*******************************************
   2          无线接收的接收端程序:
   3          将接收到的字符显示在串口。
   4          
   5          ******************************************/
   6          
   7          #include <Nordic\reg24e1.h>
   8          
   9          struct RFConfig
  10          {
  11                  unsigned char n;
  12                  unsigned char buf[15];
  13          };
  14          
  15          typedef struct RFConfig RFConfig;
  16          
  17          #define   UART_BUFFER_SIZE    7       //定义串口缓冲区大小 8 bytes
  18          
  19          unsigned char UART_BUFFER[UART_BUFFER_SIZE+1];
  20          unsigned char countt;
  21          
  22          const RFConfig rxconf =
  23          {
  24              15,
  25              0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  26              0x87, 0x65, 0x43, 0x21, 0x83, 0x6c, 0x05
  27          };
  28          
  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          //串口发送1Byte
  40          void PutChar(char c)
  41          {
  42   1          while(!TI)                              //Wait until finished seri-port transmitting
  43   1              ;
  44   1              TI = 0;                                //Clear interrupt flag
  45   1          SBUF = c;                              //sending a byte
  46   1      }
  47          
  48          //串口发送字符串
  49          void PutString(const char *s,unsigned char strlen)
  50          {
  51   1              unsigned char k;
  52   1              //EIE &= 0xF0;
  53   1              for(k=1;k<=strlen;k++)
  54   1              {
  55   2                      PutChar(*(s+k));
C51 COMPILER V7.50   RX433                                                                 10/21/2008 13:14:09 PAGE 2   

  56   2              }
  57   1              //EIE |= 0x0F;
  58   1      }
  59          
  60          
  61          unsigned char SpiReadWrite(unsigned char b)
  62          {
  63   1              EXIF &= ~0x20;                  // Clear SPI interrupt        (EXIP.5=0)
  64   1              SPI_DATA = b;                   // Move byte to send to SPI data register
  65   1              while((EXIF & 0x20) == 0x00)    // Wait until SPI hs finished transmitting   (测试EXIF.5的状态)
  66   1                    ;
  67   1              return SPI_DATA;
  68   1      }
  69          
  70          
  71          void Receiver(void)
  72          {
  73   1              CE = 1;                             //进入接收模式
  74   1      
  75   1      
  76   1              while(DR1 == 0)                  //DR1=0表示数据未准备好,等待
  77   1                  ;
  78   1      T1 = ~T1;
  79   1              CE = 0; 
  80   1              //countt = 0;
  81   1      
  82   1              UART_BUFFER[0] = SpiReadWrite(0);
  83   1      
  84   1              for(countt = 1;countt <= UART_BUFFER[0];countt++)
  85   1                      UART_BUFFER[countt] = SpiReadWrite(0); 
  86   1      
  87   1      }
  88          
  89          //nRF24E1串口初始化
  90          void UART_Init(void)                
  91          {
  92   1              TH1 = 0xE6;                     // 9600@16MHz (when T1M=1 and SMOD=1)
  93   1              CKCON |= 0x30;                  // T1M=1 (/4 timer clock)
  94   1              PCON = 0x80;                    // SMOD=1 (double baud rate)
  95   1              SCON = 0x52;                    // Serial mode1, enable receiver
  96   1              TMOD = 0x20;                    // Timer1 8bit auto reload 
  97   1              TR1 = 1;                        // Start timer1  
  98   1              P0_ALT |= 0x06;
  99   1              P0_DIR  = 0x02;                 // P0.1 (RxD) is input
 100   1      }
 101          
 102          //nRF24E1无线接收模块初始化
 103          void Init(void)                     
 104          {
 105   1              unsigned char j;
 106   1              PWR_UP=1;
 107   1              Delay100us(30);                // Wait > 3ms 
 108   1              
 109   1              SPICLK = 0;                        // Max SPI clock (XTAL/8)
 110   1              SPI_CTRL = 0x02;               // Connect internal SPI controller to Radio
 111   1      
 112   1              CE = 0;                        // Configure Radio:
 113   1              CS = 1;
 114   1              Delay100us(0);
 115   1              for(j=0;j<rxconf.n;j++)
 116   1              {
 117   2                  SpiReadWrite(rxconf.buf[j]);
C51 COMPILER V7.50   RX433                                                                 10/21/2008 13:14:09 PAGE 3   

 118   2              }
 119   1              CS = 0;
 120   1      
 121   1      }
 122          
 123          void main(void)
 124          {
 125   1              UART_Init();    
 126   1              Init();
 127   1      
 128   1      
 129   1              //CE=1;                 //进入接收模式          
 130   1              while(1)
 131   1              {
 132   2                      Receiver();
 133   2                      PutString(UART_BUFFER,UART_BUFFER[0]);
 134   2              
 135   2              }
 136   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    210    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     25       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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