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

📄 nrf905e.lst

📁 这是一个基于PTR8000无线数据传输的C语言程序,是完整的源代码.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   NRF905E                                                               04/21/2007 14:54:04 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE NRF905E
OBJECT MODULE PLACED IN nrf905e.OBJ
COMPILER INVOKED BY: D:\keil\D\C51\BIN\C51.EXE nrf905e.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

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

  56                                       
  57          sbit    AM      =P3^2;
  58          sbit    DR      =P3^3;
  59          sbit    CD      =P3^5;
  60          /************************************/
  61                          
  62          /*******************************************************/
  63          void InitIO(void);                          // Initialize IO port
  64          void Inituart(void);                    // initialize 232 uart
  65          void Config905(void);                   // Config nRF905 module配置NRF905模式
  66          void SetTxMode(void);                   // Set nRF905 in Tx mode
  67          void SetRxMode(void);                   // Set nRF905 in Rx mode
  68          void TxPacket(void);                    // Send data by nRF905
  69          void RxPacket(void);                    // Recive data by nRF905
  70          void SpiWrite(uchar);                   // Write data to nRF905
  71          uchar SpiRead(void);                    // Read data to nRF905
  72          void Delay(uchar n);                    // Delay 100us
  73          void KeyScan(void);
  74          //void Scankey(void);                   // Scan key
  75          void TxData (uchar x);                  // Send key_value to CRT display
  76          void comdebug(void);
  77          
  78          
  79          /*******************************************************************************************/
  80          void TxData (unsigned char x)
  81          {
  82   1              SBUF=x; 
  83   1              while(TI==0);
  84   1                      TI=0;
  85   1      }
  86          /*******************************************************************************************/
  87          //function Delay100us();Delay 100us
  88          /*******************************************************************************************/
  89          void Delay(uchar n)
  90          {
  91   1              uint i;
  92   1              while(n--)
  93   1              for(i=0;i<80;i++);      
  94   1      }
  95          /*******************************************************************************************/
  96          void serial () interrupt 4
  97          {  
  98   1          unsigned char temp;
  99   1           if(RI)
 100   1             { 
 101   2                          
 102   2                      temp=SBUF;
 103   2              rsbrf=temp;
 104   2                  RI=0;
 105   2              }                               
 106   1      }
 107          /********************************************************/
 108          void KeyScan(void) //按键扫描子程序
 109          {
 110   1       P1=0xff;
 111   1       temp = P1;
 112   1       temp&=0xf0;
 113   1       if(temp !=0xf0)
 114   1       {
 115   2        Delay(50);    
 116   2        temp=P1;
 117   2        temp&=0xf0;
C51 COMPILER V7.06   NRF905E                                                               04/21/2007 14:54:04 PAGE 3   

 118   2        if(temp !=0xf0)
 119   2             { temp=P1;}
 120   2                 }
 121   1         }
 122          
 123          /***********************************/
 124          void main()
 125          {
 126   1      unsigned int cyc=0;
 127   1      unsigned int distan=0;
 128   1              WXW=0;
 129   1         
 130   1          SCON=0x50;  //模式1
 131   1          TMOD=0x21;  //定时模式2
 132   1          IE=0x90;
 133   1      
 134   1          //=====9600=======设置串口通讯寄存器
 135   1          PCON=0x00;   //波特率9600BPS,晶振11.0592MHZ
 136   1          TH1=0xFD;  //
 137   1          TL1=0xFD;  //计数器初值
 138   1          //================NRF905初始化
 139   1              CSN=1;                                          // Spi  disable                                         
 140   1              SCK=0;                                          // Spi clock line init high
 141   1              DR=1;                                           // Init DR for input
 142   1              AM=1;                                           // Init AM for input
 143   1              PWR_UP=1;                                       // nRF905 power on
 144   1              TRX_CE=0;                                       // Set nRF905 in standby mode
 145   1              TX_EN=0;                                        // set radio in Rx mode 
 146   1      
 147   1          TI = 0;//串行中断标志位清零
 148   1          TR1 = 1;//打开计数器1  
 149   1              //================
 150   1              Config905();                            // Config nRF905 module
 151   1              SetTxMode();                            // Set Tx Mode
 152   1              TxPacket();                             // Transmit Tx buffer data
 153   1              P0=0xff;
 154   1              //WXW=0;                   //上电全亮一下;
 155   1              Delay(500);                             // delay for led light  
 156   1              //P0=0x00;
 157   1              WXW=1;                          // led close
 158   1              SetRxMode();                            // Set nRF905 in Rx mode
 159   1      
 160   1      while(1)
 161   1      {
 162   2              KeyScan();
 163   2               //=====================从键盘获得键值数据
 164   2      
 165   2                switch(temp)
 166   2                  {
 167   3                    case 0x7e:P0=0x3f;TxBuf[0]=0x3f;tf=1;break;
 168   3                        case 0x7d:P0=0x06;TxBuf[0]=0x06;tf=1;break;
 169   3                        case 0x7b:P0=0x5b;TxBuf[0]=0x5b;tf=1;break;
 170   3                        case 0xbe:P0=0x4f;TxBuf[0]=0x4f;tf=1;break;
 171   3                        case 0xbd:P0=0x66;TxBuf[0]=0x66;tf=1;break;
 172   3                        case 0xbb:P0=0x6d;TxBuf[0]=0x6d;tf=1;break;
 173   3                        case 0xde:P0=0x7d;TxBuf[0]=0x7d;tf=1;break;
 174   3                        case 0xdd:P0=0x07;TxBuf[0]=0x07;tf=1;break;
 175   3                        case 0xdb:P0=0x7f;TxBuf[0]=0x7f;tf=1;break;
 176   3                case 0xee:P0=0x6f;TxBuf[0]=0x6f;tf=1;break;
 177   3                        case 0xed:P0=0x77;TxBuf[0]=0x77;tf=1;break;
 178   3                        case 0xeb:P0=0x7c;TxBuf[0]=0x7c;tf=1;break;
 179   3                        
C51 COMPILER V7.06   NRF905E                                                               04/21/2007 14:54:04 PAGE 4   

 180   3                        //default:P0=0xff;TxBuf[0]=0xff; 
 181   3                       }
 182   2      
 183   2      
 184   2                WXW=0;
 185   2                        Delay(50);
 186   2       
 187   2                 if (tf==1)
 188   2                   {  
 189   3                              //==============向串口发送相应的按键
 190   3                                switch(TxBuf[0])
 191   3                                  {
 192   4                                    case 0x3f:TxData('0');break;
 193   4                                    case 0x06:TxData('1');break;
 194   4                                    case 0x5b:TxData('2');break;
 195   4                                    case 0x4f:TxData('3');break;
 196   4                                        case 0x66:TxData('4');break;
 197   4                                    case 0x6d:TxData('5');break;
 198   4                                    case 0x7d:TxData('6');break;
 199   4                                    case 0x07:TxData('7');break;
 200   4                                        case 0x7f:TxData('8');break;
 201   4                                    case 0x6f:TxData('9');break;
 202   4                                    case 0x77:TxData('A');break;
 203   4                                    case 0x7c:TxData('B');break;
 204   4                                        //default:P0=0xff;TxBuf[0]=0xff; 
 205   4                                       } 
 206   3                              //===============NRF905发送相应的按键     

⌨️ 快捷键说明

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