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

📄 fasong.lst

📁 RF905-无线调试板开发包
💻 LST
字号:
C51 COMPILER V7.06   FASONG                                                                09/12/2009 14:21:20 PAGE 1   


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

stmt level    source

   1          #include <reg52.h>
   2          #include <ABSACC.h>
   3          #include <intrins.h>
   4          #include <stdio.h>
   5          //--------------------------------------------------------------------------------------------------------
             ---------
   6          #define uint unsigned int
   7          #define uchar unsigned char
   8          //--------------------------------------------------------------------------------------------------------
             ---------
   9          #define BYTE_BIT0       0x01
  10          #define BYTE_BIT7       0x80
  11          //--------------------------------------------------------------------------------------------------------
             ---------
  12          bdata unsigned  char DATA_BUF;
  13          #define DATA7   ((DATA_BUF&BYTE_BIT7) != 0)
  14          #define DATA0   ((DATA_BUF&BYTE_BIT0) != 0)
  15          sbit    flag    =DATA_BUF^7;
  16          sbit    flag1   =DATA_BUF^0;
  17          //---------------------------------------------------发送数据缓冲区---------------------------------------
             -----------
  18          #define TxRxBuf_Len 4
  19          unsigned char TxRxBuf[TxRxBuf_Len]={0x29,0x30,0x31,0x32,};
  20          code TxAddress[4]={0xcc,0xcc,0xcc,0xcc};
  21          char tf;
  22          //----------------------------------------NRF905工作模式控制端口------------------------------------------
             -------------
  23          sbit    TXEN=P1^4;
  24          sbit    TRX_CE=P3^2;
  25          sbit    PWR=P1^3;
  26          //----------------------------------------LED显示端口---------------------------------------------------
  27          sbit    LED=P3^5;
  28          //----------------------------------------NRF905 数据交换端口---------------------------------------------
             -------
  29          sbit    MISO=P1^6;
  30          sbit    MOSI=P1^1;
  31          sbit    SCK=P1^5;
  32          sbit    CSN=P1^0;
  33          //----------------------------------------nrf905状态端口--------------------------------------------------
             --------
  34          sbit    AM=P1^7;
  35          sbit    DR=P3^3;
  36          sbit    CD=P1^2;
  37          //--------------------------------------------------------------------------------------------------------
             --------
  38          //----------------------------------------按键端口-------------------------------------------------------
  39          sbit    KEY=P3^4;
  40          //----------------------------------------nrf905控制指令-------------------------------------------
  41          #define WC              0x00
  42          #define RC              0x10
  43          #define WTP             0x20
  44          #define RTP             0x21
  45          #define WTA             0x22
  46          #define RTA             0x23
  47          #define RRP             0x24
C51 COMPILER V7.06   FASONG                                                                09/12/2009 14:21:20 PAGE 2   

  48          //------------------------------------------------NRF905寄存器配置----------------------------------------
             ---------
  49          unsigned char idata RFConf[11]=
  50          {
  51            0x00,                             //配置命令//
  52            0x4c,                             //CH_NO,配置频段在430MHZ
  53            0x0c,                             //输出功率为10db,不重发,节电为正常模式
  54            0x44,                             //地址宽度设置,为4字节
  55            0x04,0x04,                        //接收发送有效数据长度为4字节
  56            0xCC,0xCC,0xCC,0xCC,              //接收地址
  57            0x58,                              //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
  58          };
  59          //================================================延时====================================================
             -=======
  60          void nrf905_Delay(int n)
  61          {
  62   1              uint i;
  63   1              while(n--)
  64   1              for(i=0;i<80;i++);
  65   1      }
  66          //=================================================SPI读函数==============================================
             -=========
  67          unsigned char SpiRead(void)
  68          {
  69   1              unsigned char j;
  70   1              for (j=0;j<8;j++)
  71   1              {
  72   2              DATA_BUF=DATA_BUF<<1;
  73   2                      SCK=1;
  74   2                      if (MISO)       //读取最高位,保存至最末尾,通过左移位完成整个字节
  75   2                      {
  76   3                              DATA_BUF|=BYTE_BIT0;
  77   3                      }
  78   2                      else
  79   2                      {
  80   3                              DATA_BUF&=~BYTE_BIT0;
  81   3                      }
  82   2                      SCK=0;
  83   2               }
  84   1               return DATA_BUF;
  85   1      }
  86          //===========================================SPI写函数====================================================
             -===========
  87          void SpiWrite(unsigned char send)
  88          {
  89   1              unsigned char i;
  90   1              DATA_BUF=send;
  91   1              for (i=0;i<8;i++)
  92   1              {
  93   2                      if (DATA7)      //总是发送最高位
  94   2                      {
  95   3                              MOSI=1;
  96   3                      }
  97   2                      else
  98   2                      {
  99   3                              MOSI=0;
 100   3                      }
 101   2                      SCK=1;
 102   2                      DATA_BUF=DATA_BUF<<1;
 103   2                      SCK=0;
 104   2              }
 105   1      }
