📄 nrf905.lst
字号:
195 4 case LED4:TxData('D');break;
196 4 //default:P0=0xff;TxBuf[0]=0xff;
197 4 }
198 3 //===============NRF905发送相应的按键
199 3 SetTxMode(); // Set Tx Mode
200 3 TxPacket(); // Transmit Tx buffer data
201 3 TxBuf[0] = 0xff;
202 3 SetRxMode(); // Set nRF905 in Rx mode
203 3 tf=0;
204 3 Delay(500);
205 3 P0=0xff;
206 3 }
207 2
208 2 //=====================等待NRF905接收
209 2 if (DR) // If recive data ready...
210 2 RxPacket(); // ... recive data
211 2 //=====================从串口接收到数据
212 2 if (rsbrf!=0)
213 2 {
214 3 switch(rsbrf)
215 3 {
216 4 case 'A':P0=LED1;TxBuf[0]=LED1;delayf=1;break;
217 4 case 'B':P0=LED2;TxBuf[0]=LED2;delayf=1;break;
218 4 case 'C':P0=LED3;TxBuf[0]=LED3;delayf=1;break;
219 4 case 'D':P0=LED4;TxBuf[0]=LED4;delayf=1;break;
220 4 //default:P0=0xff;TxBuf[0]=0xff;
221 4 }
222 3 //====================NRF905发送串口接收到的相应的字符
223 3 if(TxBuf[0]!=0xff)
224 3 if(TxBuf[0]!=0x00)
225 3 {
226 4 SetTxMode(); // Set Tx Mode
227 4 TxPacket(); // Transmit Tx buffer data
228 4 TxBuf[0] = 0xff;
229 4 SetRxMode(); // Set nRF905 in Rx mode
230 4 }
231 3 //=====================
232 3 if(delayf==1)
233 3 {
234 4 Delay(500);
235 4 delayf = 0 ;
236 4 P0 = 0xff ;
237 4 }
238 3 }
239 2 //=====================
240 2 if(rsbrf!=0)
241 2 {
C51 COMPILER V7.06 NRF905 03/24/2007 09:42:31 PAGE 5
242 3 TxData(rsbrf);
243 3 rsbrf = 0 ;
244 3 }
245 2 //=====================
246 2
247 2
248 2 }
249 1 }
250 /*******************************************************************************************/
251 /*******************************************************************************************/
252 //function Config905();
253 /*******************************************************************************************/
254 void Config905(void)
255 {
256 1 unsigned char i;
257 1 CSN=0; // Spi enable for write a spi command
258 1 SpiWrite(WC); // Write config command写放配置命令
259 1 for (i=0;i<RxTxConf.n;i++) // Write configration words 写放配置字
260 1 {
261 2 SpiWrite(RxTxConf.buf[i]);
262 2 }
263 1 CSN=1; // Disable Spi
264 1 }
265 /*******************************************************************************************/
266 //function SpiWrite();
267 /*******************************************************************************************/
268 void SpiWrite(unsigned char byte)
269 {
270 1 unsigned char i;
271 1 DATA_BUF=byte; // Put function's parameter into a bdata variable
272 1 for (i=0;i<8;i++) // Setup byte circulation bits
273 1 {
274 2
275 2 if (flag) // Put DATA_BUF.7 on data line
276 2 MOSI=1;
277 2 else
278 2 MOSI=0;
279 2 SCK=1; // Set clock line high
280 2 DATA_BUF=DATA_BUF<<1; // Shift DATA_BUF
281 2 SCK=0; // Set clock line low
282 2 }
283 1 }
284 /*******************************************************************************************/
285 //function SpiRead();
286 /*******************************************************************************************/
287 unsigned char SpiRead(void)
288 {
289 1 unsigned char i;
290 1 for (i=0;i<8;i++) // Setup byte circulation bits
291 1 {
292 2 DATA_BUF=DATA_BUF<<1; // Right shift DATA_BUF
293 2 SCK=1; // Set clock line high
294 2 if (MISO)
295 2 flag1=1; // Read data
296 2 else
297 2 flag1=0;
298 2
299 2
300 2 SCK=0; // Set clock line low
301 2 }
302 1 return DATA_BUF; // Return function parameter
303 1 }
C51 COMPILER V7.06 NRF905 03/24/2007 09:42:31 PAGE 6
304 /*******************************************************************************************/
305 //function TxPacket();
306 /*******************************************************************************************/
307 void TxPacket(void)
308 {
309 1 unsigned char i;
310 1 //Config905();
311 1 CSN=0; // Spi enable for write a spi command
312 1 SpiWrite(WTP); // Write payload command
313 1 for (i=0;i<32;i++)
314 1 {
315 2 SpiWrite(TxBuf[i]); // Write 32 bytes Tx data
316 2 }
317 1 CSN=1; // Spi disable
318 1 Delay(1);
319 1 CSN=0; // Spi enable for write a spi command
320 1 SpiWrite(WTA); // Write address command
321 1 for (i=0;i<4;i++) // Write 4 bytes address
322 1 {
323 2 SpiWrite(RxTxConf.buf[i+5]);
324 2 }
325 1 CSN=1; // Spi disable
326 1 TRX_CE=1; // Set TRX_CE high,start Tx data transmission
327 1 Delay(1); // while (DR!=1);
328 1 TRX_CE=0; // Set TRX_CE low
329 1 }
330 /*******************************************************************************************/
331 //function RxPacket();
332 /*******************************************************************************************/
333 void RxPacket(void)
334 {
335 1 unsigned char i;
336 1 TRX_CE=0; // Set nRF905 in standby mode
337 1 CSN=0; // Spi enable for write a spi command
338 1 SpiWrite(RRP); // Read payload command
339 1 for (i=0;i<32;i++)
340 1 {
341 2 RxBuf[i]=SpiRead(); // Read data and save to buffer
342 2 }
343 1 CSN=1; // Disable spi
344 1 while(DR||AM);
345 1 P0= RxBuf[0]; // Buffer[0] output from P0 port...
346 1 TRX_CE=1;
347 1 //xx=(RxBuf[0]>>4)&0x0f;
348 1 //TxData(xx);
349 1 //=====================
350 1 //temp1=P0;
351 1 switch(P0)
352 1 {
353 2 case LED1:TxData('A');;break;
354 2 case LED2:TxData('B');;break;
355 2 case LED3:TxData('C');;break;
356 2 case LED4:TxData('D');;break;
357 2 //default:P0=0xff;TxBuf[0]=0xff;
358 2 }
359 1 //=====================
360 1
361 1 Delay(500); // ...light led
362 1 P0=0xff; // Close led
363 1 }
364 /*******************************************************************************************/
365 //function SetTxMode();
C51 COMPILER V7.06 NRF905 03/24/2007 09:42:31 PAGE 7
366 /*******************************************************************************************/
367 void SetTxMode(void)
368 {
369 1 TX_EN=1;
370 1 TRX_CE=0;
371 1 Delay(1); // delay for mode change(>=650us)
372 1 }
373 /*******************************************************************************************/
374 //function SetRxMode();
375 /*******************************************************************************************/
376 void SetRxMode(void)
377 {
378 1 TX_EN=0; //
379 1 TRX_CE=1; //
380 1 Delay(1); // delay for mode change(>=650us)
381 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 608 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 70 5
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 + -