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

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

?? cc1020.c

?? msp430+無線芯片cc1020程序
?? C
?? 第 1 頁 / 共 2 頁
字號:

#include "modemhw.h"



/****************************************************************************/
/*  This routine sends new configuration data to the CC1020                 */
/****************************************************************************/

void ConfigureCC1020(char Count, short Configuration[])
{
  short val;
  char i;

  for (i=0;i<Count;i++) {
    val=Configuration[i];
    WriteToCC1020RegisterWord(val);
  }

}

/****************************************************************************/
/* SPI versions of configuration routines. The SPI interface must be        */
/* initialised correctly before use                                         */
/****************************************************************************/

#ifdef SPI


/****************************************************************************/
/*  This routine sets up the CC1020 for SPI transfer                        */
/****************************************************************************/

void SetupCC1020ForSPI(void)
{


  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;
  TI_CC_CSn_PxDIR |= TI_CC_CSn_PIN;         // /CS disable

  ME2 |= USPIE1;                            // Enable USART1 SPI mode
  UCTL1 |= CHAR + SYNC + MM;                // 8-bit SPI Master **SWRST**

  /* Data is output with the falling edge ok!!*/

  UTCTL1 |= CKPH + SSEL1 + SSEL0 + STC;     // SMCLK, 3-pin mode
  UBR01 = 0x02;                             // UCLK/2
  UBR11 = 0x00;                             // 0
  UMCTL1 = 0x00;                            // No modulation
  TI_CC_SPI_USART1_PxSEL |= TI_CC_SPI_USART1_SIMO | TI_CC_SPI_USART1_SOMI | TI_CC_SPI_USART1_UCLK;
                                            // SPI option select
  TI_CC_SPI_USART1_PxDIR |= TI_CC_SPI_USART1_SIMO + TI_CC_SPI_USART1_UCLK;
                                            // SPI TXD out direction
  UCTL1 &= ~SWRST;                          // Initialize USART state machine

}

/****************************************************************************/
/*  This routine writes to a single CC1020 register                         */
/****************************************************************************/

void WriteToCC1020Register(char addr, char data)
{
  char first_byte, second_byte;

    second_byte=data;
    TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;      // /CS enable
    IFG2 &= ~URXIFG1;                       // Clear flag
    first_byte=(addr<<1)|0x01;
    U1TXBUF = first_byte;                   // Send address

    while (!(IFG2&URXIFG1));                // Wait for TX to finish
    IFG2 &= ~URXIFG1;                       // Clear flag
    U1TXBUF = data;                         // Load data for TX after addr
    while (!(IFG2&URXIFG1));                // Wait for end of addr TX

    TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;       // /CS disable

}

/****************************************************************************/
/*  This routine writes to a single CC1020 register, with data and address  */
/*  given in the same variable                                              */
/****************************************************************************/

void WriteToCC1020RegisterWord(short addranddata)
{

  union {
    unsigned short data;
    struct {
      char LowByte;
      char HighByte;
    };
  };

  data=addranddata;


    TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;      // /CS enable
    IFG2 &= ~URXIFG1;                       // Clear flag
    U1TXBUF = LowByte|0x01;                 // Send address
    while (!(IFG2&URXIFG1));                // Wait for TX to finish
    IFG2 &= ~URXIFG1;                       // Clear flag
    U1TXBUF = HighByte;                     // Load data for TX after addr
    while (!(IFG2&URXIFG1));                // Wait for end of addr TX
    TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;       // /CS disable
}

/****************************************************************************/
/*  This routine reads from a single CC1020 register                        */
/****************************************************************************/

char ReadFromCC1020Register(char addr)
{
  char Value;

  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  IFG2 &= ~URXIFG1;                         // Clear flag set during addr TX
  U1TXBUF = (addr<<1)&0xFE;                 // Send address
  while (!(IFG2&URXIFG1));                  // Wait for TXBUF ready
  IFG2 &= ~URXIFG1;                         // Clear flag set during addr TX
  U1TXBUF = 0;                              // Load dummy byte for TX after addr
  while (!(IFG2&URXIFG1));                  // Wait for end of dummy byte TX
  Value = U1RXBUF;                          // Read data
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable

  return Value;
}

#else

/* Bit banging PIC interface...have fun to port them on the MSP430 ;-)
   maybe in the future....*/


/****************************************************************************/
/* General I/O pin "bit-bashing" versions of configuration routines.        */
/****************************************************************************/

/****************************************************************************/
/*  This routine writes to a single CC1020 register                         */
/****************************************************************************/

