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

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

?? cc2420._c

?? AVR單片機系統開發經典實例部分源程序
?? _C
字號:
/***************************************
*2008,浙江工業大學信息與控制研究所
*All rights reserved
*
*文件名稱:cc2420.c
*摘    要:無線收發芯片cc2420驅動程序
*
*當前版本:1.0
*作    者:董齊芬
*完成日期:2008.8.11
****************************************/

#include "cc2420.h"
#include "spi.h"
#include "common.h"

/*******************************************
*函數功能:寫命令寄存器
*輸入參數:命令字
*輸出參數:無
*返 回 值:狀態寄存器的值
********************************************/
unsigned char Write_Command(unsigned char command)
{
  unsigned char statueval;
  
  enable_spi();     //使能SPI口
  statueval=SpiWrite(command);
  disable_spi();      //禁止SPI口  
  
  return statueval;
}

/*******************************************
*函數功能:讀狀態寄存器
*輸入參數:無
*輸出參數:無
*返 回 值:狀態寄存器的值
********************************************/
unsigned char Read_Status(void)
{
  unsigned char statuevalue;
  statuevalue=Write_Command(SNOP);        //空操作命令,為了讀取當前狀態寄存器的值
  return statuevalue;
}

/*******************************************
*函數功能:寫配置字
*輸入參數:Addr:配置寄存器的地址;
           DataH:配置字的高字節;
		   DataL:配置字的低字節;
*輸出參數:無
*返 回 值:狀態寄存器的值
********************************************/
unsigned char Write_ConfigureWord(unsigned char Addr,unsigned char DataH,unsigned char DataL)
{
  unsigned char statuevalue;
  
  // enable_spi();     //使能SPI口   以具體情況而定使能/禁止SPI口放在何處
  statuevalue=SpiWrite(Addr);  //發送配置寄存器的地址,同時返回當前狀態寄存器的值
  SpiWrite(DataH); //發送配置字的高字節
  SpiWrite(DataL); //發送配置字的低字節
  // disable_spi();      //禁止SPI口  
 
  return statuevalue;
}

/*******************************************
*函數功能:讀配置字
*輸入參數:Addr:配置寄存器的地址;	   
*輸出參數:DataH:配置字的高字節;
           DataL:配置字的低字節;
*返 回 值:狀態寄存器的值
********************************************/
unsigned char Read_ConfigureWord(unsigned char Addr,unsigned char *DataH,unsigned char *DataL)
{
  unsigned char statuevalue;
  
  Addr|=0x40;     //讀標志位為1
  enable_spi();     //使能SPI口   以具體情況而定使能/禁止SPI口放在何處
  statuevalue=SpiWrite(Addr);  //發送配置寄存器的地址,同時返回當前狀態寄存器的值
  *DataH=SpiWrite(0xff); //讀配置字的高字節
  *DataL=SpiWrite(0xff); //讀配置字的低字節
  disable_spi();      //禁止SPI口  
 
  return statuevalue;
}

/*******************************************
*函數功能:讀RXFIFO 
*輸入參數:Data_Num:欲讀取的字節個數
*輸出參數:p_Data:存儲數據的緩存首地址;
*返 回 值:狀態寄存器的值
********************************************/
unsigned char Read_RXFIFO(unsigned char Data_Num,unsigned char *p_Data) 
{
  unsigned char statuevalue,Addr,i;
  
  Addr=RXFIFO|0x40;     //讀標志位為1
  enable_spi();         //使能SPI口 
  statuevalue=SpiWrite(Addr);
  
  for(i=0;i<Data_Num;i++)
  {
    *(p_Data+i)=SpiWrite(0xff);
  }
  
  disable_spi();      //禁止SPI口  
 
  return statuevalue;
}

/*******************************************
*函數功能:讀一字節RXFIFO
*輸入參數:無
*輸出參數:無
*返 回 值:讀取的數據
********************************************/
unsigned char Read_RXFIFO_Byte(void)
{
  unsigned char readvalue,Addr;
  
  Addr=RXFIFO|0x40;     //讀標志位為1
  enable_spi();         //使能SPI口 
  SpiWrite(Addr);
  readvalue=SpiWrite(0xff);
  disable_spi();      //禁止SPI口  
  return readvalue;  
}

