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

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

?? cc1100drv.txt

?? cc1100的驅動程序
?? TXT
字號:
#include<pic.h>
__CONFIG(INTOSCIO&UNPROTECT&WDTDIS&MCLRDIS&BOREN);

#define PCLK RA0
#define PDATA RA1
#define PALE  RA2
#define TR_SW RA3
#define DCLK RC0
#define DIO RC1
#define LED RC2

bit fgbit;
char DATA[4];


#define CC1000_MAIN            0x00
#define CC1000_FREQ_2A         0x01
#define CC1000_FREQ_1A         0x02
#define CC1000_FREQ_0A         0x03
#define CC1000_FREQ_2B         0x04
#define CC1000_FREQ_1B         0x05
#define CC1000_FREQ_0B         0x06
#define CC1000_FSEP1           0x07
#define CC1000_FSEP0           0x08
#define CC1000_CURRENT         0x09
#define CC1000_FRONT_END       0x0A
#define CC1000_PA_POW          0x0B
#define CC1000_PLL             0x0C
#define CC1000_LOCK            0x0D
#define CC1000_CAL             0x0E
#define CC1000_MODEM2          0x0F
#define CC1000_MODEM1          0x10
#define CC1000_MODEM0          0x11
#define CC1000_MATCH           0x12
#define CC1000_FSCTRL          0x13
#define CC1000_FSHAPE7         0x14
#define CC1000_FSHAPE6         0x15
#define CC1000_FSHAPE5         0x16
#define CC1000_FSHAPE4         0x17
#define CC1000_FSHAPE3         0x18
#define CC1000_FSHAPE2         0x19
#define CC1000_FSHAPE1         0x1A
#define CC1000_FSDELAY         0x1B
#define CC1000_PRESCALER       0x1C
#define CC1000_TEST6           0x40
#define CC1000_TEST5           0x41
#define CC1000_TEST4           0x42
#define CC1000_TEST3           0x43
#define CC1000_TEST2           0x44
#define CC1000_TEST1           0x45
#define CC1000_TEST0           0x46

bit fgkey;
bit fgbit;
bit fgdio;

void delay1mS(int time)
{
 char i;
 char j;
 for(j=0;j<time;j++)
 {
  for(i=0;i<165;i++);
//  {
//   NOP();
//   NOP();
//   TMR0=0;
//   while(TMR0<238);
//  }
 }
}
//******************************************************//

void delay (unsigned char m)   //控制頻率延時
{ 
 unsigned i=3*m;
 while(i--);
}


/****************************************************************************/
/*   CC1000    寫內部寄存器子程序             
/****************************************************************************/
void WriteToCC1000Register(char Register, char DATA)
{
 char i;
 PCLK=1;
 PDATA=1;
 PALE=0;
 Register=(Register<<1)+0x01;
 for(i=8;i>0;i--)
 {
  if(Register&0x80)PDATA=1;
  else PDATA=0;
  PCLK=1;
  Register<<=1;
  NOP();
  NOP();
  NOP();
  NOP();
  NOP();
  PCLK=0;                               
 }
 NOP();
 PCLK=1;
 PALE=1;
 for(i=8;i>0;i--)
 {
  if(DATA&0x80)PDATA=1;
  else PDATA=0;
  PCLK=1;
  DATA<<=1;
  NOP();
  NOP();
  NOP();
  NOP();
  NOP();
  PCLK=0;                                
 }
 NOP();
 NOP();
 NOP();
 NOP();
 NOP();
 PCLK=1;
 PDATA=1;
}

/****************************************************************************/
/*   CC1000    讀內部寄存器子程序             
/****************************************************************************/
char ReadfromCC1000Register(char addr)
{
  char Result=0;
  char i;
  PCLK=1;
  PDATA=1;
  PALE=0;
  addr=addr<<1;
  for(i=8;i>0;i--)
  {
   if(addr&0x80)PDATA=1;
    else PDATA=0;
    PCLK=1;
    addr<<=1;
    NOP();
    NOP();
    NOP();
    NOP();
    NOP();
    PCLK=0;                                
  }
  TRISA=0x0a;
  NOP();
  PCLK=1;
  PALE=1;
  for(i=8;i>0;i--)
  {
   PCLK=1;
   Result=(Result<<1)|PDATA;
   NOP();
   NOP();
   NOP(); 
   PCLK=0; 
   NOP();
   NOP();
   NOP();
   NOP();                      
 }
 PCLK=1;
 TRISA=0x08;
 return(Result);
}
/****************************************************************************/
/*  This routine puts the CC1000 into RX mode . When switching to  */
/*  RX from PD, use WakeupC1000ToRX first                                   */
/****************************************************************************/