/*
void WriteToCC1020Register(char addr, char data)
{
  short val;

  val=(short) (addr&0x7F)<<9 | (short) data &0x00FF;
  WriteToCC1020RegisterWord(val);
}
*/
/****************************************************************************/
/*  This routine writes to a single CC1020 register, with address and data  */
/*  given in the same variable                                              */
/****************************************************************************/
/*
void WriteToCC1020RegisterWord(short addranddata)
{
  char  BitCounter;
  char Low;
  char High;
  union {
    unsigned short data;
    struct
    {
      char LowByte;
      char HighByte;
    };
  };

  PSEL=1;

  data=addranddata;

  PSEL=0;

  Low=LowByte;

  // Send address bits
  for (BitCounter=0;BitCounter<7;BitCounter++)
  {
    PCLK=0;
    PDI=((Low&0x80)>>7);
    Low=Low<<1;
    PCLK=1;
  }
  // Send read/write bit
  // Ignore bit in data, always use 1

  PCLK=0;
  PDI=1;
  PCLK=1;
  PCLK=0;

  High=HighByte;

  // Send data bits
  for (BitCounter=0;BitCounter<8;BitCounter++)
  {
    PCLK=0;
    PDI=((High&0x80)>>7);
    High=High<<1;
    PCLK=1;
  }
  PCLK=0;

  PSEL=1;
}
*/
/****************************************************************************/
/*  This routine reads from a single CC1020 register                        */
/****************************************************************************/
/*
char ReadFromCC1020Register(char addr)
{
  char BitCounter;
  char Byte;

  PSEL=1;

  Byte=addr<<1;
  PSEL=0;

  // Send address bits
  for (BitCounter=0;BitCounter<7;BitCounter++)
  {
    PCLK=0;
    PDI=((Byte&0x80)>>7);
    Byte=Byte<<1;
    PCLK=1;
  }
  // Send read/write bit
  // Ignore bit in data, always use 0

  PCLK=0;
  PDI=0;
  PCLK=1;

  PCLK=0;

  // Receive data bits

  PDI=1;

  TRISC|=0x20; // Set up PDATA as an input

  for (BitCounter=0;BitCounter<8;BitCounter++)
  {
    PCLK=1;
    Byte=Byte<<1;
    Byte=Byte|PDO;
    PCLK=0;
  }

  TRISC&=~0x20; // Set up PDATA as an output again

  PSEL=1;

  return Byte;
}
*/
#endif

/****************************************************************************/
/*  This routine resets the CC1020, clearing all registers.                 */
/****************************************************************************/

void ResetCC1020(void)
{
  // Reset CC1020
  WriteToCC1020Register(CC1020_MAIN, 0x0F&~0x01);

  // Bring CC1020 out of reset
  WriteToCC1020Register(CC1020_MAIN, 0x1F);
}


/****************************************************************************/
/*  This routine calibrates the CC1020                                      */
/*  Returns 0 if calibration fails, non-zero otherwise. Checks the LOCK     */
/*  to check for success.                                                   */
/****************************************************************************/