/*******************************************
*函數功能:寫TXFIFO
*輸入參數:Data_Num:欲寫入的字節個數
*輸出參數:p_Data:存儲數據的緩存首地址;
*返 回 值:狀態寄存器的值
********************************************/
unsigned char Write_TXFIFO(unsigned char Data_Num,unsigned char *p_Data)
{
  unsigned char statuevalue,i;
  
  enable_spi();         //使能SPI口 
  SpiWrite(TXFIFO);
  
  for (i=0;i<Data_Num;i++)
  {
    statuevalue=SpiWrite(*(p_Data+i));
	
	if ((statuevalue&(1<<TX_UNDERFLOE))!=0x00)         //發生下溢
	{
	  Write_Command(SFLUSHTX);
	  enable_spi();     //重新使能SPI口
	}
  }
  
  disable_spi();      //禁止SPI口 
  return statuevalue;
} 

/*******************************************
*函數功能:寫一字節TXFIFO
*輸入參數:p_Data:要寫入的數據
*輸出參數:無
*返 回 值:狀態寄存器的值
********************************************/
unsigned char Write_TXFIFO_Byte(unsigned char p_Data)
{
  unsigned char statuevalue;
  
  enable_spi();         //使能SPI口 
  SpiWrite(TXFIFO);  
  statuevalue=SpiWrite(p_Data);
  disable_spi();      //禁止SPI口 
  return statuevalue;
}

/*******************************************
*函數功能:寫RAM 
*輸入參數:p_Data:存儲數據的緩存首地址;
           Data_Num:要寫入的字節數
		   AddrH:在選定的RAM存儲塊中確定RAM地址
		   AddrL:選擇RAM存儲塊
*輸出參數:無
*返 回 值:狀態寄存器的值
********************************************/
unsigned char Write_RAM(unsigned char AddrH,unsigned char AddrL,unsigned char Data_Num,unsigned char *p_Data)
{
  unsigned char statuevalue,i;
  AddrH|=0X80;      //訪問RAM位置1
  AddrL<<=6;
  AddrL&=0XDF;      //讀寫操作位置0,表示寫操作
  
  enable_spi();         //使能SPI口 
  statuevalue=SpiWrite(AddrH);  
  SpiWrite(AddrL);
  
  for (i=0;i<Data_Num;i++)
  {
    SpiWrite(*(p_Data+i));
  }
  
  disable_spi();      //禁止SPI口 
  return statuevalue;
}

/*******************************************
*函數功能:寫一字節RAM
*輸入參數:p_Data:要寫入的數據
           AddrH:在選定的RAM存儲塊中確定RAM地址
		   AddrL:選擇RAM存儲塊
*輸出參數:無
*返 回 值:狀態寄存器的值
********************************************/
unsigned char Write_RAM_Byte(unsigned char AddrH,unsigned char AddrL,unsigned char p_Data)
{
  unsigned char statuevalue;
  AddrH|=0X80;      //訪問RAM位置1
  AddrL<<=6;
  AddrL&=0XDF;      //讀寫操作位置0,表示寫操作
  
  enable_spi();         //使能SPI口 
  statuevalue=SpiWrite(AddrH);  
  SpiWrite(AddrL);
  
  SpiWrite(p_Data); 
   
  disable_spi();      //禁止SPI口 
  return statuevalue;
}

/*******************************************
*函數功能:讀RAM
*輸入參數:p_Data:存儲數據的緩存首地址;
           Data_Num:要讀取的字節數
		   AddrH:在選定的RAM存儲塊中確定RAM地址
		   AddrL:選擇RAM存儲塊
*輸出參數:無
*返 回 值:狀態寄存器的值
********************************************/
unsigned char Read_RAM(unsigned char AddrH,unsigned char AddrL,unsigned char Data_Num,unsigned char *p_Data)  
{
  unsigned char statuevalue,i;
  AddrH|=0X80;      //訪問RAM位置1
  AddrL<<=6;
  AddrL|=0X20;      //讀寫操作位置1,表示讀操作
  
  enable_spi();         //使能SPI口 
  statuevalue=SpiWrite(AddrH);  
  SpiWrite(AddrL);
  
  for (i=0;i<Data_Num;i++)
  {
    *(p_Data+i)=SpiWrite(0xff);
  }
  
  disable_spi();      //禁止SPI口 
  return statuevalue;
}