void CC1000_init()
{
 char cal_complete;
 WriteToCC1000Register(CC1000_MAIN,0x3a);          //RXTX=0;F_REQ=0(RX:Register A ,TX:Register B);RX_PD=1;TX_PD=1;FS_PD=1;CORE_PD=0;BIAS_PD=1;REST_N=0
 WriteToCC1000Register(CC1000_PA_POW,0x00); 
 WriteToCC1000Register(CC1000_MAIN,0x3b);       
 //cal_complete=ReadfromCC1000Register(CC1000_MAIN);
// cal_complete=0;
// WriteToCC1000Register(CC1000_MAIN,cal_complete);
 delay1mS(2);
// WriteToCC1000Register(CC1000_MAIN,0x01);
// writes 24-bit frequency value used for RX to 433.9164 MHz.
// Check CC1000 data sheet for equations used to find
// 0x582000.
 WriteToCC1000Register(CC1000_FREQ_2A,0x58);       
 WriteToCC1000Register(CC1000_FREQ_1A,0x20);
 WriteToCC1000Register(CC1000_FREQ_0A,0x00);
// writes 24-bit frequency value used for TX to 433.9164 MHz.
// Check CC1000 data sheet for equations used to find
// 0x448856.
 WriteToCC1000Register(CC1000_FREQ_2B,0x44);       
 WriteToCC1000Register(CC1000_FREQ_1B,0x88);
 WriteToCC1000Register(CC1000_FREQ_0B,0x56);
// sets frequency separation between 0 value and 1 value
//設定誤碼率
 WriteToCC1000Register(CC1000_FSEP1,0x02);
 WriteToCC1000Register(CC1000_FSEP0,0x98);
 WriteToCC1000Register(CC1000_CURRENT,0x44);
// sets some internal current levels, and enables RSSI output to pin
 WriteToCC1000Register(CC1000_FRONT_END,0x12);
 WriteToCC1000Register(CC1000_PA_POW,0xff);
// sets the PLL reference divider to divide by 6
 WriteToCC1000Register(CC1000_PLL,0x48);   
// sets External LNA control lock indicator to output on the CHP_OUT pin                  
 WriteToCC1000Register(CC1000_LOCK,0xa0);
 WriteToCC1000Register(CC1000_CAL,0x26);   
// sets threshold level for peak detector (not used in this design) 
 WriteToCC1000Register(CC1000_MODEM2,0x8E);    
// sets the averaging filter to free-running and controlled by writes
// to bit 4 of this register.
// Sets averaging filter sensitivity to .6dB worst-case loss of sensitivity
 WriteToCC1000Register(CC1000_MODEM1,0x6F); 
// baud rate to 2.4 k, Manchester, and crystal freq. to 11.0592 MHz
 WriteToCC1000Register(CC1000_MODEM0,0x22);            
// sets capacitor array values for RX and TX
 WriteToCC1000Register(CC1000_MATCH,0x70); 
// disables dithering and data shaping  
 WriteToCC1000Register(CC1000_FSCTRL,0x01); 
// sets prescaling to nominal values  
/*
 WriteToCC1000Register(CC1000_FSHAPE7,0x1c);
 WriteToCC1000Register(CC1000_FSHAPE6,0x16);
 WriteToCC1000Register(CC1000_FSHAPE5,0x10);
 WriteToCC1000Register(CC1000_FSHAPE4,0x0a);
 WriteToCC1000Register(CC1000_FSHAPE3,0x06);
 WriteToCC1000Register(CC1000_FSHAPE2,0x03);
 WriteToCC1000Register(CC1000_FSHAPE1,0x01);
*/
 WriteToCC1000Register(CC1000_FSDELAY,0x1f);
 WriteToCC1000Register(CC1000_PRESCALER,0x00);

// sets charge pump current scaling factor, which determines the bandwidth
// of the PLL.
// WriteToCC1000Register(CC1000_TEST4,0x25);
// Calibration Process
// RX Calibration
// set transceiver to RX mode
 WriteToCC1000Register(CC1000_MAIN,0x11);
 WriteToCC1000Register(CC1000_CURRENT,0x44);// RX mode current
 WriteToCC1000Register(CC1000_PLL,0x48);
 WriteToCC1000Register(CC1000_CAL,0xa6);
 cal_complete = 0;
 do
 {
  cal_complete =ReadfromCC1000Register(CC1000_CAL);
 }
 while(!(cal_complete & 0x08)); // spin until calibration is complete
 WriteToCC1000Register(CC1000_CAL,0x26);
// TX Calibration
 WriteToCC1000Register(CC1000_MAIN,0xE1);
 WriteToCC1000Register(CC1000_CURRENT,0x81);// TX mode current
 WriteToCC1000Register(CC1000_PA_POW,0xff);
 WriteToCC1000Register(CC1000_PLL,0x38);   
// calibration
 WriteToCC1000Register(CC1000_CAL,0xa6);
 cal_complete = 0;
 do
 {
  cal_complete =ReadfromCC1000Register(CC1000_CAL);
 }
 while(!(cal_complete & 0x08)); // spin until calibration is complete
 WriteToCC1000Register(CC1000_CAL,0x26);
 WriteToCC1000Register(CC1000_MAIN,0x3d);
 WriteToCC1000Register(CC1000_PA_POW,0x00);
}
//-----------------------------------------------------------------------------
// C1000_RX_MODE
//-----------------------------------------------------------------------------
// C1000_RX_MODE sets the transceiver to RX mode and
// then initializes the 250 microsecond counter
// that gets incremented in the ADC ISR.
void C1000_RX_MODE(void)
{
 WriteToCC1000Register(CC1000_MAIN,0x11); // set to RX mode
 WriteToCC1000Register(CC1000_CURRENT,0x44); // set RX current level
 WriteToCC1000Register(CC1000_PLL,0x48);   
}
//-----------------------------------------------------------------------------
// C1000_TX_MODE
//-----------------------------------------------------------------------------
// C1000_TX_MODE sets the transceiver to TX mode and
// then initializes the 250 microsecond counter
void C1000_TX_MODE(void)
{
 WriteToCC1000Register(CC1000_MAIN,0xe1); // set to TX mode
 WriteToCC1000Register(CC1000_PA_POW,0xff); // no output power needed
 WriteToCC1000Register(CC1000_CURRENT,0x81); // set TX current level
 WriteToCC1000Register(CC1000_PLL,0x38);   
}
//-----------------------------------------------------------------------------
// C1000_PWDON_MODE
//-----------------------------------------------------------------------------
// C1000_PWDON_MODE sets the transceiver to TX mode and
// then initializes the 250 microsecond counter
void C1000_PWDON_MODE(void)
{
 WriteToCC1000Register(CC1000_MAIN,0x3F);
}
 
