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

📄 nrf905.lst

📁 能较好的实现无线通信 用点阵来实现 距离有100米 程序已通过调试
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 19:08:31 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE NRF905
OBJECT MODULE PLACED IN nrf905.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE nrf905.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include<intrins.h>
   3          #include"LCD1602\LCD1602.h"
   4          
   5          #define uchar unsigned char 
   6          #define uint  unsigned int
   7          
   8          
   9          #define WC              0x00                    // Write configuration register command
  10          #define RC              0x10                    // Read  configuration register command
  11          #define WTP             0x20                    // Write TX Payload  command
  12          #define RTP             0x21                    // Read  TX Payload  command
  13          #define WTA             0x22                    // Write TX Address  command
  14          #define RTA             0x23                    // Read  TX Address  command
  15          #define RRP             0x24                    // Read  RX Payload  command
  16          /*******************************************************************************************/
  17          typedef struct RFConfig
  18          {
  19                  uchar n;
  20                  uchar buf[10];
  21          }RFConfig;
  22          
  23          code RFConfig RxTxConf =
  24          {
  25                  10,
  26                  0x01, 0x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58       
  27          };
  28          
  29          
  30          // The content of this struct is nRF905's initialize data.初始化数据
  31          // CH_NO=1;433MHZ;Normal Opration,No Retrans;RX,TX Address is 4 Bytes
  32          // RX TX Payload Width is 32 Bytes;Disable Extern Clock;Fosc=16MHZ
  33          // 8 Bits CRC And enable
  34          /*******************************************************************************************/
  35          uchar data TxBuf[33];
  36          uchar data RxBuf[32];
  37          
  38          
  39          /*******************************************************************************************/
  40          //uchar rsbrf,delayf,tf,Key;
  41          /*******************************************************************************************/
  42          uchar bdata DATA_BUF;
  43          sbit    flag    =DATA_BUF^7;
  44          sbit    flag1   =DATA_BUF^0;
  45          /*******************************************************************************************/
  46          
  47          sbit    TX_EN   =P2^6;
  48          sbit    TRX_CE  =P2^5;
  49          sbit    PWR_UP  =P2^4;
  50          sbit    MISO    =P2^3;
  51          sbit    MOSI    =P2^2;
  52          sbit    SCK             =P2^1;
  53          sbit    CSN             =P2^0;
  54          
  55          sbit    AM      =P3^2;
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 19:08:31 PAGE 2   

  56          sbit    DR      =P3^3;
  57          sbit    CD      =P3^5;    
  58          
  59          
  60          sbit    Key1 = P0^1;
  61          sbit    Key2 = P0^0;
  62          
  63          /*******************************************************************************************/
  64          void InitIO(void);                      // Initialize IO port
  65          void Inituart(void);                    // initialize 232 uart
  66          void Config905(void);                   // Config nRF905 module配置NRF905模式
  67          void SetTxMode(void);                   // Set nRF905 in Tx mode
  68          void SetRxMode(void);                   // Set nRF905 in Rx mode
  69          void TxPacket(void);                    // Send data by nRF905
  70          void RxPacket(void);                    // Recive data by nRF905
  71          void SpiWrite(uchar);                   // Write data to nRF905
  72          uchar SpiRead(void);                    // Read data to nRF905
  73          void Delay(uchar n);                    // Delay 100us
  74          //void Scankey(void);                           // Scan key
  75          
  76          
  77          
  78          void delays(void);
  79          
  80          
  81          uchar *pUART;   //字符串指针
  82          void print_Char(unsigned char c)
  83                  {
  84   1                      SBUF = c;
  85   1                      c = '\0';
  86   1                  pUART=&c;
  87   1                      while (pUART!=0);
  88   1              }
  89          /*******************************************************************************************/
  90          //function Delay100us();Delay 100us
  91          /*******************************************************************************************/
  92          void Delay(uchar n)
  93          {
  94   1              uint i;
  95   1              while(n--)
  96   1              for(i=0;i<80;i++);      
  97   1      }
  98          /*******************************************************************************************/
  99          
 100          
 101          
 102          
 103          volatile unsigned char RxWriteIndex = 0;
 104          //volatile unsigned char cc = 0;
 105          
 106          
 107          void UART_INT(void) interrupt 4
 108          {
 109   1              if (RI)
 110   1              {
 111   2      
 112   2                                                                                      
 113   2                      TxBuf[RxWriteIndex] = SBUF;
 114   2      
 115   2                      if (TxBuf[RxWriteIndex]==0x00)
 116   2                              TxBuf[RxWriteIndex]=0x01;
 117   2                      RxWriteIndex++;
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 19:08:31 PAGE 3   

 118   2                      TxBuf[RxWriteIndex] = '\0';
 119   2      
 120   2                      RI = 0;
 121   2              }
 122   1              else    //TI
 123   1              {
 124   2                      TI=0;   //发送中断标志位(SCON)
 125   2                      
 126   2                      if (*pUART != '\0')
 127   2                      {
 128   3                              SBUF = *pUART;
 129   3                              pUART++;
 130   3                      }
 131   2                      else pUART=0;   //不会启动下一次发送
 132   2                      
 133   2      
 134   2                      /*
 135   2                      if (cc!=32)
 136   2                      {
 137   2      
 138   2                           cc++;
 139   2                              SBUF = *pUART;
 140   2                              pUART++;
 141   2                      }
 142   2                      if(cc==32)
 143   2                      cc=0;                    */
 144   2                      
 145   2              }
 146   1      }
 147          void print_Str(const uchar*p)
 148          {
 149   1              pUART=p;
 150   1              TI=1;
 151   1              while (pUART!=0);       //遇到 '\0',输出完毕
 152   1              //while(cc!=32);
 153   1      }
 154          
 155          unsigned char code displayLCD[] = {"Temperature is :"}; //11
 156          
 157          unsigned char ci = 0;
 158                                     
 159          void main()
 160          {
 161   1              LCDInit();
 162   1      
 163   1      
 164   1          SCON=0x50;  //模式1
 165   1          TMOD=0x21;  //定时模式2
 166   1          IE=0x90;
 167   1      
 168   1          //=====9600=======设置串口通讯寄存器
 169   1          //PCON=0x00;   //波特率9600BPS,晶振11.0592MHZ
 170   1              PCON=0x80;   //波特率加倍 
 171   1          TH1=0xFD;  //
 172   1          TL1=0xFD;  //计数器初值
 173   1          //================NRF905初始化
 174   1              CSN=1;                                          // Spi  disable                                         
 175   1              SCK=0;                                          // Spi clock line init high
 176   1              DR=1;                                           // Init DR for input
 177   1              AM=1;                                           // Init AM for input
 178   1              PWR_UP=1;                                       // nRF905 power on
 179   1              TRX_CE=0;                                       // Set nRF905 in standby mode
C51 COMPILER V8.05a   NRF905                                                               06/08/2008 19:08:31 PAGE 4   

 180   1              TX_EN=0;                                        // set radio in Rx mode 
 181   1      
 182   1          TI = 0;//串行中断标志位清零
 183   1          TR1 = 1;//打开计数器1  
 184   1              //================
 185   1              Config905();                            // Config nRF905 module
 186   1              SetRxMode();
 187   1      
 188   1      
 189   1      //      print_Char('a');
 190   1      
 191   1              TxBuf[32] = '\0'; 
 192   1      
 193   1      while(1)
 194   1      {
 195   2      
 196   2              DisplayListChar_code(0,0,displayLCD);
 197   2              
 198   2               //=====================从键盘获得数据
 199   2              if (Key1==0) //睡眠键   
 200   2              {
 201   3                      delays();
 202   3                      if (Key1==0)

⌨️ 快捷键说明

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