/*******************************************
*函數功能:讀一字節RAM
*輸入參數:AddrH:在選定的RAM存儲塊中確定RAM地址
		   AddrL:選擇RAM存儲塊
*輸出參數:無
*返 回 值:讀取的數據值
********************************************/
unsigned char Read_RAM_Byte(unsigned char AddrH,unsigned char AddrL)
{
  unsigned char readvalue;
  AddrH|=0X80;      //訪問RAM位置1
  AddrL<<=6;
  AddrL|=0X20;      //讀寫操作位置1,表示讀操作
  
  enable_spi();         //使能SPI口 
  SpiWrite(AddrH);  
  SpiWrite(AddrL);                         
  
  readvalue=SpiWrite(0xff); 
  
  disable_spi();      //禁止SPI口 
  return readvalue;
}

/*******************************************
*函數功能:關閉電壓校準器模式
*輸入參數:無
*輸出參數:無
*返 回 值:無
********************************************/
void PowerOff(void)
{
  PORTE &=~(1<<VREGEN);     //禁止電壓校準器   
}

/*******************************************
*函數功能:從電壓校準器關閉模式轉換到掉電模式 
*輸入參數:無
*輸出參數:無
*返 回 值:無
********************************************/
void PwOff_PwDown(void)  
{
  PORTE |=1<<VREGEN;     //啟動電壓校準器  
  Delay600us();  
  
  enable_spi();     //使能SPI口 
  Write_ConfigureWord(MAIN,0x78,0x00);  //先將reset位設置為低  
  Write_ConfigureWord(MAIN,0xf8,0x00);  //先將reset位設置為高,完成復位過程
  disable_spi();      //禁止SPI口 
  
}

/*******************************************
*函數功能:其他任何模式轉換到掉電模式 
*輸入參數:無
*輸出參數:無
*返 回 值:無
********************************************/
void AllStates_PwDown(void)   
{
  Write_Command(SXOSCOFF);
}

/*******************************************
*函數功能:從掉電模式轉換到空閑模式 
*輸入參數:無
*輸出參數:無
*返 回 值:無
********************************************/
void PwDown_Idle(void)
{
  unsigned char statue;
  Write_Command(SXOSCON);
  
  while(1)              //等待晶體振蕩器穩定運行
  {
    statue=Read_Status();
    if((statue&(1<<XOSC16M_STABLE))!=0)
	{
	  break;
	}
  }
} 

/*******************************************
*函數功能:從其他任何模式轉換到空閑模式 
*輸入參數:無
*輸出參數:無
*返 回 值:無
********************************************/
void AllStates_Idle(void)   
{
  Write_Command(SRFOFF);
}   

/*******************************************
*函數功能:從空閑模式啟動發送 
*輸入參數:無
*輸出參數:無
*返 回 值:無
********************************************/
void Idle_Tx(void)  
{
  Write_Command(STXON);
}    

/*******************************************
*函數功能:從接收狀態轉換到發送模式
*輸入參數:無
*輸出參數:無
*返 回 值:無
********************************************/
void Rx_Tx(void)                     
{
  while(1)
  {
    if(PINA&(1<<CCA)!=0)      //信道空閑
    {
    Write_Command(STXONCCA);  
	break;
    }
  }
} 

/*******************************************
*函數功能:從空閑模式啟動接收模式
*輸入參數:無
*輸出參數:無
*返 回 值:無
********************************************/
void Idle_Rx(void)
{
  Write_Command(SRXON);
}     