char CalibrateCC1020(char PA_POWER)
{
  volatile int TimeOutCounter;
  volatile int nCalAttempt;

  // Turn off PA to avoid spurs during calibration in TX mode
  WriteToCC1020Register(CC1020_PA_POWER,0x00);

  // Calibrate, and re-calibrate if necessary:
  for (nCalAttempt = CAL_ATTEMPT_MAX; (nCalAttempt>0); nCalAttempt--) {

    // Start calibration
    WriteToCC1020Register(CC1020_CALIBRATE,0xB4);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
洋洋av久久久久久久一区| 国产成人av一区二区三区在线观看| 天使萌一区二区三区免费观看| 狠狠狠色丁香婷婷综合激情| 91激情五月电影| 国产欧美日韩三级| 国产盗摄一区二区| 欧美日韩国产小视频在线观看| 国产亚洲精品超碰| 青青草国产精品97视觉盛宴| 99re这里都是精品| 久久久久成人黄色影片| 日韩av高清在线观看| 91国模大尺度私拍在线视频| 国产精品免费久久| 国产裸体歌舞团一区二区| 欧美一级免费观看| 亚洲成人综合在线| 日本精品视频一区二区三区| 国产精品天美传媒沈樵| 国产乱码精品一区二区三| 精品国产伦理网| 老汉av免费一区二区三区| 欧美精品自拍偷拍动漫精品| 一级日本不卡的影视| 91视频在线看| 成人欧美一区二区三区视频网页 | 欧美日韩的一区二区| 亚洲人成小说网站色在线 | 久久综合九色综合欧美就去吻| 视频一区国产视频| 欧美日本在线视频| 天堂av在线一区| 欧美精品亚洲一区二区在线播放| 亚洲成av人片在线观看| 精品视频在线看| 亚洲综合男人的天堂| 欧美丝袜丝nylons| 亚洲成av人片| 91精品在线一区二区| 蜜臀av性久久久久蜜臀aⅴ| 日韩一区二区在线看片| 久久99精品久久久久| www激情久久| 国产69精品久久99不卡| 国产精品久久久久影视| 91污在线观看| 亚洲成人av免费| 日韩欧美一二三| 国产成人无遮挡在线视频| 中文字幕高清不卡| 色婷婷av一区二区三区大白胸| 一区二区三区免费网站| 欧美伦理电影网| 国产主播一区二区| 亚洲欧洲日本在线| 欧美色涩在线第一页| 免费三级欧美电影| 国产精品色呦呦| 在线观看日韩av先锋影音电影院| 亚洲www啪成人一区二区麻豆| 欧美一区二区三级| 大桥未久av一区二区三区中文| 亚洲视频在线观看三级| 欧美精品丝袜中出| 国产99一区视频免费| 亚洲图片欧美色图| 久久久91精品国产一区二区三区| hitomi一区二区三区精品| 首页国产欧美日韩丝袜| 国产无遮挡一区二区三区毛片日本| 99久久综合99久久综合网站| 亚洲大尺度视频在线观看| 2020国产精品自拍| 欧美在线小视频| 91在线观看美女| 秋霞午夜av一区二区三区| 久久精品一区蜜桃臀影院| 欧美午夜影院一区| 国产成人av福利| 日本亚洲最大的色成网站www| 国产精品午夜在线| 欧美成人一区二区三区| 色综合色综合色综合色综合色综合| 日本美女视频一区二区| 亚洲色图欧美在线| 久久蜜桃av一区二区天堂| 欧美日韩亚洲另类| 99免费精品视频| 国产成人精品1024| 美日韩一级片在线观看| 亚洲国产视频在线| 综合欧美一区二区三区| 国产日韩亚洲欧美综合| 日韩欧美国产综合| 欧美日韩国产123区| 99精品国产91久久久久久| 国产真实乱对白精彩久久| 日韩精品高清不卡| 亚洲国产精品视频| 夜夜揉揉日日人人青青一国产精品 | 7777精品伊人久久久大香线蕉的 | 欧美性受极品xxxx喷水| 成人av资源在线观看| 国产在线视频精品一区| 美女在线视频一区| 视频一区欧美精品| 亚洲一二三专区| 亚洲综合一区二区精品导航| 中文字幕在线观看一区| 国产精品免费aⅴ片在线观看| 久久久www免费人成精品| 久久一留热品黄| 精品sm在线观看| 亚洲精品一区在线观看| 精品国产免费人成电影在线观看四季 | 91精品在线免费观看| 3atv在线一区二区三区| 91精品国产综合久久香蕉麻豆| 欧美撒尿777hd撒尿| 欧美日韩在线免费视频| 欧美日韩免费观看一区二区三区| 91久久精品一区二区三区| 在线影视一区二区三区| 欧美亚一区二区| 欧美裸体一区二区三区| 日韩免费视频一区| 久久久久国产精品麻豆| 亚洲国产精品激情在线观看| 欧美国产综合色视频| 1000精品久久久久久久久| 亚洲欧美另类小说| 亚洲v中文字幕| 精品一区二区三区日韩| 成人网页在线观看| 色狠狠一区二区| 正在播放亚洲一区| 久久蜜桃一区二区| 亚洲人成人一区二区在线观看| 一区二区三区在线视频观看58| 亚洲成人黄色影院| 国产中文字幕一区| 99久久综合国产精品| 欧美人体做爰大胆视频| 精品卡一卡二卡三卡四在线| 中文字幕欧美三区| 亚洲成人三级小说| 国产精品中文欧美| 欧美专区日韩专区| 欧美成人乱码一区二区三区| 国产精品美女视频| 午夜精品国产更新| 国产精品一区二区果冻传媒| 日本二三区不卡| 精品少妇一区二区三区| 亚洲美女一区二区三区| 麻豆视频一区二区| 91视频一区二区| 日韩精品一区二区三区蜜臀| 中文字幕亚洲综合久久菠萝蜜| 天天综合网天天综合色| 成人三级伦理片| 日韩欧美一级特黄在线播放| 中文字幕亚洲区| 精品亚洲国内自在自线福利| 91在线一区二区三区| 日韩免费一区二区| 亚洲国产精品一区二区尤物区| 国产精品一区一区三区| 欧美浪妇xxxx高跟鞋交| 国产精品白丝在线| 久久超碰97中文字幕| 欧美三区在线观看| 国产精品久久久久一区二区三区共| 免费人成黄页网站在线一区二区| 成人福利视频网站| 国产午夜精品一区二区| 久久99最新地址| 欧美精品第1页| 一区二区欧美在线观看| 99麻豆久久久国产精品免费优播| 久久综合精品国产一区二区三区| 午夜亚洲国产au精品一区二区| 99久久精品99国产精品| 国产亚洲精品aa| 丁香啪啪综合成人亚洲小说 | 99r精品视频| 国产亚洲欧洲997久久综合| 久久99精品久久久久久国产越南 | 亚洲一区视频在线| 91蜜桃传媒精品久久久一区二区| 国产日韩一级二级三级| 国产精品888| 久久人人超碰精品| 国产美女精品在线| 国产亚洲一区二区三区| 国产精品99久久久久久久女警| 精品福利视频一区二区三区| 久久狠狠亚洲综合| 久久婷婷综合激情|