MAIN.C 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /******************************************************************************/
  2. /* -- 深圳安信可科技有限公司 -- */
  3. /*
  4. // 文件名:main.c
  5. // 说明:供客户测试模块通信使用程序
  6. // 编写人员:
  7. // 编写日期:
  8. // 程序维护:
  9. // 维护记录:
  10. //
  11. //
  12. */
  13. // 免责声明:该程序仅用于学习与交流
  14. // (c) Anxinke Corporation. All rights reserved.
  15. /******************************************************************************/
  16. #include "typedef.h"
  17. #include "gpio.h"
  18. #include "uart.h"
  19. #include "nrf_24l01.h"
  20. #include "delay.h"
  21. /******************************************************************************/
  22. // 函数名称:main
  23. // 输入参数:
  24. // 输出参数:
  25. // 函数功能:
  26. /******************************************************************************/
  27. void main ( void )
  28. {
  29. unsigned char i = 0;
  30. unsigned int count_send = 0;
  31. unsigned int rec_new = 0;
  32. unsigned int rec_old = 0;
  33. unsigned int rec_err = 0;
  34. unsigned int lock_key = 0;
  35. uartInit();
  36. Delay100ms();
  37. init_nrf24l01_io();
  38. led = 0;
  39. Delay100ms();
  40. led = 1;
  41. Delay100ms();
  42. led = 0;
  43. Delay100ms();
  44. led = 1;
  45. Delay100ms();
  46. TI = 1;
  47. Delay100ms();
  48. uartSendString ( "READY!\r\n" );
  49. ifnnrf_rx_mode();
  50. while ( 1 )
  51. {
  52. KEY = 1;
  53. KEY2 = 1;
  54. while ( KEY == 0 || KEY2 == 0 )
  55. {
  56. IRQ = 1;
  57. SPI_RW_Reg ( WRITE_REG + STATUS, 0xff );
  58. if ( KEY == 0 )
  59. {
  60. tx_buf[0] = 0xAA;
  61. }
  62. else if ( KEY2 == 0 )
  63. {
  64. tx_buf[0] = 0x55;
  65. }
  66. ifnnrf_tx_mode();
  67. while ( IRQ );
  68. sta = SPI_Read ( STATUS );
  69. SPI_RW_Reg ( WRITE_REG + STATUS, 0xff );
  70. if ( sta & STA_MARK_TX )
  71. {
  72. if ( KEY == 0 )
  73. {
  74. led = 0;
  75. Delay100ms();
  76. led = 1;
  77. Delay100ms();
  78. }
  79. else
  80. {
  81. led2 = 0;
  82. Delay100ms();
  83. led2 = 1;
  84. Delay100ms();
  85. }
  86. }
  87. else
  88. {
  89. ifnnrf_CLERN_ALL();
  90. }
  91. lock_key = 1;
  92. } //发送
  93. if ( lock_key )
  94. {
  95. lock_key = 0;
  96. ifnnrf_rx_mode();
  97. IRQ = 1;
  98. while ( IRQ == 0 );
  99. _delay_us ( 400 );
  100. }
  101. IRQ = 1;
  102. if ( IRQ == 0 )
  103. {
  104. sta = SPI_Read ( STATUS );
  105. SPI_RW_Reg ( WRITE_REG + STATUS, 0xff );
  106. if ( sta & STA_MARK_RX )
  107. {
  108. SPI_Read_Buf ( RD_RX_PLOAD, rx_buf, TX_PLOAD_WIDTH );
  109. if ( rx_buf[0] == 0xAA )
  110. {
  111. uartSendString ( "你按下了左边按键\r\n" );
  112. led = 0;
  113. Delay100ms();
  114. led = 1;
  115. Delay100ms();
  116. }
  117. else if ( rx_buf[0] == 0x55 )
  118. {
  119. uartSendString ( "你按下了右边按键\r\n" );
  120. led2 = 0;
  121. Delay100ms();
  122. led2 = 1;
  123. Delay100ms();
  124. }
  125. rx_buf[0] = 0;
  126. }
  127. else
  128. {
  129. ifnnrf_CLERN_ALL();
  130. ifnnrf_rx_mode();
  131. IRQ = 1;
  132. while ( IRQ == 0 );
  133. }
  134. } //接收
  135. }
  136. }