tx433.lst

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

LST
170
字号
C51 COMPILER V7.50   TX433                                                                 10/21/2008 13:13:53 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE TX433
OBJECT MODULE PLACED IN tx433.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE tx433.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 ADDR_INDEX  8   // Index to address bytes in RFConfig.buf
  18          #define ADDR_COUNT  4   // Number of address bytes
  19          
  20          const RFConfig txconf =
  21          {
  22              15,
  23              0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 
  24                  0x00, 0x12, 0x34, 0x56, 0x78, 0x83, 0x6c, 0x04
  25          };
  26          /*
  27          0x08   :通道2数据接收包的位数(此处为8bit即一个字节)  
  28          
  29          0x08   :通道1数据接收包的位数
  30          
  31          0x00, 0x00, 0x00, 0x00, 0x00:CH2地址
  32          发射地址在发射时再设置。
  33          0x00, 0x12, 0x34, 0x56, 0x78:CH1地址(高于设定的地址宽度补0,即本行的第一个字节)
  34          
  35          0x83=100000 11        前6位:四个字节(32位)地址宽度(CH1及CH2);
  36                                                后2位:CRC使能且为16bit
  37          
  38          0x6C=0 1 1 011 00     B7最高位:0表示一通道(1表示2通道)
  39                                                    B6      :1表示收发子系统处于ShockBurst模式(0表示直接模式)
  40                                                    B5      :1表示1Mbps(0为250kbps)
  41                                B4-B2   :011表示外部的晶振为16M
  42                                                    B1-B0   :00表示发射功率为-20dBm
  43          
  44          0x04=0000010  0       B7-B1   :表示发射频率 和 CH1接收频率
  45                                B0          :0表示发射模式(1为接收模式)  
  46          */                                      
  47          const RFConfig rxconf =
  48          {
  49              15,
  50              0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  51              0x87, 0x65, 0x43, 0x21, 0x83, 0x6c, 0x05
  52          };
  53          
  54          
  55          //延时函数
C51 COMPILER V7.50   TX433                                                                 10/21/2008 13:13:53 PAGE 2   

  56          void Delay100us(volatile unsigned char n)
  57          {
  58   1          unsigned char i;
  59   1          while(n--)
  60   1              for(i=0;i<35;i++)
  61   1                  ;
  62   1      }
  63          
  64          
  65          unsigned char SpiReadWrite(unsigned char b)
  66          {
  67   1          EXIF &= ~0x20;                  // Clear SPI interrupt
  68   1          SPI_DATA = b;                   // Move byte to send to SPI data register
  69   1          while((EXIF & 0x20) == 0x00)    // Wait until SPI hs finished transmitting
  70   1                 ;
  71   1          return SPI_DATA;
  72   1      }
  73          
  74          
  75          void Transmitter(unsigned char *str,unsigned char strlen)
  76          {
  77   1          unsigned char i;
  78   1      
  79   1          CE = 1;                  
  80   1              Delay100us(0);  
  81   1          for(i=0;i<ADDR_COUNT;i++)           // Start with the address of the receiver:
  82   1              SpiReadWrite(rxconf.buf[ADDR_INDEX+i]);
  83   1              for(i=0;i<strlen;i++)
  84   1              SpiReadWrite(*(str + i)); 
  85   1          CE = 0;             
  86   1              T1 = ~T1;                                               //发送闪烁
  87   1              Delay100us(200);                        // Wait ~300us  
  88   1      }
  89          
  90          
  91          //2401子系统初始化
  92          void Init(void)
  93          {    
  94   1              unsigned char j;
  95   1      //    P0_ALT |= 0x06;                      // Select alternate functions on pins P0.1 and P0.2
  96   1      //    P0_DIR = 0xA2;                 // 方向要设对,P0.1(RxD) ,P0.5,P0.7为输入,P0.4,P0.6为输出
  97   1              PWR_UP=1;
  98   1          Delay100us(30);                // Wait > 3ms 
  99   1      
 100   1          SPICLK = 0;                 // Max SPI clock (XTAL/8)
 101   1          SPI_CTRL = 0x02;               // Connect internal SPI controller to Radio
 102   1      
 103   1          CE = 0;                        // Configure Radio:
 104   1          CS = 1;
 105   1          Delay100us(0);
 106   1          for(j=0;j<txconf.n;j++)
 107   1          {
 108   2              SpiReadWrite(txconf.buf[j]);
 109   2          }
 110   1          CS = 0;
 111   1      }
 112          //串口初始化
 113          void Uart_init(void)
 114          {
 115   1          TH1 = 0xE6;                      // 9600@16MHz (when T1M=1 and SMOD=1)
 116   1          CKCON |= 0x10;                  // T1M=1 (/4 timer clock)
 117   1          PCON = 0x80;                    // SMOD=1 (double baud rate)
C51 COMPILER V7.50   TX433                                                                 10/21/2008 13:13:53 PAGE 3   

 118   1          SCON = 0x50;                    // Serial mode1, enable receiver
 119   1          TMOD = 0x20;                    // Timer1 8bit auto reload 
 120   1          TR1 = 1;                        // Start timer1
 121   1          P0_ALT |= 0x06;                             // Select alternate functions on pins P0.1 and P0.2
 122   1          P0_DIR  = 0xA2;                             // P0.1 (RxD) is an input
 123   1      }
 124          
 125          
 126          void main(void)
 127          {
 128   1      unsigned char UART_BUFFER[5]={0x04,0x65,0x78,0xff,0x32};
 129   1          Init();
 130   1              Uart_init();
 131   1                      
 132   1              if(!T0)
 133   1              {  
 134   2                              Transmitter(UART_BUFFER,(UART_BUFFER[0]+1));
 135   2      
 136   2      
 137   2              }         
 138   1           
 139   1      
 140   1      }
 141          
 142          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    209    ----
   CONSTANT SIZE    =      5    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     32       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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