📄 nrf2401.lst
字号:
254 2 _nop_();
255 2 _nop_();
256 2
257 2 CLK1=0;
258 2 uiData = uiData<<1;
259 2 }
260 1 }
261
262 //=============================================================
263 // 语法格式: void nRF2401_SendByte(unsigned int TxData)
264 // 实现功能: 将目标地址+字节数据写入nRF2401A
265 // 参数: unsigned int TxData: 待发送字节数据
266 // 返回值: 无
267 //=============================================================
268 void nRF2401_SendByte(unsigned char TxData)
269 {
270 1 unsigned int i;
271 1
272 1 CE=1;
273 1 Delay_Us(1);
274 1
275 1 for(i=0; i<AddrByteCnt; i++)
276 1 {
277 2 nRF2401_WriteByte(AddrBuffer[i]);
278 2 }
279 1 nRF2401_WriteByte(TxData);
280 1
281 1 CE=0;
282 1
283 1 DATA=0;
284 1 Delay_Us(10);
285 1 }
286
287
288 void nRF2401_Str(unsigned char *arr)
289 {
290 1 unsigned char i;
291 1
292 1 i = 0;
293 1 while(arr[i] != '\0')
294 1 {
295 2 nRF2401_SendByte(arr[i]);
296 2 i++;
297 2 }
298 1 }
299 //=============================================================
300 // 语法格式: void nRF2401_SendWord(unsigned int TxData)
301 // 实现功能: 将目标地址+字数据写入nRF2401A
302 // 参数: unsigned int TxData: 待发送字数据
303 // 返回值: 无
C51 COMPILER V8.08 NRF2401 11/13/2008 00:14:55 PAGE 6
304 //=============================================================
305 void nRF2401_SendWord(unsigned int TxData)
306 {
307 1 unsigned int i;
308 1
309 1
310 1 CE=1;
311 1 Delay_Us(1);
312 1 for(i=0; i<AddrByteCnt; i++)
313 1 {
314 2 nRF2401_WriteByte(AddrBuffer[i]);
315 2 }
316 1 nRF2401_WriteWord(TxData);
317 1
318 1 CE=0;
319 1
320 1 DATA=0;
321 1 Delay_Us(20);
322 1 }
323
324 //=============================================================
325 // 语法格式: void nRF2401_SendBuffer_Byte(unsigned int *TxData,unsigned int DataByte)
326 // 实现功能: 向nRF2401A发送一个数组的数据(字节方式)
327 // 参数: unsigned int *TxData: 待发送数组
328 // unsigned int DataByte:数组的长度
329 // 返回值: 无
330 //=============================================================
331 void nRF2401_SendBuffer_Byte(unsigned char *TxData,unsigned char DataByte)
332 {
333 1 unsigned int i;
334 1
335 1
336 1 CE=1;
337 1 Delay_Us(1);
338 1 for(i=0; i<AddrByteCnt; i++)
339 1 {
340 2 nRF2401_WriteByte(AddrBuffer[i]);
341 2 }
342 1 for(i=0; i<DataByte; i++)
343 1 {
344 2 nRF2401_WriteByte(TxData[i]);
345 2 }
346 1
347 1 CE=0;
348 1
349 1 DATA=0;
350 1 Delay_Us(20);
351 1 }
352
353 //=============================================================
354 // 语法格式: void nRF2401_SendBuffer_Word(unsigned int *TxData,unsigned int DataWord)
355 // 实现功能: 向nRF2401A发送一个数组的数据(字方式)
356 // 参数: unsigned int *TxData: 待发送数组
357 // unsigned int DataWord:数组的长度
358 // 返回值: 无
359 //=============================================================
360 void nRF2401_SendBuffer_Word(unsigned int *TxData,unsigned int DataWord)
361 {
362 1 unsigned int i;
363 1
364 1 CE=1;
365 1 Delay_Us(1); //
C51 COMPILER V8.08 NRF2401 11/13/2008 00:14:55 PAGE 7
366 1 for(i=0; i<AddrByteCnt; i++)
367 1 {
368 2 nRF2401_WriteByte(AddrBuffer[i]);
369 2 }
370 1 for(i=0; i<DataWord; i++)
371 1 {
372 2 nRF2401_WriteWord(TxData[i]);
373 2 }
374 1
375 1 CE=0;
376 1
377 1 DATA=0;
378 1 Delay_Us(20);
379 1 }
380
381 //=============================================================
382 // 语法格式: unsigned int nRF2401_RxStatus()
383 // 实现功能: 判断nRF2401A的接收状态
384 // 参数: 无
385 // 返回值: 0: 没有接收到数据
386 // 1: 已经接收到数据,等待读出
387 //=============================================================
388 unsigned char nRF2401_RxStatus()
389 {
390 1
391 1 if(DR1==0)
392 1 return(0);
393 1 else
394 1 return(1);
395 1 }
396
397 //=============================================================
398 // 语法格式: void nRF2401_ReceiveByte(unsigned int *RxData)
399 // 实现功能: 从nRF2401A读出一个字节的数据
400 // 参数: unsigned int *RxData:读出的数据
401 // 返回值: 无
402 //=============================================================
403
404
405 void nRF2401_ReceiveByte(unsigned char *RxData)
406 {
407 1
408 1 unsigned char i = 0,j = 0;
409 1 unsigned char dat = 0;
410 1
411 1
412 1 while(DR1)
413 1 {
414 2
415 2 dat <<= 1;
416 2
417 2 CLK1=1;
418 2 _nop_();
419 2 _nop_();
420 2 if(DATA)
421 2 dat |= 0x01;
422 2 i++;
423 2
424 2 CLK1=0;
425 2
426 2 if(i>7)
427 2 {
C51 COMPILER V8.08 NRF2401 11/13/2008 00:14:55 PAGE 8
428 3 i = 0;
429 3 RxData[j] = dat;
430 3 dat = 0;
431 3 j++;
432 3 }
433 2
434 2 }
435 1
436 1 DATA=1;
437 1
438 1
439 1 }
440
441 //=============================================================
442 // 语法格式: void nRF2401_ReceiveWord(unsigned int *RxData)
443 // 实现功能: 从nRF2401A读出一个字的数据
444 // 参数: unsigned int *RxData:读出的数据
445 // 返回值: 无
446 //=============================================================
447 void nRF2401_ReceiveWord(unsigned int *RxData)
448 {
449 1 unsigned int i = 0,j = 0;
450 1 unsigned int dat = 0;
451 1
452 1
453 1 while(DR1)
454 1 {
455 2 dat <<= 1;
456 2
457 2 CLK1=1;
458 2 _nop_();
459 2 _nop_();
460 2 if(DATA)
461 2 dat |= 0x01;
462 2 i++;
463 2
464 2 CLK1=0;
465 2
466 2 if(i>15)
467 2 {
468 3 i = 0;
469 3 RxData[j] = dat;
470 3 dat = 0;
471 3 j++;
472 3 }
473 2
474 2 }
475 1
476 1 DATA=1;
477 1 }
478
479
480 //=============================================================
481 // 语法格式: void Delay_Us(unsigned int TimeCnt)
482 // 实现功能: 延时(uS)
483 // 参数: unsigned int TimeCnt:延时的us数
484 // 返回值: 无
485 //=============================================================
486 void Delay_Us(unsigned int TimeCnt)
487 {
488 1 int i;
489 1
C51 COMPILER V8.08 NRF2401 11/13/2008 00:14:55 PAGE 9
490 1 for(i = 0; i < TimeCnt; i++)
491 1 {
492 2
493 2 _nop_();
494 2
495 2 }
496 1 }
497
498
499 //******************************** END *************************************
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 791 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 21 33
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 + -