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

📄 g_rx.lst

📁 这个是我自己写的一个改进的9E5接受程序
💻 LST
字号:
C51 COMPILER V7.50   G_RX                                                                  05/04/2007 15:36:33 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE G_RX
OBJECT MODULE PLACED IN G_rx.OBJ
COMPILER INVOKED BY: D:\专业工程软件\Keil C51\C51\BIN\C51.EXE G_rx.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <Nordic\reg9e5.h>
   2          
   3          #define HFREQ 0                     // 0=433MHz, 1=868/915MHz
   4          bit rx_rqst;
   5          char rcv_data;
   6          
   7          unsigned char SpiReadWrite(unsigned char b)
   8          {
   9   1          EXIF &= ~0x20;                  // spi接口设置函数
  10   1          SPI_DATA = b;                   // Move byte to send to SPI data register
  11   1          while((EXIF & 0x20) == 0x00)    // Wait until SPI hs finished transmitting
  12   1              ;
  13   1          return SPI_DATA;
  14   1      }
  15          
  16          
  17          void PutChar(char c)                 
  18          {
  19   1          while(!TI)                                   //输出字符函数 
  20   1              ;
  21   1              TI = 0;
  22   1          SBUF = c;
  23   1      }
  24          
  25          void PutString(const char *s)
  26          {
  27   1          while(*s != 0)                               //输出字符串函数
  28   1              PutChar(*s++);
  29   1      }
  30          
  31          
  32          
  33          unsigned char ReceivePacket()
  34          {
  35   1          unsigned char b;
  36   1      
  37   1          TRX_CE = 1;
  38   1      
  39   1          while(DR == 0)
  40   1              ;
  41   1          RACSN = 0;
  42   1          SpiReadWrite(RRP);
  43   1          b = SpiReadWrite(0);
  44   1          RACSN = 1;
  45   1          TRX_CE = 0;
  46   1          return b;
  47   1      }
  48          
  49          void Receiver(void)
  50          {
  51   1          unsigned char b;
  52   1          TXEN = 0;
  53   1          for(;;)
  54   1          {
  55   2              b = ReceivePacket();
C51 COMPILER V7.50   G_RX                                                                  05/04/2007 15:36:33 PAGE 2   

  56   2              P0 = (b >> 1);
  57   2              if (rx_rqst==1)
  58   2              {  rx_rqst=0; PutChar(rcv_data);}
  59   2          }
  60   1      }
  61          
  62          void uart_init(void)
  63          {
  64   1          TH1 = 0xE6;                      //串口初始化函数 19200@16MHz (when T1M=1 and SMOD=1)
  65   1          CKCON |= 0x30;                  // T1M=1 (/4 timer clock)
  66   1          PCON = 0x80;                    // SMOD=1 (double baud rate)
  67   1          SCON = 0x52;                    // Serial mode1, enable receiver
  68   1          TMOD = 0x20;                    // Timer1 8bit auto reload 
  69   1          TR1 = 1;                        // Start timer1
  70   1          
  71   1      }
  72          
  73          
  74          void Init(void)
  75          {
  76   1          unsigned char tmp;              //芯片初始化
  77   1      
  78   1          P0_ALT = 0x06;
  79   1          P0_DIR = 0x02;
  80   1      
  81   1          SPICLK = 0;                     // Max SPI clock
  82   1          SPI_CTRL = 0x02;                // Connect internal SPI controller to Radio
  83   1      
  84   1          // Configure Radio:
  85   1          RACSN = 0;
  86   1          SpiReadWrite(WRC | 0x03);       // Write to RF config address 3 (RX payload)
  87   1          SpiReadWrite(0x01);             // One byte RX payload
  88   1          SpiReadWrite(0x01);             // One byte TX payload
  89   1          RACSN = 1;
  90   1      
  91   1          RACSN = 0;
  92   1          SpiReadWrite(RRC | 0x01);       // Read RF config address 1
  93   1          tmp = SpiReadWrite(0) & 0xf1;   // Clear the power and frequency setting bits
  94   1          RACSN = 1;
  95   1      
  96   1          RACSN = 0;
  97   1          SpiReadWrite(WRC | 0x01);      // Write RF config address 1
  98   1                                         // Change to 433 or 868/915MHz defined by HFREQ above:
  99   1          SpiReadWrite(tmp | (HFREQ << 1));
 100   1          RACSN = 1;
 101   1      
 102   1          RACSN = 0;
 103   1          SpiReadWrite(RRC | 0x09);       // Read RF config Rx_deepess 1
 104   1          tmp = SpiReadWrite(0) | 0x04;   // Clear the power and frequency setting bits
 105   1          RACSN = 1;
 106   1      
 107   1      
 108   1          RACSN = 0;
 109   1          SpiReadWrite(WRC | 0x09);       // Write to RF config Rx_deepess 9 (cpu clk)
 110   1          SpiReadWrite(tmp);             // One byte RX cpu clk
 111   1          RACSN = 1;
 112   1      
 113   1      
 114   1      
 115   1      }
 116          
 117          void DR_ISR(void) interrupt 10
C51 COMPILER V7.50   G_RX                                                                  05/04/2007 15:36:33 PAGE 3   

 118          {
 119   1      
 120   1        EXIF = EXIF & 0xBF;
 121   1      
 122   1          RACSN = 0;
 123   1          SpiReadWrite(RRP);
 124   1          rcv_data = SpiReadWrite(0);
 125   1          
 126   1          RACSN = 1;
 127   1      
 128   1          if (!rcv_data )
 129   1            { rx_rqst=1; }
 130   1      
 131   1      }
 132          
 133           
 134          void main(void)
 135          {
 136   1          Init();
 137   1          uart_init();
 138   1       
 139   1          EX4 = 1;
 140   1          PX4 = 1;
 141   1          EA = 1;
 142   1          
 143   1          Receiver();
 144   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    253    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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