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

📄 rx433.lst

📁 24e1根据接收字节判断的无线发送程序
💻 LST
字号:
C51 COMPILER V7.50   RX433                                                                 10/21/2008 13:22:32 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    4       //定义串口缓冲区大小 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          0x28   :通道2数据接收包的位数(此处为40bit即5个字节)  
  31          
  32          0x28   :通道1数据接收包的位数
  33          
  34          0x00, 0x00, 0x00, 0x00, 0x00:CH2地址
  35          发射地址在发射时再设置。
  36          0x00, 0x12, 0x34, 0x56, 0x78:CH1地址(高于设定的地址宽度补0,即本行的第一个字节)
  37          
  38          0x83=100000 11        前6位:四个字节(32位)地址宽度(CH1及CH2);
  39                                                后2位:CRC使能且为16bit
  40          
  41          0x6C=0 1 1 011 00     B7最高位:0表示一通道(1表示2通道)
  42                                                    B6      :1表示收发子系统处于ShockBurst模式(0表示直接模式)
  43                                                    B5      :1表示1Mbps(0为250kbps)
  44                                B4-B2   :011表示外部的晶振为16M
  45                                                    B1-B0   :00表示发射功率为-20dBm
  46          
  47          0x04=0000010  0       B7-B1   :表示发射频率 和 CH1接收频率
  48                                B0          :0表示发射模式(1为接收模式)  
  49          */
  50          
  51          //延时函数
  52          void Delay100us(volatile unsigned char n)
  53          {
  54   1              unsigned char i;
  55   1              while(n--)
C51 COMPILER V7.50   RX433                                                                 10/21/2008 13:22:32 PAGE 2   

  56   1                      for(i=0;i<35;i++)
  57   1                          ;
  58   1      }
  59          
  60          //串口发送1Byte
  61          void PutChar(char c)
  62          {
  63   1          while(!TI)                              //Wait until finished seri-port transmitting
  64   1              ;
  65   1              TI = 0;                                //Clear interrupt flag
  66   1          SBUF = c;                              //sending a byte
  67   1      }
  68          
  69          //串口发送字符串
  70          void PutString(const char *s,unsigned char strlen)
  71          {
  72   1              unsigned char k;
  73   1              //EIE &= 0xF0;
  74   1              for(k=1;k<=strlen;k++)
  75   1              {
  76   2                      PutChar(*(s+k));
  77   2              }
  78   1              //EIE |= 0x0F;
  79   1      }
  80          
  81          
  82          unsigned char SpiReadWrite(unsigned char b)
  83          {
  84   1              EXIF &= ~0x20;                  // Clear SPI interrupt        (EXIP.5=0)
  85   1              SPI_DATA = b;                   // Move byte to send to SPI data register
  86   1              while((EXIF & 0x20) == 0x00)    // Wait until SPI hs finished transmitting   (测试EXIF.5的状态)
  87   1                    ;
  88   1              return SPI_DATA;
  89   1      }
  90          
  91          
  92          void Receiver(void)
  93          {
  94   1              CE = 1;                             //进入接收模式
  95   1      
  96   1      
  97   1              while(DR1 == 0)                  //DR1=0表示数据未准备好,等待
  98   1                  ;
  99   1      T1 = ~T1;
 100   1              CE = 0; 
 101   1              //countt = 0;
 102   1      
 103   1              UART_BUFFER[0] = SpiReadWrite(0);
 104   1      
 105   1              for(countt = 1;countt <= UART_BUFFER[0];countt++)
 106   1                      UART_BUFFER[countt] = SpiReadWrite(0); 
 107   1      
 108   1      }
 109          
 110          //nRF24E1串口初始化
 111          void UART_Init(void)                
 112          {
 113   1              TH1 = 0xE6;                     // 9600@16MHz (when T1M=1 and SMOD=1)
 114   1              CKCON |= 0x30;                  // T1M=1 (/4 timer clock)
 115   1              PCON = 0x80;                    // SMOD=1 (double baud rate)
 116   1              SCON = 0x52;                    // Serial mode1, enable receiver
 117   1              TMOD = 0x20;                    // Timer1 8bit auto reload 
C51 COMPILER V7.50   RX433                                                                 10/21/2008 13:22:32 PAGE 3   

 118   1              TR1 = 1;                        // Start timer1  
 119   1              P0_ALT |= 0x06;
 120   1              P0_DIR  = 0x02;                 // P0.1 (RxD) is input
 121   1      }
 122          
 123          //nRF24E1无线接收模块初始化
 124          void Init(void)                     
 125          {
 126   1              unsigned char j;
 127   1              PWR_UP=1;
 128   1              Delay100us(30);                // Wait > 3ms 
 129   1              
 130   1              SPICLK = 0;                        // Max SPI clock (XTAL/8)
 131   1              SPI_CTRL = 0x02;               // Connect internal SPI controller to Radio
 132   1      
 133   1              CE = 0;                        // Configure Radio:
 134   1              CS = 1;
 135   1              Delay100us(0);
 136   1              for(j=0;j<rxconf.n;j++)
 137   1              {
 138   2                  SpiReadWrite(rxconf.buf[j]);
 139   2              }
 140   1              CS = 0;
 141   1      
 142   1      }
 143          
 144          void main(void)
 145          {
 146   1              UART_Init();    
 147   1              Init();
 148   1      
 149   1      
 150   1              //CE=1;                 //进入接收模式          
 151   1              while(1)
 152   1              {
 153   2                      Receiver();
 154   2                      PutString(UART_BUFFER,UART_BUFFER[0]);
 155   2              
 156   2              }
 157   1      }


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