⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 all_test.lst

📁 Keil写的nRF2401的发射程序,,,可以配合我刚才发的nRF2401的接受程序来看,,所有的关键注释我都写的很清楚,,非常合适新手学习的再次开发使用.
💻 LST
字号:
C51 COMPILER V8.08   ALL_TEST                                                              06/05/2008 09:07:13 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE ALL_TEST
OBJECT MODULE PLACED IN all_test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE all_test.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "nRF2401_Personal.h"
   2          
   3          #define  Signal_A    P2_0                       //滚轮A    //注意:已经修改
   4          #define  Signal_B    P2_1                       //滚轮B
   5          #define  L_Key       P2_2
   6          #define  M_Key       P2_3
   7          #define  R_Key       P2_4
   8          #define  XLay_L      P3_5
   9          #define  XLay_R      P3_6
  10          #define  YLay_U      P3_4
  11          #define  YLay_D      P3_7
  12          
  13          bit prev_A=0,prev_B=0;                 //认为一开始,电平为低
  14          bit prev_XL=0,prev_XR=0;                   //X方向左右先前状态
  15          bit prev_YU=0,prev_YD=0;                   //Y方向左右先前状态
  16          bit prev_L=1,prev_M=1,prev_R=1;    //按键先前的状态被上拉为1
  17          
  18          //----------------边沿检测-------------------//
  19          //对于A、B来说,没有电平变化时,返回0
  20          //A电平变化时,返回1
  21          //B电平变化时,返回2
  22          uchar Edge_Check(bit state_A, bit state_B, bit state_L, bit state_M, bit state_R,bit state_XL,bit state_XR
             -,bit state_YU,bit state_YD)
  23          {
  24   1        if(Signal_A^state_A)
  25   1        {
  26   2          delayUS(5);
  27   2              if(Signal_A^state_A)
  28   2              {
  29   3                if(state_A)
  30   3              prev_A=0;
  31   3                else
  32   3                  prev_A=1;
  33   3                return(1);
  34   3              }    
  35   2        }
  36   1        if(Signal_B^state_B)
  37   1        {
  38   2          delayUS(5);
  39   2              if(Signal_B^state_B)
  40   2              {
  41   3                if(state_B)
  42   3              prev_B=0;
  43   3                else
  44   3                  prev_B=1;
  45   3                return(2);
  46   3              }
  47   2        }
  48   1      //---------以下添加对鼠标的左、中、右键的支持--------//
  49   1        if(L_Key^state_L)
  50   1        {
  51   2          delayUS(3);
  52   2              if(L_Key^state_L)
  53   2              {
  54   3                if(state_L)
C51 COMPILER V8.08   ALL_TEST                                                              06/05/2008 09:07:13 PAGE 2   

  55   3                  prev_L=0;
  56   3                else
  57   3                  prev_L=1;
  58   3                return(3);
  59   3              }   
  60   2        }
  61   1        if(M_Key^state_M)
  62   1        {
  63   2          delayUS(3);
  64   2              if(M_Key^state_M)
  65   2              {
  66   3                if(state_M)
  67   3                  prev_M=0;
  68   3                else
  69   3                  prev_M=1;
  70   3                return(4); 
  71   3              }
  72   2        }
  73   1        if(R_Key^state_R)
  74   1        {
  75   2          delayUS(3);
  76   2              if(R_Key^state_R)
  77   2              {
  78   3                if(state_R)
  79   3                  prev_R=0;
  80   3                else
  81   3                  prev_R=1;
  82   3                return(5);
  83   3              }    
  84   2        }
  85   1        if(XLay_L^state_XL)
  86   1        {
  87   2          delayUS(5);
  88   2              if(XLay_L^state_XL)
  89   2              {
  90   3                if(state_XL)
  91   3                  prev_XL=0;
  92   3                else
  93   3                  prev_XL=1;
  94   3                return(6);
  95   3              }  
  96   2        }
  97   1        if(XLay_R^state_XR)
  98   1        {
  99   2          delayUS(5);
 100   2              if(XLay_R^state_XR)
 101   2              {
 102   3                if(state_XR)
 103   3                  prev_XR=0;
 104   3                else
 105   3                  prev_XR=1;
 106   3                return(7);
 107   3              }    
 108   2        }
 109   1        if(YLay_U^state_YU)
 110   1        {
 111   2          delayUS(5);
 112   2              if(YLay_U^state_YU)
 113   2              {
 114   3                if(state_YU)
 115   3                  prev_YU=0;
 116   3                else
C51 COMPILER V8.08   ALL_TEST                                                              06/05/2008 09:07:13 PAGE 3   

 117   3                  prev_YU=1;
 118   3                return(8);
 119   3              }    
 120   2        }
 121   1        if(YLay_D^state_YD)
 122   1        {
 123   2          delayUS(5);
 124   2              if(YLay_D^state_YD)
 125   2              {
 126   3                if(state_YD)
 127   3                  prev_YD=0;
 128   3                else
 129   3                  prev_YD=1;
 130   3                return(9);
 131   3              }    
 132   2        }
 133   1      //---------------------------------------------------//
 134   1        return(0);
 135   1      }
 136          
 137          void EN_TX(void)
 138          {
 139   1        switch(Edge_Check(prev_A,prev_B,prev_L,prev_M,prev_R,prev_XL,prev_XR,prev_YU,prev_YD))
 140   1        {
 141   2          case 1:
 142   2                //-------添加滚轮发送A的数据-----//
 143   2                TxBuf[0]=0x12;
 144   2                nRF2401_SendData();
 145   2                //===============================//
 146   2                break;
 147   2              case 2:
 148   2                //-------添加滚轮发送B的数据-----//
 149   2                TxBuf[0]=0x14;
 150   2                nRF2401_SendData();
 151   2                //===============================//
 152   2                break;
 153   2          case 3:
 154   2                TxBuf[0]=0x23;                     //仅使用一个字节数据
 155   2                nRF2401_SendData();
 156   2                break;
 157   2              case 4:
 158   2                TxBuf[0]=0x34;                         //仅使用一个字节数据
 159   2                nRF2401_SendData();
 160   2                break;
 161   2              case 5:
 162   2                TxBuf[0]=0x45;                         //仅使用一个字节数据
 163   2                nRF2401_SendData();
 164   2                break;
 165   2              case 6:
 166   2                TxBuf[0]=0x48;                         //仅使用一个字节数据
 167   2                nRF2401_SendData();
 168   2                break;
 169   2              case 7:
 170   2                TxBuf[0]=0x50;                         //仅使用一个字节数据
 171   2                nRF2401_SendData();
 172   2                break;
 173   2              case 8:
 174   2                TxBuf[0]=0x52;                         //仅使用一个字节数据
 175   2                nRF2401_SendData();
 176   2                break;
 177   2              case 9:
 178   2            TxBuf[0]=0x55;                     //仅使用一个字节数据
C51 COMPILER V8.08   ALL_TEST                                                              06/05/2008 09:07:13 PAGE 4   

 179   2                nRF2401_SendData();
 180   2                break;
 181   2              default:  break;
 182   2        }
 183   1      }
 184          
 185          void main(void)
 186          {
 187   1        L_Key=1;
 188   1        M_Key=1;
 189   1        R_Key=1;
 190   1        nRF2401_Inti();
 191   1        while(1)
 192   1        {
 193   2          EN_TX();
 194   2        }  
 195   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    838    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      2    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      9       9
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -