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

📄 t905.lst

📁 用89C51 控制nRf 905收发 C源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 149          void SpiWrite(uchar  byte)
 150          {
 151   1              uchar i;        
 152   1              DATA_BUF=byte;                          // Put function's parameter into a bdata variable               
 153   1              for (i=0;i<8;i++)                       // Setup byte circulation bits
 154   1              {       
 155   2                      
 156   2                      if (flag)                               // Put DATA_BUF.7 on data line
 157   2                              MOSI=1;
 158   2                      else
 159   2                              MOSI=0;
 160   2                      SCK=1;                                  // Set clock line high
 161   2                      DATA_BUF=DATA_BUF<<1;   // Shift DATA_BUF
 162   2                      SCK=0;                                  // Set clock line low 
 163   2              }       
 164   1      }
 165          /*******************************************************************************************/
 166          //function SpiRead();
 167          /*******************************************************************************************/
 168          uchar SpiRead(void)
 169          {
 170   1              uchar i;        
 171   1              for (i=0;i<8;i++)                       // Setup byte circulation bits
 172   1              {       
 173   2                      DATA_BUF=DATA_BUF<<1;   // Right shift DATA_BUF
 174   2                      SCK=1;                                  // Set clock line high
 175   2                      if (MISO)
 176   2                              flag1=1;                        // Read data
 177   2                      else
 178   2                              flag1=0;
 179   2                                                              
C51 COMPILER V7.08   T905                                                                  04/08/2004 18:54:17 PAGE 4   

 180   2                      
 181   2                      SCK=0;                                  // Set clock line low
 182   2              }
 183   1              return DATA_BUF;                        // Return function parameter
 184   1      }
 185          /*******************************************************************************************/
 186          //function TxPacket();
 187          /*******************************************************************************************/
 188          void TxPacket(void)
 189          {
 190   1              uchar i;
 191   1              //Config905();                          
 192   1              CSN=0;                                          // Spi enable for write a spi command   
 193   1              SpiWrite(WTP);                          // Write payload command
 194   1              for (i=0;i<32;i++)
 195   1              {
 196   2                      SpiWrite(TxBuf[i]);             // Write 32 bytes Tx data
 197   2              }
 198   1              CSN=1;                                          // Spi disable                                          
 199   1              Delay(1);
 200   1              CSN=0;                                          // Spi enable for write a spi command   
 201   1              SpiWrite(WTA);                          // Write address command
 202   1              for (i=0;i<4;i++)                       // Write 4 bytes address
 203   1              {
 204   2                      SpiWrite(RxTxConf.buf[i+5]);
 205   2              }       
 206   1              CSN=1;                                          // Spi disable
 207   1              TRX_CE=1;                                       // Set TRX_CE high,start Tx data transmission
 208   1              Delay(1);                                       // while (DR!=1);
 209   1              TRX_CE=0;                                       // Set TRX_CE low
 210   1      }
 211          /*******************************************************************************************/
 212          //function RxPacket();
 213          /*******************************************************************************************/
 214          void RxPacket(void)
 215          {
 216   1              uchar i,xx;     
 217   1              TRX_CE=0;                                       // Set nRF905 in standby mode   
 218   1              CSN=0;                                          // Spi enable for write a spi command
 219   1              SpiWrite(RRP);                          // Read payload command 
 220   1              for (i=0;i<32;i++)
 221   1              {
 222   2                      RxBuf[i]=SpiRead();             // Read data and save to buffer         
 223   2              }
 224   1              CSN=1;                                          // Disable spi
 225   1              while(DR||AM);  
 226   1              P0=     RxBuf[0];                               // Buffer[0] output from P0 port...
 227   1              TRX_CE=1;
 228   1              xx=(RxBuf[0]>>4)&0x0f;
 229   1              TxData(xx);
 230   1              Delay(500);                                     // ...light led
 231   1              P0=0xff;                                        // Close led                                                            
 232   1      }
 233          /*******************************************************************************************/
 234          //function SetTxMode();
 235          /*******************************************************************************************/
 236          void SetTxMode(void)                            
 237          {       
 238   1              TX_EN=1;
 239   1              TRX_CE=0;
 240   1              Delay(1);                                       // delay for mode change(>=650us)
 241   1      }                               
C51 COMPILER V7.08   T905                                                                  04/08/2004 18:54:17 PAGE 5   

 242          /*******************************************************************************************/
 243          //function SetRxMode();
 244          /*******************************************************************************************/
 245          void SetRxMode(void)
 246          {
 247   1              TX_EN=0;
 248   1              TRX_CE=1;
 249   1              Delay(1);                                       // delay for mode change(>=650us)                               
 250   1      }
 251          /*******************************************************************************************/
 252          //Functon Scankey();
 253          /*******************************************************************************************/   
 254          void Scankey()
 255          {
 256   1              uchar Temp,xx;
 257   1              P0=0xff;
 258   1              Temp=P0&0x0f;                           // Read key value from port P0
 259   1              if (Temp!=0x0f)
 260   1              {       Delay(10);
 261   2                      Temp=P0&0x0f;                           // Read key value from port P0
 262   2                      if (Temp!=0x0f)
 263   2                      {
 264   3                              xx=Temp;        
 265   3                              Temp=Temp<<4;           // Left shift 4 bits    
 266   3                              TxBuf[0]=Temp;          // Turn On the LED
 267   3                              P0=Temp;                        // Save to Tx buffer[0]
 268   3                              SetTxMode();            // Set Tx Mode
 269   3                              TxPacket();                     // Transmit Tx buffer data
 270   3                              TxData (xx);
 271   3                              Delay(500);                     // Delay for LED light                  
 272   3                              P0=0xff;                        // Close LED display
 273   3                              SetRxMode();            // Set Rx Mode
 274   3                              
 275   3                              while((P0&0x0f)!=0x0f);
 276   3                       }
 277   2              }
 278   1      }
 279          /*******************************************************************************************/
 280          //Function TxData ();
 281          /*******************************************************************************************/
 282          void TxData (uchar x)
 283          {
 284   1              SBUF=x; 
 285   1              while(TI==0);
 286   1                      TI=0;
 287   1      
 288   1      }
 289          /*******************************************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    404    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     65       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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