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

📄 fasong.lst

📁 NRF905无线收发模块详细资料
💻 LST
字号:
C51 COMPILER V7.06   FASONG                                                                08/12/2008 12:45:11 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          #define uint unsigned int
   6          #define uchar unsigned char
   7          #define BYTE_BIT0       0x01
   8          #define BYTE_BIT1       0x02
   9          #define BYTE_BIT2       0x04
  10          #define BYTE_BIT3       0x08
  11          #define BYTE_BIT4       0x10
  12          #define BYTE_BIT5       0x20
  13          #define BYTE_BIT6       0x40
  14          #define BYTE_BIT7       0x80
  15          ////////////SPI指令
  16          #define WC              0x00
  17          #define RC              0x10
  18          #define WTP             0x20
  19          #define RTP             0x21
  20          #define WTA             0x22
  21          #define RTA             0x23
  22          #define RRP             0x24
  23          bdata unsigned  char DATA_BUF;
  24          #define DATA7   ((DATA_BUF&BYTE_BIT7) != 0)
  25          #define DATA0   ((DATA_BUF&BYTE_BIT0) != 0)
  26          sbit    flag    =DATA_BUF^7;
  27          sbit    flag1   =DATA_BUF^0;
  28          #define TxRxBuf_Len 4
  29          unsigned char TxRxBuf[TxRxBuf_Len]=
  30          {
  31          0x29,0x30,0x31,0x32,
  32          };
  33          //配置口定义//
  34          sbit    TXEN=P1^0;
  35          sbit    TRX_CE=P3^4;
  36          sbit    PWR=P1^1;
  37          sbit    MISO=P1^6;
  38          sbit    MOSI=P1^5;
  39          sbit    SCK=P1^7;
  40          sbit    CSN=P1^3;
  41          /////////////////////////////////////////////////////
  42          sbit    AM=P1^4;
  43          sbit    DR=P3^2;
  44          sbit    CD=P1^2;
  45          ///////////////////////////////////////////////////////
  46          sbit    led1=P2^2;
  47          sbit    led0=P2^3;
  48          sbit    led2=P2^1;
  49          sbit    led3=P2^0;
  50          ///////////////////////////////////////////////////////
  51          sbit    KEY0=P3^6;
  52          sbit    KEY1=P3^7;
  53          
  54          uchar seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};         //0~~9段码
  55          //RF寄存器配置//
C51 COMPILER V7.06   FASONG                                                                08/12/2008 12:45:11 PAGE 2   

  56          unsigned char idata RFConf[11]=
  57          {
  58            0x00,                             //配置命令//
  59            0x4c,                             //CH_NO,配置频段在423MHZ
  60            0x0c,                             //输出功率为10db,不重发,节电为正常模式
  61            0x44,                             //地址宽度设置,为4字节
  62            0x04,0x04,                        //接收发送有效数据长度为32字节
  63            0xCC,0xCC,0xCC,0xCC,              //接收地址
  64            0x58,                              //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
  65          };
  66          bit lcdbit;
  67          code TxAddress[4]={0xcc,0xcc,0xcc,0xcc};
  68          ///////////延时/////////////////
  69          static void Delay(uchar n)
  70          {
  71   1              uint i;
  72   1              while(n--)
  73   1              for(i=0;i<80;i++);
  74   1      }
  75          
  76          ///////////////
  77          /*unsigned char SpiRead(void)
  78          {
  79                  unsigned char i;
  80                  for (i=0;i<8;i++)
  81                  {
  82                          DATA_BUF=DATA_BUF<<1;
  83                          SCK=1;
  84                          if (MISO)       //读取最高位,保存至最末尾,通过左移位完成整个字节
  85                          {
  86                                  DATA_BUF|=BYTE_BIT0;
  87                          }
  88                          else
  89                          {
  90                                  DATA_BUF&=~BYTE_BIT0;
  91                          }
  92                          SCK=0;
  93                   }
  94                   return DATA_BUF;
  95          }*/
  96          
  97          void SpiWrite(unsigned char send)
  98          {
  99   1              unsigned char i;
 100   1              DATA_BUF=send;
 101   1              for (i=0;i<8;i++)
 102   1              {
 103   2                      if (DATA7)      //总是发送最高位
 104   2                      {
 105   3                              MOSI=1;
 106   3                      }
 107   2                      else
 108   2                      {
 109   3                              MOSI=0;
 110   3                      }
 111   2                      SCK=1;
 112   2                      DATA_BUF=DATA_BUF<<1;
 113   2                      SCK=0;
 114   2              }
 115   1      }
 116          ////////////////初始化nRF905///////////////////
 117          void nRF905Init(void)