void TX(char TXDATA)
{
 char i;
 for(i=8;i>0;i--)
 {
  while(DCLK==1);
  if(TXDATA&0x80)DIO=1;
  else DIO=0;
  TXDATA<<=1;
  while(DCLK==0);
 }
}

void Transmit(char addr1,char addr2,char TXdata)
{
 char j;
 TRISC=0x01; 
 for(j=6;j>0;j--)
 {
  TX(0xaa);
  TX(addr1);
  TX(addr2);
  TX(TXdata);
 }
 TRISC=0x03; 
}
char rebit;    //接收位數
char  Txbit;            //發射位數
char syncdata; 
char Rxbuffer[3];      //接收緩充
char Txbuffer[3];
bit  Rxfull;           //接收緩充溢出標志
bit  RXEN;             //允許接收標志
bit  TxEN;             //允許發射標志
bit  Txcomplete;       //發射完成標志
char seendtime;        //
char Txtime;           //重復發射次數
bit seendcomple;
/************************************************************************************
函數:
功能:
*************************************************************************************/
#pragma    // install as interrupt handler (comment for HiTech!)
interrupt
rxi()
{
 if(RXEN==1)
 {
  rebit++;
  switch(rebit)
  {
   case 1: if(DIO!=1)rebit=0;break;
   case 2: if(DIO!=0)rebit=0;break;
   case 3: if(DIO!=1)rebit=0;break;
   case 4: if(DIO!=0)rebit=0;break;
   case 5: if(DIO!=1)rebit=0;break;
   case 6: if(DIO!=0)rebit=0;break;
   case 7: if(DIO!=1)rebit=0;break;
   case 8: if(DIO!=0)rebit=0;
           else syncdata=0;
           break;
  }
  if(rebit>8)
  {
    syncdata=DIO;
    syncdata<<=1;
    if(rebit==16)Rxbuffer[0]=syncdata;syncdata=0;
    if(rebit==24)Rxbuffer[1]=syncdata;syncdata=0;
    if(rebit==32)rebit=0;Rxbuffer[2]=syncdata;syncdata=0;Rxfull=1;RXEN=0;
  }
 }
 if(TxEN==1)
 {
  if(seendtime<Txtime)
  {
   if(Txbit<32)
   {
    if(Txbit<8)
    {
     DIO=syncdata;
     syncdata<<=1;
    }
    else if(Txbit<16)
    {
     DIO=Txbuffer[0];
     Txbuffer[0]<<=1;
    }
    else if(Txbit<24)
    {
     DIO=Txbuffer[1];
     Txbuffer[1]<<=1;
    }
    else 
    {
     DIO=Txbuffer[2];
     Txbuffer[2]<<=1;
    }
    Txbit++;
   }
  if(Txbit==24)Txcomplete=1;
  seendtime++;
  }
 }
 else {TxEN=0;seendcomple=1;}
 INTF=0;
}

