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

📄 nrf905_rx.lst

📁 51单片机工程应用实例
💻 LST
字号:
C51 COMPILER V7.50   NRF905_RX                                                             08/24/2007 13:07:27 PAGE 1   


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

line level    source

   1          //数传接收2007/8/1 AT89C2051 11.0592MHz
   2          //Module nRF905_RX AT89C2051-24PU VCC=3V
   3          //2007/8/23 PASSED!
   4          #include <reg51.H>
   5          #include <ABSACC.h>
   6          #include <intrins.h>//_nop_()需要
   7          #include <stdio.h>
   8          
   9          typedef unsigned char uchar;
  10          typedef unsigned int uint; 
  11          //配置口定义//
  12          sbit TXEN   =    P1^7;
  13          sbit TRX_CE =    P1^6;
  14          sbit PWR    =    P1^5;
  15          //SPI口定义//
  16          sbit MISO   =    P1^1;
  17          sbit MOSI   =    P1^0;
  18          sbit SCK    =    P3^7;
  19          sbit CSN    =    P3^3;
  20          //状态输出口//
  21          sbit CD    =    P1^4;
  22          sbit AM    =    P1^3;
  23          sbit DR    =    P3^2;
  24          sbit LED1  =    P3^4;
  25          sbit LED2  =    P3^5;
  26          //控制按钮
  27          sbit AN1  =    P3^0;
  28          sbit AN2  =    P3^1;
  29          //--------------------------------------
  30          void Init_MCU(void)
  31          {
  32   1              TMOD=0x20;
  33   1              TH1=0xfd;  //Baudrate=19200;f4->2400
  34   1              TL1=0xfd;
  35   1              PCON=0x80;
  36   1              SCON=0x50;
  37   1              TR1=1;
  38   1              LED1=1;
  39   1              LED2=1;
  40   1      }
  41          //-----------------------------------------------
  42          void Send_PC(uchar mess)
  43          {
  44   1       SBUF=mess;
  45   1       while(TI==0); TI=0;
  46   1      } 
  47          //-------------------------------------------------
  48          //RF寄存器配置//
  49          unsigned char idata RFConf[11]=
  50          {
  51              0x00,        //配置命令//
  52              0x6C,        //CH_NO,配置频段在433.2MHZ
  53              0x0C,        //输出功率为10db,不重发,节电为正常模式
  54              0x44,        //地址宽度设置,为4字节
  55              0x04,0x04,    //接收发送有效数据长度为4字节
C51 COMPILER V7.50   NRF905_RX                                                             08/24/2007 13:07:27 PAGE 2   

  56              0xE7,0xE7,0xE7,0xE7,    //接收地址
  57              0xDE,        //CRC充许,16位CRC校验,外部时钟信号使能,16M晶振
  58          };
  59          
  60          uchar TxRxBuffer[5];
  61          bit lcdbit;
  62          ///////////延时/////////////////
  63          void Delay(uint x)
  64          {
  65   1          uint i;
  66   1          for(i=0;i<x;i++){
  67   2              _nop_();
  68   2          }
  69   1      }
  70          
  71          ////////////用SPI口写数据至NRF905内//////////
  72          void SpiWrite(uchar b)
  73          {
  74   1          uchar i=8;
  75   1          while (i--)
  76   1          {
  77   2              Delay(10);
  78   2              SCK=0;
  79   2              MOSI=(bit)(b&0x80);
  80   2              b<<=1 ; 
  81   2              Delay(10);
  82   2              SCK=1; 
  83   2              Delay(10);
  84   2              SCK=0;
  85   2          }
  86   1          SCK=0;
  87   1      }
  88          ///////////////from 905 read data////////////////
  89          uchar SpiRead(void)
  90          {
  91   1          uchar i=8;
  92   1          uchar ddata=0;
  93   1          while (i--)
  94   1          {
  95   2              ddata<<=1 ;
  96   2              SCK=0;
  97   2              _nop_();_nop_();
  98   2              ddata|=MISO;
  99   2              SCK=1 ;
 100   2              _nop_();_nop_();
 101   2          }
 102   1          SCK=0;
 103   1          return ddata;
 104   1      }
 105          ///////////////接收数据包/////////////////
 106          void RxPacket(void)
 107          {
 108   1          uchar i;
 109   1          i=0;
 110   1          while(DR)
 111   1          {
 112   2              TxRxBuffer[i] = SpiRead();
 113   2              i++;
 114   2          }
 115   1      }
 116          
 117          /*
C51 COMPILER V7.50   NRF905_RX                                                             08/24/2007 13:07:27 PAGE 3   

 118          ;写发射数据命令:20H
 119          ;读发射数据命令:21H
 120          ;写发射地址命令:22H
 121          ;读发射地址命令:23H
 122          ;读接收数据命令:24H
 123          */
 124          //--------------------------------------
 125          void DelayMs(uint n)      //j=115@F=11.0592MHz
 126          { uchar j;                //j=125@F=12MHz
 127   1       while(n--)
 128   1       {for(j=0;j<115;j++);}
 129   1      }
 130          ////////////////等待接收数据包///////////////////
 131          uchar temp;
 132          void Wait_Rec_Packet(void)
 133          {
 134   1          TXEN=0;
 135   1          TRX_CE=1;
 136   1          while(1)
 137   1          {
 138   2              if(DR)
 139   2              {
 140   3                  TRX_CE=0;            //如果数据准备好,则进入待机模式,以便SPI口操作
 141   3                  CSN=0;
 142   3                  SpiWrite(0x24);
 143   3                  RxPacket();
 144   3                  CSN=1;
 145   3                  //temp=TxRxBuffer[0]+TxRxBuffer[1]+TxRxBuffer[2];
 146   3                  //if(temp==0x06){        
 147   3                      LED2=0;
 148   3                                      DelayMs(200);
 149   3                                      LED2=1;          //如果接收的数据正确
 150   3                  //}
 151   3                  break;
 152   3              }
 153   2          }
 154   1      }
 155          ////////////初始化配置寄存器////////////////
 156          void Ini_System(void)
 157          {
 158   1          uchar i;
 159   1          LED1=0;
 160   1          Delay(10000);
 161   1          LED1=1;
 162   1          lcdbit=1;
 163   1          CSN=1;
 164   1          SCK=0;
 165   1          PWR=1;
 166   1          TRX_CE=0;//SPI写入
 167   1          TXEN=0;
 168   1          _nop_();
 169   1          CSN=0;
 170   1          for(i=0;i<11;i++){
 171   2              SpiWrite(RFConf[i]);
 172   2          }
 173   1          CSN=1;
 174   1          PWR=1;
 175   1          TRX_CE=1;//
 176   1          TXEN=0;
 177   1          Delay(1000);
 178   1      }
 179          
C51 COMPILER V7.50   NRF905_RX                                                             08/24/2007 13:07:27 PAGE 4   

 180          //-----------------------------------------------        
 181          void main(void)
 182          {
 183   1          uint i;
 184   1              DelayMs(100);
 185   1              LED1=0;
 186   1              DelayMs(1000);
 187   1              LED1=1;
 188   1              Init_MCU();
 189   1              Send_PC(0xAA);
 190   1              Send_PC(0xBB);
 191   1              
 192   1              Ini_System();
 193   1              //PWR=0;
 194   1              
 195   1          while(1)
 196   1          {
 197   2              Wait_Rec_Packet();        //等待接收完成
 198   2          for(i=0;i<4;i++)
 199   2              Send_PC(TxRxBuffer[i]);
 200   2          }
 201   1      }
 202          


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