/*******************************************
*函數功能:設置配置字(用于初始化)
*輸入參數:無
*輸出參數:無
*返 回 值:無
********************************************/
void Set_Configure(void)       
{
  unsigned char RegisterValueH,RegisterValueL;
  PowerOff();   //???????????????????????????????
  PwOff_PwDown();  //在power down模式下設置配置寄存器
  
  enable_spi();     //使能SPI口 
  
  RegisterValueH=0X0A;
  RegisterValueL=0XE2;  //地址認證使能,自動應答不使能
  Write_ConfigureWord(MDMCTRL0,RegisterValueH,RegisterValueL); 
  
  RegisterValueH=0X05;
  RegisterValueL=0X00; 
  Write_ConfigureWord(MDMCTRL1,RegisterValueH,RegisterValueL); 
  
 // RegisterValueH=-50;
 // RegisterValueL=0X00; 
 // Write_ConfigureWord(RSSI,RegisterValueH,RegisterValueL); //???????????????????????調試時修改
  
  RegisterValueH=0x41;
  RegisterValueL=0X92;    //2.45GHz
  Write_ConfigureWord(FSCTRL,RegisterValueH,RegisterValueL); 
  
  RegisterValueH=0x01;
  RegisterValueL=0Xe4;    //安全模式不使能
  Write_ConfigureWord(SECCTRL0,RegisterValueH,RegisterValueL); 
  
  //RegisterValueH=128;
  //RegisterValueL=128; 
  //Write_ConfigureWord(SECCTRL1,RegisterValueH,RegisterValueL); //???????????????????????調試時修改
  
  RegisterValueH=0;
  RegisterValueL=TX_length;  //RXFIFO的極限值
  Write_ConfigureWord(IOCFG0,RegisterValueH,RegisterValueL); //???????????????????????調試時修改
  
  disable_spi();      //禁止SPI口 
}
  
  
  
                       
	  
	
  
  
                                  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩国产欧美在线观看| 亚洲一级片在线观看| 国产女人aaa级久久久级| 午夜精彩视频在线观看不卡| 久久久久久久久97黄色工厂| 美女脱光内衣内裤视频久久网站 | 欧美私模裸体表演在线观看| 精品久久久网站| 一区二区日韩电影| 国产一区二区精品久久91| 欧美色爱综合网| 国产精品久久久久久久浪潮网站| 日本女优在线视频一区二区| 91麻豆国产在线观看| 久久免费电影网| 免费成人在线视频观看| 欧美亚洲动漫精品| 亚洲精品国产高清久久伦理二区| 国产一区二区三区日韩| 欧美日本国产视频| 亚洲综合免费观看高清完整版在线 | 日韩一区二区三区免费看| 亚洲欧美另类久久久精品| 国产成人福利片| 日韩视频一区二区| 日韩有码一区二区三区| 欧美亚洲国产一区在线观看网站| 国产精品久久久久久福利一牛影视 | 91美女精品福利| 国产精品日韩成人| 国产精一品亚洲二区在线视频| 日韩午夜在线观看| 蜜臀久久久99精品久久久久久| 欧美亚男人的天堂| 亚洲一本大道在线| 欧美亚洲免费在线一区| 亚洲资源在线观看| 欧美日韩亚洲综合| 亚洲午夜免费福利视频| 欧美色中文字幕| 亚洲国产日韩在线一区模特| 欧美午夜电影网| 午夜免费久久看| 91精品国产高清一区二区三区蜜臀| 亚洲精品伦理在线| 精品污污网站免费看| 亚洲成av人综合在线观看| 欧美精品自拍偷拍动漫精品| 天天综合日日夜夜精品| 日韩视频一区二区在线观看| 免费亚洲电影在线| 久久综合精品国产一区二区三区| 国产真实乱子伦精品视频| 国产日韩av一区二区| 成人福利视频在线看| 伊人色综合久久天天人手人婷| 日本国产一区二区| 人人超碰91尤物精品国产| 久久亚洲一区二区三区明星换脸 | 国产精品一色哟哟哟| 国产欧美日韩综合| 色综合久久久久| 日韩在线一区二区三区| 久久综合色婷婷| 91视视频在线观看入口直接观看www| 亚洲一区二区在线观看视频| 在线成人高清不卡| 国产激情视频一区二区在线观看 | 国产三级精品三级| 91久久线看在观草草青青| 人妖欧美一区二区| 国产精品乱码久久久久久| 在线观看欧美日本| 久久精品国产精品亚洲精品| 久久久久国产精品厨房| 欧美日韩在线精品一区二区三区激情| 麻豆免费精品视频| 亚洲色图另类专区| 欧美一级久久久久久久大片| 99精品欧美一区二区三区综合在线| 亚洲成人激情社区| 欧美韩日一区二区三区四区| 精品视频资源站| 成人av影院在线| 免费的成人av| 亚洲影视在线播放| 国产情人综合久久777777| 欧美日产国产精品| 99久久免费精品| 国产一区二区三区免费播放| 亚洲制服欧美中文字幕中文字幕| 久久亚区不卡日本| 欧美日韩国产高清一区| 不卡高清视频专区| 国产乱码精品一区二区三区忘忧草 | 亚洲最大色网站| 中文字幕国产一区二区| 欧美xxxxxxxxx| 欧美日本在线看| 一本色道久久加勒比精品 | 久久久久久久久久久久电影| 欧美片网站yy| 在线免费不卡视频| 91色乱码一区二区三区| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 精品视频一区二区三区免费| 成人免费视频视频| 国产原创一区二区三区| 天堂蜜桃91精品| 亚洲影院在线观看| 樱花影视一区二区| 日韩毛片在线免费观看| 中文字幕乱码日本亚洲一区二区| 欧美va亚洲va国产综合| 欧美一区二区在线视频| 欧美男男青年gay1069videost| 一本一本大道香蕉久在线精品| 99在线精品观看| 成人亚洲精品久久久久软件| 国产一区二区三区黄视频| 麻豆精品视频在线观看免费| 日韩精品欧美成人高清一区二区| 亚洲成精国产精品女| 一区二区三区精品在线| 亚洲一区二区三区四区的| 一区二区三区加勒比av| 亚洲精品成a人| 亚洲专区一二三| 视频一区视频二区中文| 婷婷综合五月天| 人禽交欧美网站| 国产一区二区精品在线观看| 国产精品白丝av| 不卡的看片网站| 色一情一伦一子一伦一区| 在线亚洲精品福利网址导航| 色婷婷精品大在线视频| 欧美性一区二区| 5566中文字幕一区二区电影| 日韩三级视频在线看| 精品福利一区二区三区| 国产女人18水真多18精品一级做 | 欧美日韩一区二区三区高清| 欧美丰满高潮xxxx喷水动漫| 欧美一区在线视频| 久久久777精品电影网影网 | 亚洲精品一区二区三区99| 亚洲国产精品黑人久久久| 亚洲精品乱码久久久久久黑人 | 亚洲一区在线观看免费| 午夜天堂影视香蕉久久| 全部av―极品视觉盛宴亚洲| 国产一区免费电影| 一本色道亚洲精品aⅴ| 日韩视频免费观看高清完整版| 久久亚洲私人国产精品va媚药| 亚洲欧洲av色图| 天涯成人国产亚洲精品一区av| 看片网站欧美日韩| 97se亚洲国产综合自在线不卡| 欧美三级资源在线| 久久亚洲精品小早川怜子| 亚洲欧洲精品一区二区三区| 亚洲v日本v欧美v久久精品| 国产精品一二三四| 欧洲av一区二区嗯嗯嗯啊| 精品久久久久久最新网址| 日韩一区在线看| 久久er99热精品一区二区| 91最新地址在线播放| 日韩欧美一区二区在线视频| 国产精品网站在线| 老司机精品视频在线| 色狠狠色狠狠综合| 国产欧美精品一区二区三区四区| 亚洲va欧美va国产va天堂影院| 国产ts人妖一区二区| 欧美久久免费观看| 国产精品二三区| 久久99最新地址| 欧美日本精品一区二区三区| 1024成人网| 国产在线日韩欧美| 777精品伊人久久久久大香线蕉| 国产精品传媒入口麻豆| 韩国理伦片一区二区三区在线播放 | 午夜精品久久久久久久久久久| 成人激情小说网站| 久久久午夜精品| 日本美女一区二区三区视频| 欧美在线啊v一区| 亚洲日本丝袜连裤袜办公室| 国产成人精品三级麻豆| 日韩女优av电影在线观看| 午夜精品久久久久久久99樱桃 | 国产综合成人久久大片91| 欧美美女一区二区在线观看| 一区二区三区日韩欧美| 色综合网色综合| 亚洲日本中文字幕区|