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

📄 adc.lst

📁 nRF24E1多发单收
💻 LST
字号:
C51 COMPILER V7.50   ADC                                                                   08/29/2008 18:08:56 PAGE 1   


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

line level    source

   1          #include "reg24e1.h"
   2          #include "radio.h"
   3          #include "delay.h"
   4          #include "spi.h"
   5          
   6          tRadioParm RadioParm;
   7          tComParm ComParm;
   8          
   9          #define RADIO_PACKET_SIZE 3 
  10          const unsigned char RFConfigBuf[15] =
  11          {
  12                  0x08,RADIO_PACKET_SIZE<<3,  //initial data packet size in bits
  13                  0x00,0x00,0x00,0x00,0x06,   //RX channel 2 address
  14                  0x00,0x00,0x00,0x00,0x05,   //RX channel 1 address
  15                  0x83,                       //32 address bits, 16 bit CRC
  16                  0xEF,                       //power set to 0dBm
  17                  0x05                        //RF channel set to #25, RX on
  18          };
  19          //********************************************************
  20          // Delay
  21          void Delay100us(volatile unsigned char n)
  22          {
  23   1              unsigned char i;
  24   1              while(n--)
  25   1              for (i=0;i<35;i++) ;
  26   1      }
  27          void Delay5us(void)
  28          {
  29   1              unsigned char i;
  30   1              for (i=0;i<2;i++) ;
  31   1      }
  32          //********************************************************
  33          // SpiRadio
  34          void SpiRadio(void)
  35          {
  36   1              SPICLK = 0;                     // Max SPI clock (XTAL/8)
  37   1              P0_DIR &= ~0x20;                // Set P0.5 as output
  38   1              P0 |= 0x20;                     // Set P0.5 high to disable spi netburner chip select
  39   1              SPI_CTRL = 0x02;                // Connect internal SPI controller to Radio
  40   1      }
  41          //********************************************************
  42          // SpiReadWrite
  43          unsigned char SpiReadWrite(unsigned char b)
  44          {
  45   1              EXIF &= ~0x20;                  
  46   1              SPI_DATA = b;                   
  47   1              while((EXIF & 0x20) == 0x00)  ;
  48   1              return SPI_DATA;
  49   1      }
  50          //********************************************************
  51          // SpiReadBuf
  52          //  SpiReadBuf(&RXbuf,n);
  53          void SpiReadBuf(unsigned char* buf, unsigned char n)
  54          {
  55   1              unsigned char i;
C51 COMPILER V7.50   ADC                                                                   08/29/2008 18:08:56 PAGE 2   

  56   1              for (i=0;i<n;i++)
  57   1              {
  58   2                      *buf = SpiReadWrite(0);
  59   2                      buf++;
  60   2              }
  61   1      }
  62          //********************************************************
  63          // SpiWriteBuf
  64          //  SpiWriteBuf(&TXbuf,n);
  65          void SpiWriteBuf(unsigned char* buf, unsigned char n)
  66          {
  67   1              unsigned char i;
  68   1              for (i=0;i<n;i++)
  69   1              {
  70   2                      SpiReadWrite(*buf);
  71   2                      buf++;
  72   2              }
  73   1      }
  74          //********************************************************
  75          // RadioInit
  76          void RadioInit(void)
  77          {
  78   1              unsigned char i;
  79   1              unsigned char *cpt;
  80   1              unsigned char *bpt;
  81   1              cpt = &RFConfigBuf[0];
  82   1              bpt = RadioCfgBufPt;
  83   1              for (i=0;i<15;i++)
  84   1              {
  85   2                      *bpt = *cpt;
  86   2                      bpt++;
  87   2                      cpt++;
  88   2              }
  89   1      }
  90          //********************************************************
  91          // RadioOn
  92          void RadioOn(void)
  93          {
  94   1              PWR_UP = 1;
  95   1              Delay100us(30);
  96   1              SpiRadio();
  97   1      }
  98          //********************************************************
  99          // RadioCfg
 100          void RadioCfg(void)
 101          {
 102   1              CE = 0;
 103   1              CS = 1;
 104   1              Delay5us();
 105   1              SpiWriteBuf(RadioCfgBufPt,RADIO_CFG_BYTES);
 106   1              CS = 0;
 107   1              CE = 1;
 108   1              Delay5us();
 109   1      }
 110          
 111          //********************************************************
 112          // RadioRXBuf
 113          unsigned char RadioRXBuf(unsigned char *bufPt)
 114          {
 115   1              unsigned char r;    
 116   1              if(DR1 == 1)
 117   1              {
C51 COMPILER V7.50   ADC                                                                   08/29/2008 18:08:56 PAGE 3   

 118   2                      r = 1;
 119   2                      SpiReadBuf(bufPt,RadioParm.Data1>>3);
 120   2                      while(DR1==1)
 121   2                      SpiReadWrite(0);
 122   2              }
 123   1              else
 124   1              {
 125   2                      r = 0;
 126   2              }
 127   1              return r;
 128   1      }
 129          
 130          void ChangeChannelTo04(unsigned char RXtx)//RXtx=1 RX  RXtx=0 TX
 131          {
 132   1         CE=0; // CE=0 before configuration
 133   1         Delay100us(0); // Delay min 5us before...
 134   1         CS = 1; // ..CS=1
 135   1         SpiReadWrite(0x04|RXtx); // Write LSB to RF config
 136   1         CS = 0; // CS=0 to end configuration
 137   1         if(RXtx) // If in RX mode...
 138   1          {
 139   2           Delay100us(0); // ..delay min 5us before..
 140   2           CE = 1; // ..CE=1
 141   2          }
 142   1      }
 143          void ChangeChannelTo14(unsigned char RXtx)//RXtx=1 RX  RXtx=0 TX
 144          {
 145   1         CE=0; // CE=0 before configuration
 146   1         Delay100us(0); // Delay min 5us before...
 147   1         CS = 1; // ..CS=1
 148   1         SpiReadWrite(0x14|RXtx); // Write LSB to RF config
 149   1         CS = 0; // CS=0 to end configuration
 150   1         if(RXtx) // If in RX mode...
 151   1          {
 152   2           Delay100us(0); // ..delay min 5us before..
 153   2           CE = 1; // ..CE=1
 154   2          }
 155   1      }
 156          
 157          void uart_init(void)
 158          {
 159   1              TH1 =243;      // 19200@16MHz (when T1M=1 and SMOD=1)
 160   1              CKCON |= 0x10;  // T1M=1 (/4 timer clock)
 161   1              PCON = 0x80;    // SMOD=1 (double baud rate)
 162   1              SCON = 0x52;    // Serial mode1, enable receiver
 163   1              TMOD = 0x20;    // Timer1 8bit auto reload 
 164   1              TR1 = 1;        // Start timer1
 165   1              P0_DIR |= 0x02; // P0.1 (RxD) is an input
 166   1              P0_ALT |= 0x06; // Select alternate functions on pins P0.1 and P0.2
 167   1      }
 168          unsigned char ReceivePacket()
 169          {
 170   1              unsigned char b;
 171   1              ChangeChannelTo04(0x01);
 172   1              while(RadioRXBuf(ComRXBufPt) == 0) ;
 173   1      
 174   1                  b = 0xFF;
 175   1              while(TI==0);TI=0;SBUF=b;
 176   1              while(TI==0);TI=0;SBUF=b;
 177   1                      b = ComParm.recADC1;
 178   1              while(TI==0);TI=0;SBUF=b;
 179   1                      b = ComParm.recADC2;
C51 COMPILER V7.50   ADC                                                                   08/29/2008 18:08:56 PAGE 4   

 180   1              while(TI==0);TI=0;SBUF=b;
 181   1                  b = ComParm.recADC3;        
 182   1              while(TI==0);TI=0;SBUF=b;
 183   1      
 184   1      
 185   1              ChangeChannelTo14(0x01);
 186   1              while(RadioRXBuf(ComRXBufPt) == 0) ;
 187   1      
 188   1      //          b = 0xFF;
 189   1      //      while(TI==0);TI=0;SBUF=b;
 190   1      //              b = 0xFE;
 191   1      //      while(TI==0);TI=0;SBUF=b;
 192   1                      b = ComParm.recADC1;
 193   1              while(TI==0);TI=0;SBUF=b;
 194   1                      b = ComParm.recADC2;
 195   1              while(TI==0);TI=0;SBUF=b;
 196   1                  b = ComParm.recADC3;        
 197   1              while(TI==0);TI=0;SBUF=b;
 198   1              
 199   1      
 200   1              Delay100us(100);
 201   1              return b;
 202   1      }
 203          
 204          void Init(void)
 205          {
 206   1              P0_DIR = 0x40;                  // P0.6 is input, the rest output
 207   1              P0 = 0x10;                      // P0.4 = 1 for the rec/tran selection
 208   1              RadioInit();
 209   1              RadioOn();
 210   1              RadioCfg();
 211   1      }
 212          void main(void)
 213          {
 214   1              uart_init();
 215   1              Init();
 216   1      
 217   1              for(;;)
 218   1              {
 219   2                      ReceivePacket();
 220   2              }
 221   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    464    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     40       8
   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 + -