nRF2401RX.LST
上传用户:gxz1972
上传日期:2019-09-13
资源大小:323k
文件大小:38k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 1   
  2. C51 COMPILER V7.02b, COMPILATION OF MODULE NRF2401RX
  3. OBJECT MODULE PLACED IN nRF2401RX.OBJ
  4. COMPILER INVOKED BY: C:KeilC51BINc51.exe nRF2401RX.c DB OE
  5. stmt level    source
  6.    1          //-----------------------------------------------------------------------------
  7.    2          // nRF2401RX.c
  8.    3          //-----------------------------------------------------------------------------
  9.    4          // Copyright 2007 Vson Technology, Inc.
  10.    5          // http://www.usbmcu.com
  11.    6          //
  12.    7          // Program Description:
  13.    8          //
  14.    9          //
  15.   10          //
  16.   11          //
  17.   12          //
  18.   13          // MCU:            C8051F347
  19.   14          // Tool chain:     Keil C51 7.50 / Keil EVAL C51
  20.   15          //                 Silicon Laboratories IDE version 2.6
  21.   16          // Command Line:   
  22.   17          // Project Name:   TR1000
  23.   18          //
  24.   19          //
  25.   20          // Release 1.0
  26.   21          //    -All changes by Brin
  27.   22          //    -24 JUL 2007
  28.   23          //
  29.   24          // 2007.10.19更改 1. 丢弃包序相同的数据——》丢弃ID相同且包序号相同的数据(建1K缓冲区存 ID号 包序号)
  30.   25          // 
  31.   26          
  32.   27          
  33.   28          #include "Include_H.h"
  34.   29          
  35.   30          #define _RF_PADLOAD_TEST_
  36.   31          void nRF2401Configuration(void)
  37.   32          {
  38.   33   1       unsigned char i;
  39.   34   1       /*==================================================*/
  40.   35   1       //config channeal 1
  41.   36   1       /*==================================================*/
  42.   37   1       //Configuration initial
  43.   38   1       //BS   CONFIG_PORT,PWR_UP                                                                      //
  44.   39   1       sbitRfCE1 = 0;
  45.   40   1       sbitRfCS1 = 0;//BC     CONFIG_PORT,CS          //CE==1
  46.   41   1       sbitRfCLK1 = 0;//BC    CONFIG_PORT,CLK
  47.   42   1       sbitRfData1 = 0;//BC   CONFIG_PORT,DIN
  48.   43   1       //Configuration initial end
  49.   44   1      
  50.   45   1       sbitRfCS1 = 1;//BS     CONFIG_PORT,CS                  //entry configuration mode ce==0
  51.   46   1      //CALL Delay_5us                                        //Tcs2data min. 5us
  52.   47   1       for (i = 0; i < 20; i++);    // Wait 5us 
  53.   48   1      
  54.   49   1       Channel1Write8bitData(RF_CONFIG_DATA14);
  55.   50   1       Channel1Write8bitData(RF_CONFIG_DATA13);
  56.   51   1       Channel1Write8bitData(RF_CONFIG_DATA12);
  57.   52   1       Channel1Write8bitData(RF_CONFIG_DATA11);
  58.   53   1       Channel1Write8bitData(RF_CONFIG_DATA10);
  59.   54   1       Channel1Write8bitData(RF_CONFIG_DATA9);
  60.   55   1       Channel1Write8bitData(RF_CONFIG_DATA8);
  61. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 2   
  62.   56   1       Channel1Write8bitData(RF_CONFIG_DATA7);
  63.   57   1       Channel1Write8bitData(RF_CONFIG_DATA6);
  64.   58   1       Channel1Write8bitData(RF_CONFIG_DATA5);
  65.   59   1       Channel1Write8bitData(RF_CONFIG_DATA4);
  66.   60   1       Channel1Write8bitData(RF_CONFIG_DATA3);
  67.   61   1       Channel1Write8bitData(RF_CONFIG_DATA2);
  68.   62   1       Channel1Write8bitData(RF_CONFIG_DATA1);
  69.   63   1       Channel1Write8bitData(gaucRfConfigData0[0]);//(RF_CONFIG_DATA00);
  70.   64   1       
  71.   65   1       for (i = 0; i < 20; i++);    // Wait 5us
  72.   66   1      
  73.   67   1       sbitRfCS1 = 0;  //BC   CONFIG_PORT,CS                          //After finish configuration mode,Entry stanby mode
  74.   68   1       sbitRfData1 = 0; //BC  CONFIG_PORT,DIN                 //Remain low
  75.   69   1      
  76.   70   1       sbitRfCE1 = 1; //BS    CONFIG_PORT,CE
  77.   71   1      
  78.   72   1      
  79.   73   1       for (i = 0; i < 200; i++);    // Wait 5us
  80.   74   1        
  81.   75   1      /*==================================================*/
  82.   76   1      //config channeal 2
  83.   77   1      /*==================================================*/
  84.   78   1       
  85.   79   1      
  86.   80   1       //Configuration initial
  87.   81   1       //BS   CONFIG_PORT,PWR_UP                                                                      //
  88.   82   1       sbitRfCE2 = 0;
  89.   83   1       sbitRfCS2 = 0;//BC     CONFIG_PORT,CS          //CE==1
  90.   84   1       sbitRfCLK2 = 0;//BC    CONFIG_PORT,CLK
  91.   85   1       sbitRfData2 = 0;//BC   CONFIG_PORT,DIN
  92.   86   1       //Configuration initial end
  93.   87   1      
  94.   88   1      
  95.   89   1       sbitRfCS2 = 1;//BS     CONFIG_PORT,CS                  //entry configuration mode ce==0
  96.   90   1      //CALL Delay_5us                                        //Tcs2data min. 5us
  97.   91   1       for (i = 0; i < 20; i++);    // Wait 5us 
  98.   92   1      
  99.   93   1       Channel2Write8bitData(RF_CONFIG_DATA14);
  100.   94   1       Channel2Write8bitData(RF_CONFIG_DATA13);
  101.   95   1       Channel2Write8bitData(RF_CONFIG_DATA12);
  102.   96   1       Channel2Write8bitData(RF_CONFIG_DATA11);
  103.   97   1       Channel2Write8bitData(RF_CONFIG_DATA10);
  104.   98   1       Channel2Write8bitData(RF_CONFIG_DATA9);
  105.   99   1       Channel2Write8bitData(RF_CONFIG_DATA8);
  106.  100   1       Channel2Write8bitData(RF_CONFIG_DATA7);
  107.  101   1       Channel2Write8bitData(RF_CONFIG_DATA6);
  108.  102   1       Channel2Write8bitData(RF_CONFIG_DATA5);
  109.  103   1       Channel2Write8bitData(RF_CONFIG_DATA4);
  110.  104   1       Channel2Write8bitData(RF_CONFIG_DATA3);
  111.  105   1       Channel2Write8bitData(RF_CONFIG_DATA2);
  112.  106   1       Channel2Write8bitData(RF_CONFIG_DATA1);
  113.  107   1       Channel2Write8bitData(gaucRfConfigData0[1]);//(RF_CONFIG_DATA00);
  114.  108   1       
  115.  109   1       for (i = 0; i < 20; i++);    // Wait 5us
  116.  110   1      
  117.  111   1       sbitRfCS2 = 0;  //BC   CONFIG_PORT,CS                          //After finish configuration mode,Entry stanby mode
  118.  112   1       sbitRfData2 = 0; //BC  CONFIG_PORT,DIN                 //Remain low
  119.  113   1      
  120.  114   1       sbitRfCE2 = 1; //BS    CONFIG_PORT,CE
  121.  115   1                      
  122.  116   1      //***********************************************************
  123.  117   1      
  124. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 3   
  125.  118   1       for (i = 0; i < 200; i++);    // Wait 5us
  126.  119   1      
  127.  120   1      /*==================================================*/
  128.  121   1      //config channeal 3
  129.  122   1      /*==================================================*/
  130.  123   1       //Configuration initial
  131.  124   1       //BS   CONFIG_PORT,PWR_UP                                                                      //
  132.  125   1       sbitRfCE3 = 0;
  133.  126   1       sbitRfCS3 = 0;//BC     CONFIG_PORT,CS          //CE==1
  134.  127   1       sbitRfCLK3 = 0;//BC    CONFIG_PORT,CLK
  135.  128   1       sbitRfData3 = 0;//BC   CONFIG_PORT,DIN
  136.  129   1       //Configuration initial end
  137.  130   1      
  138.  131   1      
  139.  132   1       sbitRfCS3 = 1;//BS     CONFIG_PORT,CS                  //entry configuration mode ce==0
  140.  133   1      //CALL Delay_5us                                        //Tcs2data min. 5us
  141.  134   1       for (i = 0; i < 20; i++);    // Wait 5us 
  142.  135   1      
  143.  136   1       Channel3Write8bitData(RF_CONFIG_DATA14);
  144.  137   1       Channel3Write8bitData(RF_CONFIG_DATA13);
  145.  138   1       Channel3Write8bitData(RF_CONFIG_DATA12);
  146.  139   1       Channel3Write8bitData(RF_CONFIG_DATA11);
  147.  140   1       Channel3Write8bitData(RF_CONFIG_DATA10);
  148.  141   1       Channel3Write8bitData(RF_CONFIG_DATA9);
  149.  142   1       Channel3Write8bitData(RF_CONFIG_DATA8);
  150.  143   1       Channel3Write8bitData(RF_CONFIG_DATA7);
  151.  144   1       Channel3Write8bitData(RF_CONFIG_DATA6);
  152.  145   1       Channel3Write8bitData(RF_CONFIG_DATA5);
  153.  146   1       Channel3Write8bitData(RF_CONFIG_DATA4);
  154.  147   1       Channel3Write8bitData(RF_CONFIG_DATA3);
  155.  148   1       Channel3Write8bitData(RF_CONFIG_DATA2);
  156.  149   1       Channel3Write8bitData(RF_CONFIG_DATA1);
  157.  150   1       Channel3Write8bitData(gaucRfConfigData0[2]);//(RF_CONFIG_DATA00);
  158.  151   1       
  159.  152   1       for (i = 0; i < 20; i++);    // Wait 5us
  160.  153   1      
  161.  154   1       sbitRfCS3 = 0;  //BC   CONFIG_PORT,CS                          //After finish configuration mode,Entry stanby mode
  162.  155   1       sbitRfData3 = 0; //BC  CONFIG_PORT,DIN                 //Remain low
  163.  156   1      
  164.  157   1       sbitRfCE3 = 1; //BS    CONFIG_PORT,CE
  165.  158   1                      
  166.  159   1      //***********************************************************
  167.  160   1      
  168.  161   1       for (i = 0; i < 200; i++);    // Wait 5us
  169.  162   1      
  170.  163   1      
  171.  164   1      /*==================================================*/
  172.  165   1      //config channeal 4
  173.  166   1      /*==================================================*/
  174.  167   1       //Configuration initial
  175.  168   1       //BS   CONFIG_PORT,PWR_UP                                                                      //
  176.  169   1       sbitRfCE4 = 0;
  177.  170   1       sbitRfCS4 = 0;//BC     CONFIG_PORT,CS          //CE==1
  178.  171   1       sbitRfCLK4 = 0;//BC    CONFIG_PORT,CLK
  179.  172   1       sbitRfData4 = 0;//BC   CONFIG_PORT,DIN
  180.  173   1       //Configuration initial end
  181.  174   1      
  182.  175   1      
  183.  176   1       sbitRfCS4 = 1;//BS     CONFIG_PORT,CS                  //entry configuration mode ce==0
  184.  177   1      //CALL Delay_5us                                        //Tcs2data min. 5us
  185.  178   1       for (i = 0; i < 20; i++);    // Wait 5us 
  186.  179   1      
  187. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 4   
  188.  180   1       Channel4Write8bitData(RF_CONFIG_DATA14);
  189.  181   1       Channel4Write8bitData(RF_CONFIG_DATA13);
  190.  182   1       Channel4Write8bitData(RF_CONFIG_DATA12);
  191.  183   1       Channel4Write8bitData(RF_CONFIG_DATA11);
  192.  184   1       Channel4Write8bitData(RF_CONFIG_DATA10);
  193.  185   1       Channel4Write8bitData(RF_CONFIG_DATA9);
  194.  186   1       Channel4Write8bitData(RF_CONFIG_DATA8);
  195.  187   1       Channel4Write8bitData(RF_CONFIG_DATA7);
  196.  188   1       Channel4Write8bitData(RF_CONFIG_DATA6);
  197.  189   1       Channel4Write8bitData(RF_CONFIG_DATA5);
  198.  190   1       Channel4Write8bitData(RF_CONFIG_DATA4);
  199.  191   1       Channel4Write8bitData(RF_CONFIG_DATA3);
  200.  192   1       Channel4Write8bitData(RF_CONFIG_DATA2);
  201.  193   1       Channel4Write8bitData(RF_CONFIG_DATA1);
  202.  194   1       Channel4Write8bitData(gaucRfConfigData0[3]);//(RF_CONFIG_DATA00);
  203.  195   1       
  204.  196   1       for (i = 0; i < 20; i++);    // Wait 5us
  205.  197   1      
  206.  198   1       sbitRfCS4 = 0;  //BC   CONFIG_PORT,CS                          //After finish configuration mode,Entry stanby mode
  207.  199   1       sbitRfData4 = 0; //BC  CONFIG_PORT,DIN                 //Remain low
  208.  200   1      
  209.  201   1       sbitRfCE4 = 1; //BS    CONFIG_PORT,CE
  210.  202   1                      
  211.  203   1      //***********************************************************   
  212.  204   1      }
  213.  205          
  214.  206          //====================================================
  215.  207          //====================================================
  216.  208          //Low for ready Data High for Write Data
  217.  209          //时序 Low  8 LowHigh Low
  218.  210          void Channel1Write8bitData(unsigned char ucWriteData)
  219.  211          {
  220.  212   1           unsigned char ucGeneralCount=0;
  221.  213   1           unsigned char i;
  222.  214   1           //__disable_interrupt();
  223.  215   1           
  224.  216   1           for (ucGeneralCount=0;ucGeneralCount<8;ucGeneralCount++)
  225.  217   1           {
  226.  218   2      
  227.  219   2              sbitRfCLK1 = 0;
  228.  220   2              for (i = 0; i < 1; i++);    // Wait 0.5us
  229.  221   2              if ((ucWriteData & BIT7) == BIT7)
  230.  222   2                {sbitRfData1 = 1;} //set   DATA bit
  231.  223   2              else
  232.  224   2                {sbitRfData1 = 0;} //reset DATA bit
  233.  225   2              for (i = 0; i < 1; i++);    // Wait 0.5us
  234.  226   2              sbitRfCLK1 = 1;
  235.  227   2              for (i = 0; i < 2; i++);    // Wait 1us
  236.  228   2              ucWriteData=ucWriteData<<1;  //MSB   
  237.  229   2           }
  238.  230   1      
  239.  231   1           sbitRfCLK1 = 0;// for last low
  240.  232   1           //sbitRfData1 = 0;
  241.  233   1           //_EINT();                             //enable interrupt   
  242.  234   1      }
  243.  235          
  244.  236          //====================================================
  245.  237          //====================================================
  246.  238          //Low for ready Data High for Write Data
  247.  239          //时序 Low  8 LowHigh Low
  248.  240          void Channel2Write8bitData(unsigned char ucWriteData)
  249.  241          {
  250. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 5   
  251.  242   1           unsigned char ucGeneralCount=0;
  252.  243   1           unsigned char i;
  253.  244   1           //__disable_interrupt();
  254.  245   1           
  255.  246   1           for (ucGeneralCount=0;ucGeneralCount<8;ucGeneralCount++)
  256.  247   1           {
  257.  248   2      
  258.  249   2              sbitRfCLK2 = 0;
  259.  250   2              for (i = 0; i < 1; i++);    // Wait 0.5us
  260.  251   2              if ((ucWriteData & BIT7) == BIT7)
  261.  252   2                {sbitRfData2 = 1;} //set   DATA bit
  262.  253   2              else
  263.  254   2                {sbitRfData2 = 0;} //reset DATA bit
  264.  255   2              for (i = 0; i < 1; i++);    // Wait 0.5us
  265.  256   2              sbitRfCLK2 = 1;
  266.  257   2              for (i = 0; i < 2; i++);    // Wait 1us
  267.  258   2              ucWriteData=ucWriteData<<1;  //MSB   
  268.  259   2           }
  269.  260   1      
  270.  261   1           sbitRfCLK2 = 0;// for last low
  271.  262   1           //sbitRfData2 = 0;
  272.  263   1           //_EINT();                             //enable interrupt   
  273.  264   1      }
  274.  265          
  275.  266          //====================================================
  276.  267          //====================================================
  277.  268          //Low for ready Data High for Write Data
  278.  269          //时序 Low  8 LowHigh Low
  279.  270          void Channel3Write8bitData(unsigned char ucWriteData)
  280.  271          {
  281.  272   1           unsigned char ucGeneralCount=0;
  282.  273   1           unsigned char i;
  283.  274   1           //__disable_interrupt();
  284.  275   1           
  285.  276   1           for (ucGeneralCount=0;ucGeneralCount<8;ucGeneralCount++)
  286.  277   1           {
  287.  278   2      
  288.  279   2              sbitRfCLK3 = 0;
  289.  280   2              for (i = 0; i < 1; i++);    // Wait 0.5us
  290.  281   2              if ((ucWriteData & BIT7) == BIT7)
  291.  282   2                {sbitRfData3 = 1;} //set   DATA bit
  292.  283   2              else
  293.  284   2                {sbitRfData3 = 0;} //reset DATA bit
  294.  285   2              for (i = 0; i < 1; i++);    // Wait 0.5us
  295.  286   2              sbitRfCLK3 = 1;
  296.  287   2              for (i = 0; i < 2; i++);    // Wait 1us
  297.  288   2              ucWriteData=ucWriteData<<1;  //MSB   
  298.  289   2           }
  299.  290   1      
  300.  291   1           sbitRfCLK3 = 0;// for last low
  301.  292   1           //sbitRfData3 = 0;
  302.  293   1           //_EINT();                             //enable interrupt   
  303.  294   1      }
  304.  295          
  305.  296          //====================================================
  306.  297          //====================================================
  307.  298          //Low for ready Data High for Write Data
  308.  299          //时序 Low  8 LowHigh Low
  309.  300          void Channel4Write8bitData(unsigned char ucWriteData)
  310.  301          {
  311.  302   1           unsigned char ucGeneralCount=0;
  312.  303   1           unsigned char i;
  313. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 6   
  314.  304   1           //__disable_interrupt();
  315.  305   1           
  316.  306   1           for (ucGeneralCount=0;ucGeneralCount<8;ucGeneralCount++)
  317.  307   1           {
  318.  308   2      
  319.  309   2              sbitRfCLK4 = 0;
  320.  310   2              for (i = 0; i < 1; i++);    // Wait 0.5us
  321.  311   2              if ((ucWriteData & BIT7) == BIT7)
  322.  312   2                {sbitRfData4 = 1;} //set   DATA bit
  323.  313   2              else
  324.  314   2                {sbitRfData4 = 0;} //reset DATA bit
  325.  315   2              for (i = 0; i < 1; i++);    // Wait 0.5us
  326.  316   2              sbitRfCLK4 = 1;
  327.  317   2              for (i = 0; i < 2; i++);    // Wait 1us
  328.  318   2              ucWriteData=ucWriteData<<1;  //MSB   
  329.  319   2           }
  330.  320   1      
  331.  321   1           sbitRfCLK4 = 0;// for last low
  332.  322   1           //sbitRfData4 = 0;
  333.  323   1           //_EINT();                             //enable interrupt   
  334.  324   1      }
  335.  325          
  336.  326          
  337.  327          
  338.  328          
  339.  329          //============================================================================================
  340.  330          //
  341.  331          //============================================================================================
  342.  332          bit nRF2401RxData(void)
  343.  333          {
  344.  334   1       unsigned char i;
  345.  335   1      // unsigned int j;
  346.  336   1       bit bitReceivedDataFlag = 0;
  347.  337   1       //ShockBurst TX initial
  348.  338   1       //sbitRfCE1 = 1;
  349.  339   1       //sbitRfCS1 = 0;//BC   CONFIG_PORT,CS
  350.  340   1       //sbitRfCLK1 = 0;//BC  CONFIG_PORT,CLK
  351.  341   1       //sbitRfData1 = 0;//BC CONFIG_PORT,DIN
  352.  342   1       //ShockBurst TX initial end
  353.  343   1      
  354.  344   1      
  355.  345   1       //for (i = 0; i < 20; i++);    // Wait 5us                             //Tce2data min. 5us
  356.  346   1      
  357.  347   1      for (i = 0; i < 1; i++)
  358.  348   1      {
  359.  349   2      //==================================================================
  360.  350   2      //Channel 1
  361.  351   2      //==================================================================
  362.  352   2      // for (i = 0; i < 1; i++)
  363.  353   2      // {
  364.  354   2         //if ( (sbitRfDR1 == 1) | (sbitRfDR2 == 1) | (sbitRfDR3 == 1) | (sbitRfDR4 == 1) )
  365.  355   2         if (sbitRfDR1 == 1)//(bitReceivedDataFlag == 0)//(sbitRfDR1 == 1)
  366.  356   2         {
  367.  357   3            
  368.  358   3                sbitLED = 0;
  369.  359   3                //Receive_data_start:
  370.  360   3            
  371.  361   3                //DelayMs(5);
  372.  362   3      
  373.  363   3            /*
  374.  364   3                for (j = 0; j < 20000; j++)    // Wait 5us
  375.  365   3                {
  376. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 7   
  377.  366   3                  for (i = 0; i < 200; i++)
  378.  367   3                   {;}
  379.  368   3                }
  380.  369   3                */
  381.  370   3      
  382.  371   3                //StartTimer2(10); //200ms //收到数据,启动计时200ms 
  383.  372   3                //StartTimer2(20); //200ms //收到数据,启动计时200ms //modify at 2007.11.19
  384.  373   3                StartTimer2(40); //200ms //收到数据,启动计时200ms //modify at 2007.11.30
  385.  374   3      
  386.  375   3      
  387.  376   3            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 0] = Channel1Read8bitData();
  388.  377   3                
  389.  378   3            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 1] = Channel1Read8bitData();
  390.  379   3                
  391.  380   3            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 2] = Channel1Read8bitData();
  392.  381   3                
  393.  382   3            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 3] = Channel1Read8bitData();
  394.  383   3                
  395.  384   3            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 4] = Channel1Read8bitData();
  396.  385   3                
  397.  386   3            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 5] = Channel1Read8bitData();
  398.  387   3            
  399.  388   3                  gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 6] = Channel1Read8bitData();
  400.  389   3                  
  401.  390   3                  #ifndef  _RF_PADLOAD_TEST_
  402.                           //#define   _RF_PADLOAD_TEST_
  403.               
  404.                           gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 7] = Channel1Read8bitData();
  405.                           
  406.                           gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 8] = Channel1Read8bitData();
  407.                           
  408.                           #endif
  409.  398   3                  
  410.  399   3            //#ifndef  _USB_REQUEST_H
  411.  400   3            //Channel1Read8bitData();
  412.  401   3            
  413.  402   3            
  414.  403   3      
  415.  404   3      
  416.  405   3                while( sbitRfDR1 == 1 )
  417.  406   3                {
  418.  407   4                  ;
  419.  408   4                }
  420.  409   3                
  421.  410   3            sbitLED = 1;
  422.  411   3      
  423.  412   3            //DelayMs(100);
  424.  413   3            bitReceivedDataFlag = 1; //Set flag for quit the Check Circle
  425.  414   3                
  426.  415   3               
  427.  416   3              }//if
  428.  417   2             
  429.  418   2              if (bitReceivedDataFlag == 1)
  430.  419   2                 break;
  431.  420   2      
  432.  421   2       //}//for
  433.  422   2      
  434.  423   2      /*
  435.  424   2      
  436.  425   2      //==================================================================
  437.  426   2      //Channel 2
  438.  427   2      //==================================================================
  439. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 8   
  440.  428   2      
  441.  429   2       //for (i = 0; i < 1; i++)
  442.  430   2       //{
  443.  431   2         if (sbitRfDR2 == 1)
  444.  432   2         {
  445.  433   2            sbitLED = 0;
  446.  434   2                //Receive_data_start:
  447.  435   2            
  448.  436   2                DelayMs(5);
  449.  437   2      
  450.  438   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 0] = Channel2Read8bitData();
  451.  439   2                
  452.  440   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 1] = Channel2Read8bitData();
  453.  441   2                
  454.  442   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 2] = Channel2Read8bitData();
  455.  443   2                
  456.  444   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 3] = Channel2Read8bitData();
  457.  445   2                
  458.  446   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 4] = Channel2Read8bitData();
  459.  447   2                
  460.  448   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 5] = Channel2Read8bitData();
  461.  449   2                
  462.  450   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 6] = Channel2Read8bitData();
  463.  451   2            
  464.  452   2            #ifndef  _RF_PADLOAD_TEST_
  465.  453   2            
  466.  454   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 7] = Channel2Read8bitData();
  467.  455   2                
  468.  456   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 8] = Channel2Read8bitData();
  469.  457   2            
  470.  458   2            #endif
  471.  459   2      
  472.  460   2            
  473.  461   2      
  474.  462   2                while( sbitRfDR2 == 1 )
  475.  463   2                {
  476.  464   2                  ;
  477.  465   2                }
  478.  466   2                
  479.  467   2            sbitLED = 1;
  480.  468   2      
  481.  469   2            //DelayMs(100);
  482.  470   2            bitReceivedDataFlag = 1; //Set flag for quit the Check Circle
  483.  471   2                
  484.  472   2               
  485.  473   2              }//if
  486.  474   2                  
  487.  475   2              if (bitReceivedDataFlag == 1)
  488.  476   2                 break;
  489.  477   2      
  490.  478   2       //}//for
  491.  479   2      
  492.  480   2       //DelayMs(1);
  493.  481   2      
  494.  482   2      
  495.  483   2      
  496.  484   2      
  497.  485   2      //=========================================================================
  498.  486   2      //Channel 3
  499.  487   2      //=========================================================================
  500.  488   2      
  501.  489   2      // for (i = 0; i < 1; i++)
  502. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 9   
  503.  490   2      // {
  504.  491   2         if (sbitRfDR3 == 1)//(bitReceivedDataFlag == 0)//
  505.  492   2         {
  506.  493   2            sbitLED = 0;
  507.  494   2                //Receive_data_start:
  508.  495   2            
  509.  496   2                DelayMs(5);
  510.  497   2      
  511.  498   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 0] = Channel3Read8bitData();
  512.  499   2                
  513.  500   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 1] = Channel3Read8bitData();
  514.  501   2                
  515.  502   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 2] = Channel3Read8bitData();
  516.  503   2                
  517.  504   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 3] = Channel3Read8bitData();
  518.  505   2                
  519.  506   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 4] = Channel3Read8bitData();
  520.  507   2                
  521.  508   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 5] = Channel3Read8bitData();
  522.  509   2                
  523.  510   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 6] = Channel3Read8bitData();
  524.  511   2            
  525.  512   2            #ifndef  _RF_PADLOAD_TEST_
  526.  513   2            
  527.  514   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 7] = Channel3Read8bitData();
  528.  515   2                
  529.  516   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 8] = Channel3Read8bitData();
  530.  517   2            
  531.  518   2            #endif
  532.  519   2      
  533.  520   2            
  534.  521   2      
  535.  522   2                while( sbitRfDR3 == 1 )
  536.  523   2                {
  537.  524   2                  ;
  538.  525   2                }
  539.  526   2                
  540.  527   2            sbitLED = 1;
  541.  528   2      
  542.  529   2            //DelayMs(100);
  543.  530   2            bitReceivedDataFlag = 1; //Set flag for quit the Check Circle
  544.  531   2                
  545.  532   2               
  546.  533   2              }//if
  547.  534   2          if (bitReceivedDataFlag == 1)
  548.  535   2                 break;
  549.  536   2      
  550.  537   2      // }//for
  551.  538   2      
  552.  539   2      
  553.  540   2      
  554.  541   2      
  555.  542   2      //=========================================================================
  556.  543   2      //Channel 4
  557.  544   2      //=========================================================================
  558.  545   2      // for (i = 0; i < 1; i++)
  559.  546   2      // {
  560.  547   2         if (sbitRfDR4 == 1)
  561.  548   2         {
  562.  549   2            sbitLED = 0;
  563.  550   2                //Receive_data_start:
  564.  551   2            
  565. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 10  
  566.  552   2                DelayMs(5);
  567.  553   2      
  568.  554   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 0] = Channel4Read8bitData();
  569.  555   2                
  570.  556   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 1] = Channel4Read8bitData();
  571.  557   2                
  572.  558   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 2] = Channel4Read8bitData();
  573.  559   2                
  574.  560   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 3] = Channel4Read8bitData();
  575.  561   2                
  576.  562   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 4] = Channel4Read8bitData();
  577.  563   2                
  578.  564   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 5] = Channel4Read8bitData();
  579.  565   2                
  580.  566   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 6] = Channel4Read8bitData();
  581.  567   2            
  582.  568   2            #ifndef  _RF_PADLOAD_TEST_
  583.  569   2            
  584.  570   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 7] = Channel4Read8bitData();
  585.  571   2                
  586.  572   2            gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 8] = Channel4Read8bitData();
  587.  573   2            
  588.  574   2            #endif
  589.  575   2      
  590.  576   2            
  591.  577   2      
  592.  578   2                while( sbitRfDR4 == 1 )
  593.  579   2                {
  594.  580   2                  ;
  595.  581   2                }
  596.  582   2                
  597.  583   2            sbitLED = 1;
  598.  584   2      
  599.  585   2            //DelayMs(100);
  600.  586   2            bitReceivedDataFlag = 1; //Set flag for quit the Check Circle
  601.  587   2                
  602.  588   2               
  603.  589   2              }//if
  604.  590   2      
  605.  591   2          
  606.  592   2        
  607.  593   2          
  608.  594   2              if (bitReceivedDataFlag == 1)
  609.  595   2                 break;
  610.  596   2      
  611.  597   2       //}//for
  612.  598   2      
  613.  599   2      */ 
  614.  600   2      
  615.  601   2      }//for
  616.  602   1      //=============================================================================================
  617.  603   1       
  618.  604   1       if (bitReceivedDataFlag == 1)
  619.  605   1         { 
  620.  606   2           //数据格式:地址2,地址1,地址0,数据3,数据2,数据1,数据0 地址2最高位bit7--0:学生机 1:教师机
  621.  607   2               if ((gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 0] & BIT7) == BIT7)
  622.  608   2                 {
  623.  609   3                   //1:教师机
  624.  610   3                       if ((gaucRxDataFromRfBuffer[COUNT_BASE + (COUNT_BASE + RF_PADLOAD)*0 + 3] & BIT7) == BIT7)
  625.  611   3                       M_State = TX_TEACHER_KEY_DATA_TO_HOST_STATUS;
  626.  612   3                       else 
  627.  613   3                       M_State = TX_TOUCHPAD_DATA_TO_HOST_STATUS;
  628. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 11  
  629.  614   3              }
  630.  615   2            else
  631.  616   2                  {
  632.  617   3                        //0:学生机
  633.  618   3                
  634.  619   3                            //数据3 bit7--1:有后续包 0:最后一包 bit6--1:考试数据 0:按键数据
  635.  620   3                                if ( (gaucRxDataFromRfBuffer[5] & BIT6) == BIT6 )
  636.  621   3                                  {
  637.  622   4                                    M_State = TX_STUDENT_EXAM_DATA_TO_HOST_STATUS;
  638.  623   4                                  }
  639.  624   3                                else
  640.  625   3                                  {
  641.  626   4                                        M_State = TX_STUDENT_KEY_DATA_TO_HOST_STATUS;
  642.  627   4                                  }
  643.  628   3                        
  644.  629   3                      }
  645.  630   2          }
  646.  631   1       return bitReceivedDataFlag;
  647.  632   1      
  648.  633   1      }
  649.  634          
  650.  635          
  651.  636          //nRF2401 ready Data when CLK is Low; Mcu read data when CLK is high
  652.  637          //CLK时序: Low 8个HighLow Low 
  653.  638          unsigned char Channel1Read8bitData(void)
  654.  639          {
  655.  640   1           unsigned char ucGeneralCount=0;
  656.  641   1           unsigned char ucReadData=0;
  657.  642   1           unsigned char i;
  658.  643   1               //unsigned char j=0;
  659.  644   1           //__disable_interrupt();
  660.  645   1           sbitRfCLK1 = 0;
  661.  646   1           //j = P2MDOUT;
  662.  647   1               //j = P2;
  663.  648   1               //j = P0;
  664.  649   1           for (ucGeneralCount=0;ucGeneralCount<8;ucGeneralCount++)
  665.  650   1           {
  666.  651   2      
  667.  652   2              
  668.  653   2              ucReadData = ucReadData<<1;//MSB
  669.  654   2                      
  670.  655   2              
  671.  656   2              sbitRfCLK1 = 1;//BS     CONFIG_PORT,CLK                                         ;Time Hold min.500ns
  672.  657   2              for (i = 0; i < 1; i++);    // Wait 2.5us
  673.  658   2              if (sbitRfData1 == 1)
  674.  659   2                {ucReadData |= BIT0;} //bit 1
  675.  660   2              else
  676.  661   2                {ucReadData &= ~BIT0;} // bit is 0
  677.  662   2              //for (i = 0; i < 1; i++);    // Wait 2.5us  
  678.  663   2              for (i = 0; i < 1; i++);    // Wait 2.5us
  679.  664   2                      
  680.  665   2                          sbitRfCLK1 = 0;
  681.  666   2              for (i = 0; i < 2; i++);    // Wait 2.5us
  682.  667   2      
  683.  668   2                      
  684.  669   2            }
  685.  670   1               return ucReadData;
  686.  671   1      }
  687.  672          
  688.  673          
  689.  674          /*
  690.  675          
  691. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 12  
  692.  676          //nRF2401 ready Data when CLK is Low; Mcu read data when CLK is high
  693.  677          //CLK时序: Low 8个HighLow Low 
  694.  678          unsigned char Channel2Read8bitData(void)
  695.  679          {
  696.  680               unsigned char ucGeneralCount=0;
  697.  681               unsigned char ucReadData=0;
  698.  682               unsigned char i;
  699.  683                   //unsigned char j=0;
  700.  684               //__disable_interrupt();
  701.  685               sbitRfCLK2 = 0;
  702.  686               //j = P2MDOUT;
  703.  687                   //j = P2;
  704.  688                   //j = P0;
  705.  689               for (ucGeneralCount=0;ucGeneralCount<8;ucGeneralCount++)
  706.  690               {
  707.  691          
  708.  692                  
  709.  693                  ucReadData=ucReadData<<1;//MSB
  710.  694                          
  711.  695                  
  712.  696                  sbitRfCLK2 = 1;//BS     CONFIG_PORT,CLK                                         ;Time Hold min.500ns
  713.  697                  for (i = 0; i < 1; i++);    // Wait 2.5us
  714.  698                  if (sbitRfData2 == 1)
  715.  699                    {ucReadData |= BIT0;} //bit 1
  716.  700                  else
  717.  701                    {ucReadData &= ~BIT0;} // bit is 0
  718.  702                  //for (i = 0; i < 1; i++);    // Wait 2.5us  
  719.  703                  for (i = 0; i < 1; i++);    // Wait 2.5us
  720.  704                          
  721.  705                          sbitRfCLK2 = 0;
  722.  706                  for (i = 0; i < 2; i++);    // Wait 2.5us
  723.  707          
  724.  708                          
  725.  709                }
  726.  710                   return ucReadData;
  727.  711          }
  728.  712          
  729.  713          //nRF2401 ready Data when CLK is Low; Mcu read data when CLK is high
  730.  714          //CLK时序: Low 8个HighLow Low 
  731.  715          unsigned char Channel3Read8bitData(void)
  732.  716          {
  733.  717               unsigned char ucGeneralCount=0;
  734.  718               unsigned char ucReadData=0;
  735.  719               unsigned char i;
  736.  720                   //unsigned char j=0;
  737.  721               //__disable_interrupt();
  738.  722               sbitRfCLK3 = 0;
  739.  723               //j = P2MDOUT;
  740.  724                   //j = P2;
  741.  725                   //j = P0;
  742.  726               for (ucGeneralCount=0;ucGeneralCount<8;ucGeneralCount++)
  743.  727               {
  744.  728          
  745.  729                  
  746.  730                  ucReadData=ucReadData<<1;//MSB
  747.  731                          
  748.  732                  
  749.  733                  sbitRfCLK3 = 1;//BS     CONFIG_PORT,CLK                                         ;Time Hold min.500ns
  750.  734                  for (i = 0; i < 1; i++);    // Wait 2.5us
  751.  735                  if (sbitRfData3 == 1)
  752.  736                    {ucReadData |= BIT0;} //bit 1
  753.  737                  else
  754. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 13  
  755.  738                    {ucReadData &= ~BIT0;} // bit is 0
  756.  739                  //for (i = 0; i < 1; i++);    // Wait 2.5us  
  757.  740                  for (i = 0; i < 1; i++);    // Wait 2.5us
  758.  741                          
  759.  742                          sbitRfCLK3 = 0;
  760.  743                  for (i = 0; i < 2; i++);    // Wait 2.5us
  761.  744          
  762.  745                          
  763.  746                }
  764.  747                   return ucReadData;
  765.  748          }
  766.  749          
  767.  750          
  768.  751          //nRF2401 ready Data when CLK is Low; Mcu read data when CLK is high
  769.  752          //CLK时序: Low 8个HighLow Low 
  770.  753          unsigned char Channel4Read8bitData(void)
  771.  754          {
  772.  755               unsigned char ucGeneralCount=0;
  773.  756               unsigned char ucReadData=0;
  774.  757               unsigned char i;
  775.  758                   //unsigned char j=0;
  776.  759               //__disable_interrupt();
  777.  760               sbitRfCLK4 = 0;
  778.  761               //j = P2MDOUT;
  779.  762                   //j = P2;
  780.  763                   //j = P0;
  781.  764               for (ucGeneralCount=0;ucGeneralCount<8;ucGeneralCount++)
  782.  765               {
  783.  766          
  784.  767                  
  785.  768                  ucReadData=ucReadData<<1;//MSB
  786.  769                          
  787.  770                  
  788.  771                  sbitRfCLK4 = 1;//                                       ;Time Hold min.500ns
  789.  772                  for (i = 0; i < 1; i++);    // Wait 2.5us
  790.  773                  if (sbitRfData4 == 1)
  791.  774                    {ucReadData |= BIT0;} //bit 1
  792.  775                  else
  793.  776                    {ucReadData &= ~BIT0;} // bit is 0
  794.  777                  //for (i = 0; i < 1; i++);    // Wait 2.5us  
  795.  778                  for (i = 0; i < 1; i++);    // Wait 2.5us
  796.  779                          
  797.  780                          sbitRfCLK4 = 0;
  798.  781                  for (i = 0; i < 2; i++);    // Wait 2.5us
  799.  782          
  800.  783                          
  801.  784                }
  802.  785                   return ucReadData;
  803.  786          }
  804.  787          
  805.  788          
  806.  789          */
  807.  790          
  808.  791          //-----------------------------------------------------------------------------
  809.  792          // End Of File
  810.  793          //-----------------------------------------------------------------------------
  811. MODULE INFORMATION:   STATIC OVERLAYABLE
  812.    CODE SIZE        =    795    ----
  813.    CONSTANT SIZE    =   ----    ----
  814.    XDATA SIZE       =   ----    ----
  815. C51 COMPILER V7.02b   NRF2401RX                                                            11/30/2007 14:07:15 PAGE 14  
  816.    PDATA SIZE       =   ----    ----
  817.    DATA SIZE        =   ----       1
  818.    IDATA SIZE       =   ----    ----
  819.    BIT SIZE         =   ----       1
  820. END OF MODULE INFORMATION.
  821. C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)