C51 COMPILER V7.06   FASONG                                                                08/12/2008 12:45:11 PAGE 3   

 118          {
 119   1          CSN=1;                                              // Spi  disable
 120   1              SCK=0;                                          // Spi clock line init low
 121   1              DR=0;                                           // Init DR for input
 122   1              AM=0;                                           // Init AM for input
 123   1              CD=0;                                           // Init CD for input
 124   1              PWR=1;                                  // nRF905 power on
 125   1              TRX_CE=0;                                       // Set nRF905 in standby mode
 126   1              TXEN=0;                                 // set radio in Rx mode
 127   1      }
 128          ////////初始化寄存器
 129          void Config905(void)
 130          {
 131   1              uchar i;
 132   1              CSN=0;                                          // Spi enable for write a spi command
 133   1              //SpiWrite(WC);                         // Write config command写放配置命令
 134   1              for (i=0;i<11;i++)      // Write configration words  写放配置字
 135   1              {
 136   2                 SpiWrite(RFConf[i]);
 137   2              }
 138   1              CSN=1;                                  // Disable Spi
 139   1      }
 140          /////////////初始化
 141          void Inituart(void)
 142          {
 143   1              TMOD = 0x20;                            //timer1 working mode 1
 144   1              TL1  = 0xfd;                                    //f7=9600 for 16mhz Fosc,and ...
 145   1              TH1  = 0xfd;                                    //...fd=19200 for 11.0592mhz Fosc
 146   1              SCON = 0xd8;                            //uart mode 3,ren==1
 147   1              PCON = 0x80;                            //smod=1
 148   1              TR1  = 1;                                       //start timer1
 149   1      }
 150          /////////////发送数据
 151          void TxPacket(uchar *TxRxBuf)
 152          {
 153   1              uchar i;
 154   1              //Config905();
 155   1              CSN=0;
 156   1              SpiWrite(WTP);                          // Write payload command
 157   1              for (i=0;i<4;i++)
 158   1              {
 159   2                      SpiWrite(TxRxBuf[i]);           // Write 32 bytes Tx data
 160   2              }// Spi enable for write a spi command
 161   1              CSN=1;
 162   1              Delay(1);                                               // Spi disable
 163   1              CSN=0;                                          // Spi enable for write a spi command
 164   1              SpiWrite(WTA);                          // Write address command
 165   1              for (i=0;i<4;i++)                       // Write 4 bytes address
 166   1              {
 167   2                      SpiWrite(TxAddress[i]);
 168   2              }
 169   1              CSN=1;                                          // Spi disable
 170   1              TRX_CE=1;                                       // Set TRX_CE high,start Tx data transmission
 171   1              Delay(1);                                       // while (DR!=1);
 172   1              TRX_CE=0;                                       // Set TRX_CE low
 173   1      }
 174          ////////////////////////////////////////////////////
 175          void SetTxMode(void)
 176          {
 177   1              TRX_CE=0;
 178   1              TXEN=1;
 179   1              Delay(1);                                       // delay for mode change(>=650us)
C51 COMPILER V7.06   FASONG                                                                08/12/2008 12:45:11 PAGE 4   

 180   1      }
 181          unsigned char CheckCD(void)             //Pin->检查是否已存在 同频率载波
 182          {
 183   1              if (CD==1)
 184   1              {
 185   2                      return 1;
 186   2              }
 187   1              else
 188   1              {
 189   2                      return 0;
 190   2              }
 191   1      }
 192          /*void TX(void)
 193          {
 194                         SetTxMode();// Set nRF905 in Tx mode
 195                                     TxPacket();// Send data by nRF905
 196          
 197          
 198           CheckCD();     // 返回CD的当前电平
 199          
 200                  // SetRF_PA_PWR(unsigned char i);       //设置发射功率
 201          }*/
 202          void main(void)
 203          {
 204   1            //  Inituart();
 205   1      uchar i;
 206   1              nRF905Init();
 207   1              Config905();
 208   1                              P0= seg[8];
 209   1                              led0=0;
 210   1                              led1=0;
 211   1                              led2=0;
 212   1                              led3=0;
 213   1              while(1)
 214   1                      {
 215   2                                      if(KEY0==0)                                             //有键按下
 216   2                              {
 217   3                                      while(!KEY0);                           //等待按键松开  RED
 218   3                                      TxRxBuf[0]=0x29;
 219   3                                      TxRxBuf[1]=0x30;
 220   3                                      TxRxBuf[2]=0x31;
 221   3                                      TxRxBuf[3]=0x32;  
 222   3                              P0= seg[1];
 223   3                                      led0=1;
 224   3                                      led1=1;
 225   3                                      led2=1;
 226   3                                      led3=0;
 227   3      for(i=0;i<2;i++)
 228   3      {
 229   4                      SetTxMode();// Set nRF905 in Tx mode
 230   4                                  TxPacket(TxRxBuf);// Send data by nRF905
 231   4      }
 232   3                      //      Delay(250);
 233   3                                      }
 234   2                                       if(KEY1==0)                                            //有键按下
 235   2                              {
 236   3                                      while(!KEY1);                           //等待按键松开GREEN
 237   3                                      TxRxBuf[0]=0x30;
 238   3                                      TxRxBuf[1]=0x31;
 239   3                                      TxRxBuf[2]=0x32;
 240   3                                      TxRxBuf[3]=0x29;    
 241   3                              P0= seg[2];
C51 COMPILER V7.06   FASONG                                                                08/12/2008 12:45:11 PAGE 5   

 242   3                                      led0=1;
 243   3                                      led1=1;
 244   3                                      led2=0;
 245   3                                      led3=1;
 246   3      for(i=0;i<2;i++)
 247   3      {
 248   4                      SetTxMode();// Set nRF905 in Tx mode
 249   4                                  TxPacket(TxRxBuf);// Send data by nRF905
 250   4      }
 251   3                              //      Delay(250);
 252   3                              }       
 253   2      }       
 254   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    333    ----
   CONSTANT SIZE    =      8    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     15       4
   IDATA SIZE       =     11    ----
   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 + -