void main()
{
 TRISA=0x08;
 PORTA=0x07;
 TRISC=0x03;                             //b'
 PORTC=0x00;
// OPTION=0x0f;
 OPTION=0x07;
 CMCON=0X07;
 WPUA=0x35;
 CC1000_init();
 C1000_PWDON_MODE();
// CLRWDT();
 while(1)
 {
  if(TR_SW==0)
  {
   C1000_TX_MODE();
   while(TR_SW==0)Transmit(0x00,0x08,0x04); //A
   C1000_PWDON_MODE();
  }
  else
  {
   C1000_RX_MODE();   
   while(TR_SW==1)RX();
   C1000_PWDON_MODE();
  }
//  CLRWDT();
//  SLEEP();
//  CLRWDT();

 }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久欧美精品sm网站| 精品国产免费人成电影在线观看四季 | 天堂午夜影视日韩欧美一区二区| 91视频xxxx| 一区二区三区欧美日韩| 91精品国产色综合久久ai换脸 | 国产欧美视频一区二区三区| 91美女在线看| 天天色综合天天| 国产丝袜在线精品| 欧美伦理视频网站| av在线综合网| 美女一区二区视频| 一区二区三区在线视频播放| 精品国产a毛片| 欧美日韩在线播放三区四区| 风间由美一区二区三区在线观看 | 国产一区二区三区免费在线观看| 中文字幕亚洲一区二区av在线| 欧美色图天堂网| 成人午夜视频福利| 日本欧洲一区二区| 亚洲最色的网站| 国产日韩欧美激情| 日韩一区二区高清| 91在线观看美女| 国产乱子伦一区二区三区国色天香| 亚洲欧美激情小说另类| 日韩片之四级片| 日本伦理一区二区| 韩国在线一区二区| 夜夜嗨av一区二区三区中文字幕 | 麻豆极品一区二区三区| 一区二区久久久| 国产精品剧情在线亚洲| 欧美xxxxxxxxx| 欧美一三区三区四区免费在线看 | 日韩国产欧美在线观看| 一区二区三区中文字幕在线观看| 国产欧美一区二区三区在线看蜜臀| 欧美丰满高潮xxxx喷水动漫| 99re6这里只有精品视频在线观看| 亚洲第一狼人社区| 亚洲人成网站在线| 国产精品视频一二三区| 久久久久久久综合日本| 精品少妇一区二区三区日产乱码 | 久久精品国产在热久久| 午夜精品福利一区二区蜜股av| 亚洲色欲色欲www在线观看| 久久久久久久久久久久久女国产乱| 欧美一区二区三区在线观看视频| 精品视频一区三区九区| 国产成人综合网| 美腿丝袜亚洲一区| 日韩精品三区四区| 蜜臀av性久久久久蜜臀av麻豆| 视频一区在线播放| 日韩精品五月天| 美腿丝袜一区二区三区| 蜜臀精品一区二区三区在线观看 | 一本色道综合亚洲| 色噜噜夜夜夜综合网| 不卡的av在线播放| 91社区在线播放| 欧美在线免费视屏| 欧美日韩五月天| 56国语精品自产拍在线观看| 欧美日韩一区不卡| 欧美日韩精品三区| 欧美日韩一区二区在线观看| 欧美放荡的少妇| 日韩欧美高清一区| 久久精品一二三| 国产精品国产精品国产专区不片| 国产亚洲精品资源在线26u| 国产日韩在线不卡| 国产精品福利影院| 亚洲国产成人91porn| 午夜欧美视频在线观看| 青青草原综合久久大伊人精品 | 成人免费观看av| 99re热这里只有精品视频| 欧美亚洲高清一区二区三区不卡| 欧美嫩在线观看| 久久综合久色欧美综合狠狠| 中文字幕 久热精品 视频在线| 国产精品卡一卡二卡三| 午夜私人影院久久久久| 久久成人久久爱| 不卡一二三区首页| 一本大道久久a久久精品综合| 欧美系列在线观看| 精品88久久久久88久久久| 国产精品美女久久久久久2018| 伊人一区二区三区| 激情成人午夜视频| 色综合色综合色综合色综合色综合| 欧美日韩久久久久久| 亚洲人成人一区二区在线观看| 久久综合久久鬼色中文字| 亚洲欧洲av在线| 天使萌一区二区三区免费观看| 韩国一区二区视频| 99久久伊人久久99| 欧美大片免费久久精品三p | 欧美视频一区二区三区在线观看| 日韩三级视频中文字幕| 国产精品久久毛片| 免费看精品久久片| 92精品国产成人观看免费| 日韩欧美专区在线| 一区二区三区在线播放| 青青草国产精品97视觉盛宴| 国产91精品入口| 91精品国产91久久综合桃花| 国产精品久久久久久一区二区三区| 日本系列欧美系列| 91丨九色丨黑人外教| 久久人人超碰精品| 亚洲国产美国国产综合一区二区| 美女国产一区二区| 色婷婷亚洲综合| 国产日产精品1区| 日韩电影一区二区三区| 色综合天天性综合| 久久久国产精华| 免费高清视频精品| 欧美色电影在线| 亚洲视频在线观看一区| 国产一区二区三区在线观看免费| 欧美日韩中文国产| 亚洲精品一二三| 成人一区在线观看| 国产亚洲一区二区三区四区| 亚洲丰满少妇videoshd| 91免费观看视频在线| 国产无一区二区| 日韩一区欧美二区| 欧美性猛交xxxxxx富婆| 亚洲女同女同女同女同女同69| 国产盗摄视频一区二区三区| 欧美性色欧美a在线播放| 国产人成亚洲第一网站在线播放| 精品系列免费在线观看| 欧美区视频在线观看| 亚洲一本大道在线| 欧美日韩一二三| 久草热8精品视频在线观看| 久久蜜桃香蕉精品一区二区三区| 国产成人免费视频精品含羞草妖精| 国产欧美一二三区| 色狠狠桃花综合| 日日嗨av一区二区三区四区| 精品日韩一区二区三区| 国产精品一区二区不卡| 最近中文字幕一区二区三区| 色综合一区二区三区| 日韩综合在线视频| 久久一二三国产| 色婷婷国产精品| 蜜桃av一区二区三区电影| 2024国产精品| 精品久久99ma| 欧美午夜片在线观看| 亚洲国产精品久久人人爱蜜臀| 91精品国产一区二区| 国产精品一区二区91| 亚洲人精品午夜| 欧美一区二视频| 国产福利视频一区二区三区| 中文字幕字幕中文在线中不卡视频| 欧美自拍偷拍一区| 国模无码大尺度一区二区三区| 亚洲欧洲成人精品av97| 欧美一区二区免费视频| 成人app在线| 免费在线观看一区二区三区| 国产精品嫩草影院com| 717成人午夜免费福利电影| 国产精品一线二线三线| 亚洲激情自拍视频| 久久夜色精品一区| 欧美天堂亚洲电影院在线播放| 国产乱子伦一区二区三区国色天香| 亚洲精品高清在线| 欧美精品一区二区三区蜜桃视频| 91视频观看免费| 国产一区二区三区| 日韩制服丝袜先锋影音| 《视频一区视频二区| 欧美成人精品3d动漫h| 日本丶国产丶欧美色综合| 精品无人码麻豆乱码1区2区 | 欧美在线色视频| 国产黄色精品视频| 美女免费视频一区二区| 亚洲美女电影在线| 中文字幕欧美日本乱码一线二线| 欧美一区二区三区精品|