C51 COMPILER V7.06   FASONG                                                                09/12/2009 14:21:20 PAGE 3   

 106          //------------------------------------------------------初始化nRF905--------------------------------------
             --------
 107          void nRF905Init(void)
 108          {
 109   1          CSN=1;                                              // Spi  disable
 110   1              SCK=0;                                          // Spi clock line init low
 111   1              DR=1;                                           // Init DR for input
 112   1              AM=1;                                           // Init AM for input
 113   1              CD=1;                                           // Init CD for input
 114   1              PWR=1;                                  // nRF905 power on
 115   1              TRX_CE=0;                                       // Set nRF905 in standby mode
 116   1              TXEN=0;                                 // set radio in Rx mode
 117   1      }
 118          //-----------------------------------------------------初始化寄存器---------------------------------------
             ---------
 119          void Config905(void)
 120          {
 121   1              uchar i;
 122   1              CSN=0;                                          // Spi enable for write a spi command
 123   1              //SpiWrite(WC);                         // Write config command写放配置命令
 124   1              for (i=0;i<11;i++)      // Write configration words  写放配置字
 125   1              {
 126   2                 SpiWrite(RFConf[i]);
 127   2              }
 128   1              CSN=1;                                  // Disable Spi
 129   1      }
 130          //-----------------------------------------------------发送数据打包---------------------------------------
             -------------
 131          void TxPacket(uchar *TxRxBuf)
 132          {
 133   1              uchar i;
 134   1              //Config905();
 135   1              CSN=0;
 136   1              SpiWrite(WTP);                          // Write payload command
 137   1              for (i=0;i<4;i++)
 138   1              {
 139   2                      SpiWrite(TxRxBuf[i]);           // Write 32 bytes Tx data
 140   2              }
 141   1              CSN=1;
 142   1              nrf905_Delay(1);                                                // Spi disable
 143   1              CSN=0;                                          // Spi enable for write a spi command
 144   1              SpiWrite(WTA);                          // Write address command
 145   1              for (i=0;i<4;i++)                       // 写入与对方地址一样的地址
 146   1              {
 147   2                      SpiWrite(TxAddress[i]);
 148   2              }
 149   1              CSN=1;                                          // Spi disable
 150   1              TRX_CE=1;                                       // Set TRX_CE high,start Tx data transmission
 151   1              nrf905_Delay(1);                                        // while (DR!=1);
 152   1              TRX_CE=0;                                       // Set TRX_CE low
 153   1      }
 154          //----------------------------------------------设置发送初始状态------------------------------------------
             ----
 155          void SetTxMode(void)
 156          {
 157   1              TRX_CE=0;
 158   1              TXEN=1;
 159   1              nrf905_Delay(1);                                        // nrf905_Delay for mode change(>=650us)
 160   1      }
 161          //-----------------------------------------------设置接收初始化-------------------------------------------
             ---------
 162          void SetRxMode(void)
C51 COMPILER V7.06   FASONG                                                                09/12/2009 14:21:20 PAGE 4   

 163          {
 164   1              TXEN=0;
 165   1              TRX_CE=1;
 166   1              nrf905_Delay(1);                                        // nrf905_Delay for mode change(>=650us)
 167   1      }
 168          //-------------------------------------------------判断数据接收状态---------------------------------------
             ---------------
 169          unsigned char CheckDR(void)             //检查是否有新数据传入 Data Ready
 170          {
 171   1              DR=1;      
 172   1      //通过对端口写1,可以使端口为输入状态,这51的 特性。不熟悉者可以参阅51相关书籍作证(将DR端口设置为输入状态

⌨️ 快捷键说明

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