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

📄 arx.lst

📁 nRF24z1的c51参考代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.10   ARX                                                                   06/10/2008 10:51:18 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE ARX
OBJECT MODULE PLACED IN ARX.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ARX.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <REG2051.H>
   2          #include <intrins.h>
   3          #include "ARX.h" 
   4          
   5          
   6          code unsigned char channel_num[38]=
   7          {
   8                  0x06, 0x1c, 0x34, 0x4c, 0x18,
   9                  0x30, 0x48, 0x14, 0x2c, 0x44,
  10                  0x10, 0x28, 0x40, 0x0c, 0x24,
  11                  0x3c, 0x08, 0x20, 0x38, 0x04,
  12                  0x1e, 0x36, 0x4e, 0x1a, 0x32,
  13                  0x4a, 0x16, 0x2e, 0x46, 0x12,
  14                  0x2a, 0x42, 0x0e, 0x26, 0x3e,
  15                  0x0a, 0x22, 0x3a
  16          };
  17          
  18          BYTE gbLedTimer = 0;
  19          
  20          BYTE gbKeyPressed = 0;
  21          BYTE gbKeyLastId;
  22          BYTE gbKeyRept;
  23          BYTE gbKeyId;
  24          BYTE gbVolume;
  25          void KeyDetect(void);
  26          
  27          
  28          #define i2c_delay()     \
  29                  {               \
  30                  _nop_();        \
  31                  _nop_();        \
  32                  _nop_();        \
  33                  _nop_();        \
  34                  _nop_();        \
  35                  _nop_();        \
  36                  _nop_();        \
  37                  _nop_();        \
  38                  _nop_();        \
  39                  _nop_();        \
  40                  _nop_();        \
  41                  _nop_();        \
  42                  _nop_();        \
  43                  _nop_();        \
  44                  }
  45          
  46          
  47          
  48          void timer0(void) interrupt 1
  49          {
  50   1              TR0 = 0;
  51   1              gbLedTimer++;
  52   1              if(gbLedTimer >25){
  53   2                      gbLedTimer = 0;
  54   2                      if(LED_CON == 0)LED_CON = 1;
  55   2                      else LED_CON = 0;
C51 COMPILER V7.10   ARX                                                                   06/10/2008 10:51:18 PAGE 2   

  56   2              }       
  57   1              KeyDetect();
  58   1              
  59   1              TH0 = 0xB1;
  60   1              TL0 = 0xE0;
  61   1              TR0 = 1;
  62   1      }   
  63          
  64          void KeyDetect(void)
  65          {
  66   1              BYTE    bKey;
  67   1              
  68   1              bKey = KEY_INVALID;
  69   1              
  70   1              if(VOLUP_KEY == 0) bKey = KEY_VOL_UP;
  71   1              else if(VOLDN_KEY == 0) bKey = KEY_VOL_DOWN;
  72   1              else if(PWR_KEY == 1) bKey = KEY_UP;
  73   1              
  74   1              if( gbKeyPressed )
  75   1              {
  76   2                      if( (gbKeyLastId & KEY_ID) != bKey )
  77   2                      {
  78   3                              if( gbKeyRept > KEY_REPT_COUNT ){
  79   4                                      
  80   4                                      gbKeyLastId |= KEY_BREAK;
  81   4                                      gbKeyPressed  = 0;
  82   4                                      gbKeyRept     = 0;
  83   4                              }
  84   3                              else {
  85   4                                      gbKeyPressed  = 0;
  86   4                                      gbKeyRept     = 0;
  87   4                              }
  88   3                      }
  89   2                      else
  90   2                      {
  91   3                              if( gbKeyRept < KEY_REPT_LONG_COUNT )
  92   3                              {
  93   4                                      gbKeyRept++;
  94   4                                      gbKeyLastId = bKey;
  95   4      
  96   4                              }
  97   3                              else    gbKeyLastId = (bKey|KEY_LONG);
  98   3                      }
  99   2              }
 100   1              else
 101   1              {
 102   2                      if( (bKey>KEY_INVALID)&& !(gbKeyLastId&KEY_BREAK) )
 103   2                      {
 104   3                              gbKeyPressed = 1;
 105   3                              gbKeyLastId = bKey;
 106   3                              gbKeyRept    = 0;
 107   3                      }
 108   2              }
 109   1              if( gbKeyId == KEY_GET_DONE )
 110   1              {
 111   2                      gbKeyId = gbKeyLastId;
 112   2                      if( !gbKeyPressed )     gbKeyLastId = KEY_INVALID;
 113   2              }
 114   1      }
 115          
 116          BYTE KeyGet( void )             
 117          {                               
C51 COMPILER V7.10   ARX                                                                   06/10/2008 10:51:18 PAGE 3   

 118   1              BYTE bKeyValue;
 119   1              ET0  = 0;               
 120   1              bKeyValue = gbKeyId;    
 121   1              gbKeyId = KEY_GET_DONE;
 122   1              ET0 = 1;
 123   1              return  bKeyValue;      
 124   1      }                               
 125          
 126          
 127          void I2C_Start(BYTE device)
 128          {
 129   1              if(device == DEVICE_RF)
 130   1              {
 131   2                      I2C_SDA = 1;    
 132   2                      I2C_SCL = 1;
 133   2                      i2c_delay();
 134   2                      I2C_SDA = 0;
 135   2                      i2c_delay();
 136   2                      I2C_SCL = 0;    
 137   2                      i2c_delay();
 138   2              }
 139   1              else 
 140   1              {
 141   2                      DAC_SDA = 1;    
 142   2                      DAC_SCL = 1;
 143   2                      i2c_delay();
 144   2                      DAC_SDA = 0;
 145   2                      i2c_delay();
 146   2                      DAC_SCL = 0;    
 147   2                      i2c_delay();
 148   2              }
 149   1      }
 150          
 151          void I2C_Stop(BYTE device)
 152          {
 153   1              if(device == DEVICE_RF)
 154   1              {
 155   2                      I2C_SDA = 0;
 156   2                      i2c_delay();
 157   2                      I2C_SCL = 1;
 158   2                      i2c_delay();
 159   2                      I2C_SDA = 1;
 160   2                      i2c_delay();
 161   2                      I2C_SCL = 0;
 162   2                      i2c_delay();
 163   2              }
 164   1              else {
 165   2                      DAC_SDA = 0;
 166   2                      i2c_delay();
 167   2                      DAC_SCL = 1;
 168   2                      i2c_delay();
 169   2                      DAC_SDA = 1;
 170   2                      i2c_delay();
 171   2                      DAC_SCL = 0;
 172   2                      i2c_delay();
 173   2              }
 174   1      }
 175          
 176          void I2C_clock(BYTE device)
 177          {
 178   1              if(device == DEVICE_RF)
 179   1              {
C51 COMPILER V7.10   ARX                                                                   06/10/2008 10:51:18 PAGE 4   

 180   2                      I2C_SCL = 1;
 181   2                      i2c_delay();
 182   2                      I2C_SCL = 0;
 183   2                      i2c_delay();
 184   2              }
 185   1              else {
 186   2                      DAC_SCL = 1;
 187   2                      i2c_delay();
 188   2                      DAC_SCL = 0;
 189   2                      i2c_delay();
 190   2              }
 191   1      }
 192          
 193          BYTE I2C_read_ack(BYTE device)
 194          {
 195   1              BYTE sample;
 196   1              
 197   1              if(device == DEVICE_RF)
 198   1              {
 199   2                      I2C_SCL = 1;
 200   2                      i2c_delay();
 201   2                      if(I2C_SDA == 0)sample = 0;
 202   2                      else sample = 1;
 203   2                      
 204   2                      I2C_SCL = 0;
 205   2                      i2c_delay();
 206   2              
 207   2                      if (sample==0) return (0);
 208   2                      else return (1);
 209   2              }
 210   1              else {
 211   2                      DAC_SCL = 1;
 212   2                      i2c_delay();
 213   2                      if(DAC_SDA == 0)sample = 0;
 214   2                      else sample = 1;
 215   2                      
 216   2                      DAC_SCL = 0;
 217   2                      i2c_delay();
 218   2              
 219   2                      if (sample==0) return (0);
 220   2                      else return (1);
 221   2              }
 222   1      }
 223          
 224          void I2C_ack (BYTE device)
 225          { 
 226   1              if(device == DEVICE_RF)
 227   1              {
 228   2                      I2C_SDA = 0; 
 229   2                      I2C_clock(device);
 230   2                      I2C_SDA = 1; 
 231   2              }
 232   1              else {
 233   2                      DAC_SDA = 0;
 234   2                      I2C_clock(device);
 235   2                      DAC_SDA = 1; 
 236   2              }
 237   1      }
 238          
 239          BYTE I2C_send(BYTE device, BYTE i_data)
 240          {
 241   1              BYTE i;
C51 COMPILER V7.10   ARX                                                                   06/10/2008 10:51:18 PAGE 5   

 242   1              if(device == DEVICE_RF)
 243   1              {
 244   2                      for (i=0;i<8;i++)
 245   2                      {
 246   3                              if (i_data&0x80) 
 247   3                              {
 248   4                                      I2C_SDA = 1;
 249   4                              }
 250   3                              else 
 251   3                              {       
 252   4                                      I2C_SDA = 0;
 253   4                              }
 254   3                              i_data=i_data<<1;
 255   3                              I2C_clock(device);
 256   3                      }
 257   2                      //charles       
 258   2                      I2C_SDA = 1;
 259   2              }
 260   1              else {
 261   2                      for (i=0;i<8;i++)
 262   2                      {
 263   3                              if (i_data&0x80) 
 264   3                              {
 265   4                                      DAC_SDA = 1;
 266   4                              }
 267   3                              else 
 268   3                              {       
 269   4                                      DAC_SDA = 0;
 270   4                              }
 271   3                              i_data=i_data<<1;
 272   3                              I2C_clock(device);
 273   3                      }
 274   2                      //charles       
 275   2                      DAC_SDA = 1;
 276   2              }
 277   1              return (!I2C_read_ack(device));
 278   1      }
 279          
 280          BYTE I2C_wr_single_data(BYTE device, BYTE device_id, BYTE addr, BYTE i_data)
 281          {
 282   1              I2C_Start(device);
 283   1              if(I2C_send(device, device_id))
 284   1              {
 285   2                      if(I2C_send(device, addr))
 286   2                      {
 287   3                              if(I2C_send(device, i_data))
 288   3                              {
 289   4                                      I2C_Stop(device);
 290   4                                      
 291   4                                      return(1);
 292   4                              }
 293   3                              else 
 294   3                              {
 295   4                                      I2C_Stop(device);
 296   4                                      //LED_CON = 1;
 297   4                                      return(0);
 298   4                              }
 299   3                      }
 300   2                      else {
 301   3                              I2C_Stop(device);
 302   3                              //LED_CON = 1;
 303   3                              return(0);
C51 COMPILER V7.10   ARX                                                                   06/10/2008 10:51:18 PAGE 6   

⌨️ 快捷键说明

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