亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wireless.lst

?? 這是NORDIC公司NRF2401無線通信源代碼!
?? LST
字號:
C51 COMPILER V8.02   WIRELESS                                                              04/14/2006 12:17:22 PAGE 1   


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

line level    source

   1          /* wireless.c
   2          ============================================================================================
   3          ====
   4          *
   5          * This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTYT; without even the
   6          * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   7          *
   8          * Author(s): Ole Saether
   9          *
  10          * NOTES:
  11          *
  12          * A frame is the time between each transmission of a packet.
  13          * A frame is divided into NSLOTS time-slots. The duration of a time-slot is 1/fs, where fs is the ADC
  14          * sampling frequency.
  15          *
  16          * The NOSYNC variable is used by the slave to keep track of how many frames have gone since it received a
  17          * valid packet. It is incremented once each frame in the TIMER2 irq handler and cleared each time a packet
             - is
  18          * received. If the variable reaches the constant NSYNC (see below) the slave enters continuous receive mod
             -e.
  19          *
  20          * The pin P0.2 is used to select slave (P0.2 = 1) or master (P0.2 = 0).
  21          *
  22          * $Date: 8.10.03 12:02 $
  23          * $Revision: 1 $
  24          *
  25          *===========================================================================================
  26          ==================
  27          */
  28          #include <reg24e1.h>
  29          #define ADDR_INDEX 8 // Index to address bytes in RFConfig.buf
  30          #define ADDR_COUNT 4 // Number of address bytes
  31          #define FSZ 32 // Buffer size
  32          #define FMASK FSZ-1
  33          struct RFConfig
  34          {
  35          unsigned char n;
  36          unsigned char buf[15];
  37          };
  38          typedef struct RFConfig RFConfig;
  39          #define NSLOTS 24 // Number of samples in one packet
  40          #define NSYNC 10 // #frames wo/packets before the slave enters receive mode
  41          #define RXSLOT 14 // Wait from slot 14 to..
  42          #define WTSLOT 21 // ..slot 21 for reception of a packet
  43          #define SYNCSLOT 20 // When the slave receives a valid packet set the slot counter to this number
  44          volatile unsigned char idata RxBuf[FSZ];
  45          volatile unsigned char idata TxBuf[FSZ];
  46          volatile unsigned char TxWrp, TxRdp, TxNum;
  47          volatile unsigned char RxWrp, RxRdp, RxNum;
  48          volatile unsigned char rec, slotn, nosync, slave, prevsample;
  49          const RFConfig RxTxConf =
  50          {
  51          15,
  52          0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  53          0xaa, 0xbb, 0x12, 0x34, 0x83, 0x6f, 0x04
C51 COMPILER V8.02   WIRELESS                                                              04/14/2006 12:17:22 PAGE 2   

  54          };
  55          void InitBuffers(void)
  56          {
  57   1      RxWrp = RxRdp = RxRdp = RxNum = 0;
  58   1      TxWrp = TxRdp = TxRdp = TxNum = 0;
  59   1      }
  60          void Delay100us(volatile unsigned char n)
  61          {
  62   1      unsigned char i;
  63   1      while(n--)
  64   1      for(i=0;i<35;i++)
  65   1      ;
  66   1      }
  67          unsigned char SpiReadWrite(unsigned char b)
  68          {
  69   1      EXIF &= ~0x20; // Clear SPI interrupt
  70   1      SPI_DATA = b; // Move byte to send to SPI data register
  71   1      while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished transmitting
  72   1      ;
  73   1      return SPI_DATA;
  74   1      }
  75          void Init(void)
  76          {
  77   1      unsigned char i;
  78   1      P0_DIR = 0x04; // P0.2 is input, the rest output
  79   1      P0 = 0x02; // P0.1 = 1 for the master/slave selection
  80   1      slotn = nosync = 0;
  81   1      InitBuffers();
  82   1      if ((P0 & 0x04) == 0x04)
  83   1      slave = 1;
  84   1      else
  85   1      slave = 0;
  86   1      // TIMER2:
  87   1      TR2 = 0; // Stop timer2 if running
  88   1      CKCON |= 0x20; // T2M=1 (/4 timer clock)
  89   1      RCAP2L = 0x0C; // 8KHz tick...
  90   1      RCAP2H = 0xFE; // ... = 65536-16e6/(4*8e3) = FE0Ch
  91   1      TF2 = 0; // Clear any pending timer2 interrupts
  92   1      TR2 = 1; // Start timer2
  93   1      ET2 = 1; // Enable timer2 interrupts
  94   1      // PWM:
  95   1      P0_ALT = 0x80; // Enable PWM output (P0.7)
  96   1      PWMCON = 0xC0; // Enable 8 bit PWM, pre=min
  97   1      PWMDUTY = 0xFF;
  98   1      // ADC:
  99   1      ADCSTATIC &= 0x1C; // DIFFM=0, SLEEP=0, CLK8=0
 100   1      ADCSTATIC |= 0x03; // 12 bit
 101   1      ADCCON = 0x32; // Channel 2, NPD=1, ADCRUN=0, EXTREF=1
 102   1      // RADIO:
 103   1      PWR_UP = 1;
 104   1      Delay100us(30); // Wait > 3ms
 105   1      // SPI:
 106   1      SPICLK = 0x00; // Max SPICLK (=CLK/8)
 107   1      SPI_CTRL = 0x02; // Connect SPI to RADIO CH1
 108   1      // RADIO:
 109   1      CE = 0;
 110   1      CS = 1; // RF SPI CS = 1
 111   1      Delay100us(0);
 112   1      for(i=0;i<RxTxConf.n;i++)
 113   1      {
 114   2      SpiReadWrite(RxTxConf.buf[i]);
 115   2      }
C51 COMPILER V8.02   WIRELESS                                                              04/14/2006 12:17:22 PAGE 3   

 116   1      CS = 0;
 117   1      EA = 1; // Enable global interrupts
 118   1      }
 119          void TxPacket(void)
 120          {
 121   1      unsigned char i, rp;
 122   1      CE = 1;
 123   1      Delay100us(0);
 124   1      // All packets start with the address:
 125   1      for (i=0;i<ADDR_COUNT;i++)
 126   1      {
 127   2      SpiReadWrite(RxTxConf.buf[ADDR_INDEX+i]);
 128   2      }
 129   1      /*
 130   1      * Read the packet from the transmit buffer and write it to the radio with inline
 131   1      * SPI commands (for increased speed) and update the buffer write pointer and
 132   1      * number of bytes in buffer:
 133   1      */
 134   1      rp = TxRdp;
 135   1      for (i=0;i<NSLOTS;i++)
 136   1      {
 137   2      EXIF &= ~0x20; // Clear SPI interrupt
 138   2      SPI_DATA = TxBuf[rp]; // Move byte to send to SPI data register
 139   2      rp++;
 140   2      rp &= FMASK;
 141   2      ET2 = 0;
 142   2      TxNum--;
 143   2      ET2 = 1;
 144   2      while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished transmitting
 145   2      ;
 146   2      }
 147   1      CE = 0;
 148   1      TxRdp = rp;
 149   1      }
 150          void RxPacket(void)
 151          {
 152   1      unsigned char wp;
 153   1      if(slave)
 154   1      {
 155   2      /*
 156   2      * Tell the interrupt routine that we have received
 157   2      * a packet and it’s time to sync to the master:
 158   2      */
 159   2      ET2 = 0;
 160   2      rec = 1;
 161   2      nosync = 0;
 162   2      ET2 = 1;
 163   2      }
 164   1      /*
 165   1      * Read the received packet from the radio with inline SPI commands (for increased speed)
 166   1      * and put it in the receive buffer and advance the buffer write pointer, and number of
 167   1      * bytes in the buffer:
 168   1      */
 169   1      while(DR1)
 170   1      {
 171   2      EXIF &= ~0x20; // Clear SPI interrupt
 172   2      SPI_DATA = 0; // Write dummy byte to SPI data register
 173   2      wp = RxWrp;
 174   2      RxWrp++;
 175   2      RxWrp &= FMASK;
 176   2      while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished receiving
 177   2      ;
C51 COMPILER V8.02   WIRELESS                                                              04/14/2006 12:17:22 PAGE 4   

 178   2      RxBuf[wp] = SPI_DATA;
 179   2      ET2 = 0;
 180   2      RxNum++;
 181   2      ET2 = 1;
 182   2      }
 183   1      }
 184          void Timer2ISR (void) interrupt 5 using 1
 185          {
 186   1      unsigned char adc;
 187   1      TF2 = 0; // Clear timer2 interrupt
 188   1      adc = ADCDATAH; // Read ADC and...
 189   1      ADCCON &= ~0x80; // ...start new...
 190   1      ADCCON |= 0x80; // ...conversion
 191   1      if(RxNum > 0)
 192   1      {
 193   2      /*
 194   2      * If there are any samples in receive buffer, write next
 195   2      * sample to the PWM and advance the buffer read pointer.
 196   2      */
 197   2      PWMDUTY = RxBuf[RxRdp];
 198   2      RxRdp++;
 199   2      RxRdp &= FMASK;
 200   2      RxNum--;
 201   2      }
 202   1      TxBuf[TxWrp] = adc; // Write ADC sample to the transmit buffer and..
 203   1      TxWrp++; // ..advance buffer..
 204   1      TxWrp &= FMASK; // ..write pointer
 205   1      TxNum++;
 206   1      if(rec != 0) // Valid packet received by slave?
 207   1      {
 208   2      rec = 0; // Yes, preset time...
 209   2      slotn = SYNCSLOT; // ...slot counter (sync to master)
 210   2      } else
 211   1      {
 212   2      slotn++; // Increment time slot counter
 213   2      if(slotn == NSLOTS) // If at beginning of frame....
 214   2      {
 215   3      slotn = 0; // ... reset time slot counter...
 216   3      if(nosync < 255) // ...and update nosync counter
 217   3      nosync++;
 218   3      }
 219   2      }
 220   1      }
 221          void SetRxMode(void)
 222          {
 223   1      CS = 1;
 224   1      Delay100us(0);
 225   1      SpiReadWrite(RxTxConf.buf[RxTxConf.n - 1] | 0x01);
 226   1      CS = 0;
 227   1      }
 228          void SetTxMode(void)
 229          {
 230   1      CS = 1;
 231   1      Delay100us(0);
 232   1      SpiReadWrite(RxTxConf.buf[RxTxConf.n - 1]);
 233   1      CS = 0;
 234   1      }
 235          void WaitRx(void)
 236          {
 237   1      SetRxMode();
 238   1      CE = 1; // Radio CE = 1
 239   1      while(1)
C51 COMPILER V8.02   WIRELESS                                                              04/14/2006 12:17:22 PAGE 5   

 240   1      {
 241   2      if(DR1) // If data ready...
 242   2      {
 243   3      RxPacket(); // ...receive packet
 244   3      break;
 245   3      }
 246   2      if(slave)
 247   2      {
 248   3      if(nosync > NSYNC) // If slave has been out of sync for > NSYNC frames...
 249   3      {
 250   4      ET2 = 0;
 251   4      InitBuffers(); // ...initialize buffers and continue waiting
 252   4      ET2 = 1;
 253   4      continue;
 254   4      }
 255   3      }
 256   2      
 257   2      if(slotn >= WTSLOT)
 258   2      break;
 259   2      }
 260   1      CE = 0;
 261   1      }
 262          void main(void)
 263          {
 264   1      Init();
 265   1      if(slave)
 266   1      WaitRx(); // Perform syncing if slave
 267   1      while(1)
 268   1      {
 269   2      while(slotn != 0) // Wait until slot no. 0 (Tx)
 270   2      ;
 271   2      if(TxNum >= NSLOTS)
 272   2      {
 273   3      SetTxMode();
 274   3      TxPacket();
 275   3      }
 276   2      while(slotn < RXSLOT)
 277   2      ;
 278   2      WaitRx();
 279   2      }
 280   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    481    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     27       1
   IDATA SIZE       =     64    ----
   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 + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区免费在线观看| 国产欧美一区二区精品仙草咪| 另类调教123区| 亚洲午夜久久久久中文字幕久| 国产精品毛片无遮挡高清| 26uuu国产日韩综合| 日韩欧美电影在线| 日韩久久免费av| 精品国产一区二区三区四区四| 欧美日韩国产一二三| 色拍拍在线精品视频8848| 欧美亚洲一区二区三区四区| 日本精品免费观看高清观看| 精品一区在线看| 成人性色生活片| 91国产福利在线| 欧美一区二区三区影视| 欧美一级理论片| 国产欧美一区二区三区沐欲| 国产精品久久夜| 亚洲成av人片在线| 黄页视频在线91| 成人app在线观看| 欧美在线观看视频一区二区三区| 欧美精品久久99| 久久麻豆一区二区| 亚洲精品日产精品乱码不卡| 五月天婷婷综合| 国产精品一区二区在线看| 国产毛片精品视频| av亚洲精华国产精华精华| 欧美综合在线视频| 精品国产伦一区二区三区免费 | 蜜桃av一区二区在线观看| 精品一区二区三区欧美| av一本久道久久综合久久鬼色| 欧美综合色免费| 91精品国产综合久久久久久久久久| 久久久久久久网| 亚洲一级电影视频| 国产成人综合亚洲网站| 欧美日韩一区小说| 中文字幕精品一区二区精品绿巨人 | 国产精品久久久久婷婷| 亚洲在线观看免费| 蜜臀精品久久久久久蜜臀 | 国产精品久久久久久久久久久免费看 | 亚洲免费资源在线播放| 久久精品国产精品亚洲红杏| 99久久精品99国产精品| 欧美精三区欧美精三区| 国产精品青草久久| 极品少妇xxxx偷拍精品少妇| 欧美性一二三区| 中文字幕一区二区三区在线不卡| 美女视频黄免费的久久 | 91麻豆精品国产91久久久| 国产女人水真多18毛片18精品视频| 亚洲a一区二区| 91久久国产综合久久| 亚洲欧洲日本在线| 成人动漫一区二区| 国产肉丝袜一区二区| 精品一区二区三区免费毛片爱| 欧美人成免费网站| 亚洲自拍偷拍av| 日本高清不卡aⅴ免费网站| 亚洲欧洲99久久| av资源站一区| 中文字幕佐山爱一区二区免费| 国产91高潮流白浆在线麻豆| 欧美成人aa大片| 精品影院一区二区久久久| 日韩精品一区二区三区四区视频 | 丝袜脚交一区二区| 欧美三级韩国三级日本一级| 依依成人综合视频| 在线观看国产一区二区| 亚洲综合av网| 91精品国产aⅴ一区二区| 婷婷开心激情综合| 日韩精品一区二区三区蜜臀| 久久精品国产色蜜蜜麻豆| 日韩欧美你懂的| 国产美女在线观看一区| 国产精品你懂的在线欣赏| www.欧美.com| 亚洲欧美偷拍三级| 欧美日韩一区二区三区不卡| 视频在线观看国产精品| 欧美zozo另类异族| 国产91精品一区二区| 亚洲精品欧美激情| 日韩一区二区三区四区五区六区 | 成人18精品视频| 一区二区三区中文字幕精品精品| 在线观看亚洲一区| 免费成人深夜小野草| 久久精品夜色噜噜亚洲aⅴ| caoporn国产精品| 日韩二区三区在线观看| 国产亚洲婷婷免费| 在线观看日韩毛片| 韩国一区二区三区| 一区二区三区影院| 久久亚洲二区三区| 日本精品裸体写真集在线观看| 免费观看一级欧美片| 中文字幕 久热精品 视频在线| 欧美视频一区二区三区在线观看| 精品在线亚洲视频| 亚洲午夜羞羞片| 国产日本亚洲高清| 91精品婷婷国产综合久久竹菊| 国产91综合网| 免费观看一级特黄欧美大片| 最新国产の精品合集bt伙计| 日韩一级欧美一级| 色8久久人人97超碰香蕉987| 精品一区二区综合| 亚洲成人资源网| 综合久久久久久久| 精品国产乱码久久久久久浪潮| 日本福利一区二区| 成年人网站91| 国产一区91精品张津瑜| 亚洲精品日日夜夜| 91精品国产丝袜白色高跟鞋| 91丨porny丨户外露出| 国内精品写真在线观看| 一区二区三区国产精华| 国产精品美女久久久久久久| 精品久久久久久综合日本欧美| 在线精品视频免费观看| 不卡视频一二三| 成人妖精视频yjsp地址| 国产在线视频一区二区| 久久不见久久见中文字幕免费| 亚洲国产婷婷综合在线精品| 亚洲精品中文字幕在线观看| 中文成人av在线| 中文天堂在线一区| 欧美高清在线视频| 国产日韩v精品一区二区| 久久婷婷成人综合色| 日韩一级免费观看| 精品久久久久久久一区二区蜜臀| 欧美一区二区三区人| 91精品国产综合久久蜜臀| 欧美老肥妇做.爰bbww| 欧美日韩一区二区欧美激情| 精品视频1区2区| 欧美日韩黄色一区二区| 欧美视频在线一区二区三区| 欧洲一区在线观看| 欧美日韩国产色站一区二区三区| 欧美综合久久久| 欧美日韩一区二区三区不卡| 欧美理论片在线| 7777精品久久久大香线蕉| 欧美一区三区四区| 欧美精品一区二区高清在线观看| 精品久久国产97色综合| 国产日韩欧美综合在线| 国产日韩精品一区二区浪潮av| 欧美国产成人精品| 综合久久久久综合| 欧美精品一二三| 欧美一区二区啪啪| 精品久久国产字幕高潮| 国产精品视频一区二区三区不卡| 欧美激情一区二区三区蜜桃视频| 自拍视频在线观看一区二区| 亚洲高清在线视频| 卡一卡二国产精品| 国产精品99久久久| www.亚洲免费av| 在线亚洲免费视频| 日韩视频永久免费| 欧美国产禁国产网站cc| 日韩va亚洲va欧美va久久| 久久国内精品视频| 成人精品国产一区二区4080| 色婷婷综合久色| 日韩欧美国产wwwww| 亚洲国产精品高清| 亚洲国产欧美一区二区三区丁香婷| 日韩av电影免费观看高清完整版在线观看| 黄色日韩三级电影| 日本福利一区二区| 久久女同互慰一区二区三区| 亚洲另类一区二区| 免费人成精品欧美精品| 懂色av一区二区三区蜜臀| 色哟哟一区二区三区| 欧美一区二区三区四区视频 | 欧美精品色综合| 中文字幕av资源一区| 日韩精品久久久久久| aaa欧美大片|