📄 nrf2401.lst
字号:
254 2 _nop_();
255 2
256 2 CLK1=0;
257 2 uiData = uiData<<1;
258 2 }
259 1 }
260
261 //=============================================================
262 // 语法格式: void nRF2401_SendByte(unsigned int TxData)
263 // 实现功能: 将目标地址+字节数据写入nRF2401A
264 // 参数: unsigned int TxData: 待发送字节数据
265 // 返回值: 无
266 //=============================================================
267 void nRF2401_SendByte(unsigned char TxData)
268 {
269 1 unsigned int i;
270 1
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:17:47 PAGE 6
304 //=============================================================
305 void nRF2401_SendWord(unsigned int TxData)
306 {
307 1 unsigned int i;
308 1
309 1 CE=1;
310 1 Delay_Us(1);
311 1 for(i=0; i<AddrByteCnt; i++)
312 1 {
313 2 nRF2401_WriteByte(AddrBuffer[i]);
314 2 }
315 1 nRF2401_WriteWord(TxData);
316 1 //*P_IOB_Buffer &= ~CE;
317 1 CE=0;
318 1 //*P_IOB_Buffer &= ~DATA;
319 1 DATA=0;
320 1 Delay_Us(20);
321 1 }
322
323 //=============================================================
324 // 语法格式: void nRF2401_SendBuffer_Byte(unsigned int *TxData,unsigned int DataByte)
325 // 实现功能: 向nRF2401A发送一个数组的数据(字节方式)
326 // 参数: unsigned int *TxData: 待发送数组
327 // unsigned int DataByte:数组的长度
328 // 返回值: 无
329 //=============================================================
330 void nRF2401_SendBuffer_Byte(unsigned char *TxData,unsigned char DataByte)
331 {
332 1 unsigned int i;
333 1
334 1
335 1 CE=1;
336 1 Delay_Us(1);
337 1 for(i=0; i<AddrByteCnt; i++)
338 1 {
339 2 nRF2401_WriteByte(AddrBuffer[i]);
340 2 }
341 1 for(i=0; i<DataByte; i++)
342 1 {
343 2 nRF2401_WriteByte(TxData[i]);
344 2 }
345 1 //*P_IOB_Buffer &= ~CE;
346 1 //*P_IOB_Buffer &= ~DATA;
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
365 1 CE=1;
C51 COMPILER V8.08 NRF2401 11/13/2008 00:17:47 PAGE 7
366 1 Delay_Us(1); //
367 1 for(i=0; i<AddrByteCnt; i++)
368 1 {
369 2 nRF2401_WriteByte(AddrBuffer[i]);
370 2 }
371 1 for(i=0; i<DataWord; i++)
372 1 {
373 2 nRF2401_WriteWord(TxData[i]);
374 2 }
375 1
376 1 CE=0;
377 1
378 1 DATA=0;
379 1 Delay_Us(20);
380 1 }
381
382 //=============================================================
383 // 语法格式: unsigned int nRF2401_RxStatus()
384 // 实现功能: 判断nRF2401A的接收状态
385 // 参数: 无
386 // 返回值: 0: 没有接收到数据
387 // 1: 已经接收到数据,等待读出
388 //=============================================================
389 unsigned char nRF2401_RxStatus()
390 {
391 1
392 1 if(DR1==0)
393 1 return(0);
394 1 else
395 1 return(1);
396 1 }
397
398 //=============================================================
399 // 语法格式: void nRF2401_ReceiveByte(unsigned int *RxData)
400 // 实现功能: 从nRF2401A读出一个字节的数据
401 // 参数: unsigned int *RxData:读出的数据
402 // 返回值: 无
403 //=============================================================
404
405
406 void nRF2401_ReceiveByte(unsigned char *RxData)
407 {
408 1
409 1 unsigned char i = 0,j = 0;
410 1 unsigned char dat = 0;
411 1
412 1
413 1 while(DR1)
414 1 {
415 2
416 2 dat <<= 1;
417 2
418 2 CLK1=1;
419 2 _nop_();
420 2 _nop_();
421 2 if(DATA)
422 2 dat |= 0x01;
423 2 i++;
424 2
425 2 CLK1=0;
426 2
427 2 if(i>7)
C51 COMPILER V8.08 NRF2401 11/13/2008 00:17:47 PAGE 8
428 2 {
429 3 i = 0;
430 3 RxData[j] = dat;
431 3 dat = 0;
432 3 j++;
433 3 }
434 2
435 2 }
436 1
437 1 DATA=1;
438 1
439 1
440 1 }
441
442 //=============================================================
443 // 语法格式: void nRF2401_ReceiveWord(unsigned int *RxData)
444 // 实现功能: 从nRF2401A读出一个字的数据
445 // 参数: unsigned int *RxData:读出的数据
446 // 返回值: 无
447 //=============================================================
448 void nRF2401_ReceiveWord(unsigned int *RxData)
449 {
450 1 unsigned int i = 0,j = 0;
451 1 unsigned int dat = 0;
452 1
453 1
454 1 while(DR1)
455 1 {
456 2 dat <<= 1;
457 2
458 2 CLK1=1;
459 2 _nop_();
460 2 _nop_();
461 2 if(DATA)
462 2 dat |= 0x01;
463 2 i++;
464 2
465 2 CLK1=0;
466 2
467 2 if(i>15)
468 2 {
469 3 i = 0;
470 3 RxData[j] = dat;
471 3 dat = 0;
472 3 j++;
473 3 }
474 2
475 2 }
476 1
477 1 DATA=1;
478 1 }
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:17:47 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 + -