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

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

?? fasong.c

?? nRF905發送程序 波特率可以調節
?? C
?? 第 1 頁 / 共 2 頁
字號:
//#pragma src
#include <REGX52.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
/*---------------------*/
//#include <nrf905.h>
//#include "hotins.h"
/*---------------------*/
#pragma NOAREGS

void MainInit(void);//系統初始化
void SystemInit(void);//系統初始化
void SystemSetup(void);//系統設置
void SystemIoInit(void);//系統接口初始化
void TimeInit(void);//定時器定時參數設置
void UserSetup(void);//用戶運行環境設置
void ClrWdt(void);//喂狗
void BeepSetup(unsigned char mode);//蜂鳴器發聲模式設置
void Beep(void);//蜂鳴器發聲驅動
void KeyInit(void);//鍵盤初始化
void KeyCommandExec(unsigned char commgroup, unsigned char commnum);//執行鍵盤命令

void Key00(void);//壓鍵事件
void Key01(void);
void Key02(void);
void Key03(void);

void Key10(void);//放鍵事件
void Key11(void);
void Key12(void);
void Key13(void);

void Key20(void);//長鍵事件
void Key21(void);
void Key22(void);
void Key23(void);

/*-----------------------------------------------
  nrf905庫函數定義
------------------------------------------------*/
unsigned char SpiReadWrite(unsigned char);
void WriteTXBuffer(const unsigned char[]);
unsigned char ReadStatus(void);
void nRFPowerUP(void);
void nRFInit(void);//無線模塊初始化
unsigned char VerifynRFConfig(void);//校驗配置nRF905
void WritenRFConfig(unsigned char[]);//寫配置nRF905
void ReadnRFConfig(unsigned char[]);//讀配置nRF905
void FastWritenRFConfig(unsigned char);//快速配置nRF905
void SetTxMode(void);//設置發送模式
void SetRxMode(void);//設置接收模式
void StartTx(void);//開始發送
void nRFReadWrite(void);//無線收發模塊


//data SystemData SystemBuffers;//申請系統數據結構
//idata SioData SioBuffers;//申請系統數據結構

/*------------------------------------------------
  SPI讀寫一體化函數SpiReadWrite()
入口參數:
  val  寫入命令或數據
出口參數:
  R7   讀出數據
------------------------------------------------*/
unsigned char SpiReadWrite(unsigned char val) using 0
{
unsigned char i;
  ACC = val;
  for (i = 8; i > 0; i --)
  {
  CY = MISO;//取數據SO
    _rlca_();//存數據ACC.0讀數據ACC.7同時進行,acc循環左移,acc.7移入cy(出),cy(入)移到acc.0
 MOSI = CY;//送數據SI
 SCK = 1;//上升沿打入數據
    _nop_();
 SCK  = 0;//下降沿讀入數據(首次為假動作)
  }
  return ACC;
}

/*------------------------------------------------
  寫入nRF905發送數據函數WriteTXBuffer()
入口參數:
  buffer 發送數據包
出口參數:
------------------------------------------------*/
void WriteTXBuffer(const unsigned char buffer[]) using 0
{
unsigned char i;
  TRX_CE = 0;//設置nRF905為待機方式
  _nop_();
  CSN=0;//打開SPI 
  SpiReadWrite(WTA);//寫發送地址
  for (i = 0; i < 4; i++)
  {
 SpiReadWrite(buffer[i]);  // Write 32 bytes Tx data
  }
  CSN=1;//關閉SPI
  _nop_();
  CSN=0;// Spi enable for write a spi command 
  SpiReadWrite(WTP);    // Write payload command
  for (i = 0; i < 32; i++)
  {
 SpiReadWrite(buffer[i]);  // Write 32 bytes Tx data
  }
  CSN=1;// Spi disable
  TRX_CE = !TX_EN;//
}

void FastWritenRFConfig(unsigned char low_ch_no) using 0
{
  TRX_CE = 0;//設置nRF905為待機方式
  _nop_();
  CSN=0;//打開SPI 
  SpiReadWrite(CC PA_PWR_10dBm HFREQ_PLL_433MHz CH_NO_BIT8);
  SpiReadWrite(low_ch_no);//CH_NO
  CSN=1;// Spi disable
  TRX_CE = !TX_EN;//
}

void StartTx(void) using 0
{
  _nop_();
  _nop_();
  _nop_();
  TRX_CE=1;     // Set TRX_CE high,start Tx data transmission
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  TRX_CE=0;     // Set TRX_CE low
}

/*------------------------------------------------
  讀入nRF905狀態函數ReadStatus()
入口參數:
出口參數:
  nRF905狀態字
------------------------------------------------*/
unsigned char ReadStatus(void) using 0
{
unsigned char val;
  CSN = 0;//打開SPI
  val = SpiReadWrite(RC);//讀狀態
  CSN = 1;//關閉SPI
  return val;//返回nRF905狀態字
}

void nRFPowerUP(void) using 0
{
  CSN    = 1;//關閉SPI
  SCK    = 0;//拉低時鐘
  DR     = 1;//設置DR為輸入方式
  AM     = 1;//設置AM為輸入方式
  PWR_UP = 1;// nRF905上電
  TRX_CE = 0;//設置nRF905為待機方式
  TX_EN  = 0;//設置接收方式 
}


void main(void)
{
//  ReadnRFConfig(SystemBuffers.nRFTxBuff);

  MainInit();//系統初始化
  while (1) {//主循環
    IE   = 0xb2;//保證中斷可靠EA,ET2,ES,ET0
    TCON = 0x55;//保證定時器開
    PCON = SMOD_ + GF0_ + IDL_;//進入空閑狀態并喂軟件狗
    _nop_();
    _nop_();
  }
}

void MainInit(void) using 0//系統初始化
{
  _start_();
  ClrWdt();//清除看門狗計數器
  SystemIoInit();//系統接口初始化
  SystemInit();//系統上電初始化
  SystemSetup();//系統運行環境設置
  UserSetup();//用戶運行環境設置
}

void SystemInit(void) using 0//系統初始化
{
unsigned char i;
  for (i = 0; i < 32; i ++) {
    SioBuffers.SioTxBuff[i] = 0;
    SioBuffers.SioRxBuff[i] = 0;
  }
  if (SystemBuffers.RamTest != 0x55aa) {//內存初始化
    for (i = 0; i < 32; i ++) {
      SystemBuffers.nRFTxBuff[i] = 0;
      SystemBuffers.nRFRxBuff[i] = 0;
    }
    SystemBuffers.nRFRxBuff[0] = RX_ADDRESS_0;//本機地址
    SystemBuffers.nRFRxBuff[1] = RX_ADDRESS_1;
    SystemBuffers.nRFRxBuff[2] = RX_ADDRESS_2;
    SystemBuffers.nRFRxBuff[3] = RX_ADDRESS_3;
    SystemBuffers.nRFRxBuff[8] = CH_NO_BYTE;
    SystemBuffers.nRFTxBuff[8] = CH_NO_BYTE;
    SystemBuffers.RamTest = 0x55aa;
  }
  else {
  }
}

void SystemSetup(void) using 0//系統設置
{
  TimeInit();
  IP = 0x05;//中斷優先級EX0>EX1>ET0>ET1
  SystemBuffers.TestTime = 0;
  SystemBuffers.WaitTime = 0;
}

void TimeInit() using 0
{
//  TCON = 0x55;//啟動定時器
/*----------------------------------
      定時器0定時參數設置
----------------------------------*/
  TL0 = 0;
  TH0 = 0;
  TR0 = 1;//啟動定時器0
/*----------------------------------
      定時器1定時參數設置
----------------------------------*/
  TMOD = 0x20;    //timer1 working mode 1
  TL1 = 0xfd;     //f7=9600 for 16mhz Fosc,and ... 
  TH1 = 0xfd;     //...fd=19200 for 11.0592mhz Fosc
  SCON = 0xd8;    //uart mode 3,ren==1
  PCON = 0x80;
  SioBuffers.SioTXCount = 0;//無發送數據
  SioBuffers.SioRXCount = 32;//允許接收串口數據
  TR1 = 1;//啟動定時器1
/*----------------------------------
      定時器2定時參數設置
----------------------------------*/
  TIMEER2 = T2_5mS;
  RCAP    = T2_5mS;
  TR2     = 1;//啟動定時器2
}

void nRFInit(void) using 0//無線模塊初始化
{
  do{
    WritenRFConfig(SystemBuffers.nRFRxBuff);//配置nRF905
  }
  while(VerifynRFConfig());
  SetRxMode();//設置接收模式
  SystemBuffers.nRFTxCount = 0;//清空無線發送數據緩沖區
  SystemBuffers.nRFRxCount = 0;//清空無線接收數據緩沖區
}

void ReadnRFConfig(unsigned char rxaddr[]) using 0//讀配置nRF905
{
unsigned char i;
  TRX_CE = 0;//設置nRF905為待機方式
  _nop_();
  CSN = 0;// Spi enable for write a spi command
  SpiReadWrite(RC);    // Read config command
  for (i = 10; i < 20; i ++) rxaddr[i] = SpiReadWrite(0xff);
  CSN = 1;// Disable Spi
  TRX_CE = !TX_EN;//
}

void WritenRFConfig(unsigned char rxaddr[]) using 0//配置nRF905
{
  TRX_CE = 0;//設置nRF905為待機方式
  _nop_();
  CSN = 0;// Spi enable for write a spi command
  SpiReadWrite(WC);    // Write config command
  SpiReadWrite(rxaddr[8]);     //中心頻率低8位
  SpiReadWrite(PA_PWR_10dBm HFREQ_PLL_433MHz); //發射+10dBm,發射頻率433MHz,中心頻率第9位=0
  SpiReadWrite(TX_AFW_4BYTE RX_AFW_4BYTE);     //接收地址寬度4字節,發送地址寬度4字節
  SpiReadWrite(RX_PW_32BYTE);  //接收數據寬度32字節
  SpiReadWrite(TX_PW_32BYTE);  //發送數據寬度32字節
  SpiReadWrite(rxaddr[0]);     //接收有效地址第1字節
  SpiReadWrite(rxaddr[1]);     //接收有效地址第2字節
  SpiReadWrite(rxaddr[2]);     //接收有效地址第3字節
  SpiReadWrite(rxaddr[3]);     //接收有效地址第4字節
  SpiReadWrite(CRC16_EN XOF_16MHz);      //CRC16模式使能,晶體振蕩器頻率16MHz
  CSN = 1;// Disable Spi
  TRX_CE = !TX_EN;//
}

unsigned char VerifynRFConfig(void) using 0//校驗配置nRF905
{
unsigned char error = 0;
  TRX_CE = 0;//設置nRF905為待機方式
  _nop_();
  CSN = 0;// Spi enable for write a spi command
  SpiReadWrite(RC);    // Read config command
  SpiReadWrite(0xff);     //中心頻率低8位
  if (SpiReadWrite(0xff) != (PA_PWR_10dBm HFREQ_PLL_433MHz)) error ++; //發射+10dBm,發射頻率433MHz,中心頻率第9位=0
  if (SpiReadWrite(0xff) != (TX_AFW_4BYTE RX_AFW_4BYTE)) error ++;     //接收地址寬度4字節,發送地址寬度4字節
  if (SpiReadWrite(0xff) != (RX_PW_32BYTE)) error ++;  //接收數據寬度32字節
  if (SpiReadWrite(0xff) != (TX_PW_32BYTE)) error ++;  //發送數據寬度32字節
  SpiReadWrite(0xff);     //接收有效地址第1字節
  SpiReadWrite(0xff);     //接收有效地址第2字節
  SpiReadWrite(0xff);     //接收有效地址第3字節
  SpiReadWrite(0xff);     //接收有效地址第4字節
  if (SpiReadWrite(0xff) != (CRC16_EN XOF_16MHz)) error ++;      //CRC16模式使能,晶體振蕩器頻率16MHz
  CSN = 1;// Disable Spi
  TRX_CE = !TX_EN;//
  return error;
}

/*******************************************************************************************/
//function SetTxMode();
/*******************************************************************************************/
void SetTxMode(void) using 0    
{ 
  _nop_();
  _nop_();
  _nop_();
  TX_EN=1;
  _nop_();
  TRX_CE=0;
  _nop_();
  _nop_();
  _nop_();
}    
/*******************************************************************************************/
//function SetRxMode();
/*******************************************************************************************/
void SetRxMode(void) using 0
{
  _nop_();
  _nop_();
  _nop_();
  TX_EN=0;
  _nop_();
  TRX_CE=1;
//650uS
  _nop_();
  _nop_();
  _nop_();
}

void SystemIoInit(void) using 0
{
  IE = 0x00;//關閉中斷
  P2 = 0x9d;//P2口初始化
  P0 = 0xff;//P0口初始化
  P1 = 0xff;//P1口初始化
  P3 = 0xff;//P3口初始化
//  nRFPowerUP();
}

void UserSetup(void) using 0//用戶運行環境設置
{
  KeyInit();//鍵盤初始化
  nRFInit();//無線模塊初始化
  SystemBuffers.TimeCount = 0;
}

void ClrWdt(void)  using 0//喂狗
{
  WDTRST = 0x1e;//89s52內狗
  WDTRST = 0xe1;//89s52內狗
}

  
/*------------------------------------
   定時器T0中斷服務程序
------------------------------------*/
void t0proc() interrupt TF0_VECTOR using 1
{
}

/*------------------------------------
   定時器T1中斷服務程序
------------------------------------*/
void t1proc() interrupt TF1_VECTOR using 1
{
}

/*------------------------------------
   定時器T2中斷服務程序(5mS)
------------------------------------*/
void t2proc() interrupt TF2_VECTOR using 0
{
unsigned char key;
code unsigned char KeyPosTab[] = {0x01, 0x02, 0x04, 0x08};
  TF2 = 0;
  if (PCON & GF0_) {//中斷是從主循環內跳入的才能喂狗
    ClrWdt();//清除看門狗計數器
    PCON &= ~GF0_;//清除標志 
  }
  key = ~P0;//接收鍵盤數據每次可取多鍵)
  if (key & KeyPosTab[SystemBuffers.TimeCount & 0x03]) {//有鍵壓下(每次只取1鍵以實現“零耗時消除鍵盤抖動”)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久五月天| 51午夜精品国产| 另类综合日韩欧美亚洲| 亚洲综合激情小说| 亚洲福利一区二区| 亚洲一区二区三区三| 久久精品99久久久| 日本va欧美va欧美va精品| 日韩av在线免费观看不卡| 日韩精品电影在线观看| 日韩国产精品久久久| 美腿丝袜亚洲色图| 韩国av一区二区三区在线观看| 久久精品国产精品亚洲红杏| 国产精品白丝av| 福利一区二区在线| 91久久精品一区二区二区| 欧美日韩亚洲不卡| 日韩欧美一区在线| 国产精品丝袜在线| 亚洲制服丝袜av| 免费看欧美美女黄的网站| 国产精品88888| 97se狠狠狠综合亚洲狠狠| 欧美日韩视频第一区| 日韩欧美国产电影| 国产精品嫩草影院av蜜臀| 亚洲午夜精品久久久久久久久| 日产精品久久久久久久性色 | 激情六月婷婷久久| 成人一区二区三区中文字幕| 91精品1区2区| 久久久久久久综合日本| 夜夜揉揉日日人人青青一国产精品| 亚洲成人你懂的| 国产一区 二区| 欧美日韩中文国产| 久久久久久亚洲综合影院红桃| 亚洲另类在线一区| 久久狠狠亚洲综合| 欧美亚洲日本一区| 国产色产综合色产在线视频| 亚洲欧美日韩系列| 久久99精品国产麻豆婷婷| 91麻豆文化传媒在线观看| 国产成人av电影| 欧美影院精品一区| 国产日产欧美一区二区三区| 午夜精彩视频在线观看不卡| 国内成人自拍视频| 欧美三级在线播放| 日韩毛片在线免费观看| 九色|91porny| 精品久久五月天| 亚洲不卡一区二区三区| 97久久精品人人澡人人爽| 日韩精品中文字幕在线不卡尤物| 一区二区不卡在线播放 | 国产精品1区2区| 欧美日韩视频一区二区| 中文字幕一区二区三区乱码在线| 美女在线一区二区| 欧美性生活一区| 亚洲欧美偷拍卡通变态| 国产suv精品一区二区6| 精品欧美一区二区在线观看| 亚洲一级二级三级在线免费观看| av电影在线观看一区| wwwwww.欧美系列| 免费一区二区视频| 欧美精品自拍偷拍动漫精品| 亚洲欧洲日产国产综合网| 国产福利一区二区| 国产午夜久久久久| 国产一区视频网站| 久久久久久97三级| 免费看黄色91| 精品国产三级a在线观看| 麻豆精品在线观看| 欧美精品一区二区三区很污很色的| 日韩电影一区二区三区四区| 欧美男人的天堂一二区| 亚洲va欧美va人人爽午夜| 欧美日韩dvd在线观看| 亚洲成人av一区| 欧美日韩一区国产| 日韩中文字幕区一区有砖一区| 在线看日韩精品电影| 亚洲电影你懂得| 777午夜精品免费视频| 免费成人在线视频观看| 欧美精品一区二区三区在线| 成人精品视频一区| 综合激情成人伊人| 欧美日韩在线电影| 老司机精品视频线观看86 | 国产人妖乱国产精品人妖| 国产成人h网站| **性色生活片久久毛片| 欧美性生活影院| 久久99国产精品免费网站| 国产色综合一区| 欧美亚洲自拍偷拍| 免费成人你懂的| 亚洲欧洲成人精品av97| 欧美日韩午夜在线| 精品亚洲国内自在自线福利| 国产精品午夜春色av| 日本高清不卡视频| 韩日欧美一区二区三区| 日韩理论电影院| 欧美一区二区播放| 成人综合日日夜夜| 日日摸夜夜添夜夜添亚洲女人| 欧美精品一区二区三区视频| 色综合久久久久久久久久久| 麻豆精品蜜桃视频网站| 自拍偷拍亚洲欧美日韩| 欧美电影免费观看完整版| jlzzjlzz亚洲女人18| 美国毛片一区二区| 亚洲色图视频网| www国产精品av| 欧美日韩午夜在线| 91亚洲精华国产精华精华液| 久久99热这里只有精品| 一片黄亚洲嫩模| 国产精品无遮挡| 精品国产电影一区二区| 欧美性大战久久久久久久蜜臀| 国产米奇在线777精品观看| 亚洲国产精品一区二区久久| 中文子幕无线码一区tr| 日韩精品在线一区二区| 精品视频全国免费看| 91污片在线观看| 成人av在线影院| 国产麻豆精品视频| 麻豆视频一区二区| 日日摸夜夜添夜夜添亚洲女人| 亚洲免费观看视频| 国产精品久久久久久户外露出 | 91老师片黄在线观看| 国产河南妇女毛片精品久久久| 天堂va蜜桃一区二区三区漫画版| 国产精品国产三级国产三级人妇 | 91啪亚洲精品| 成人app网站| 成人激情小说乱人伦| 国产一区二区伦理| 国产一区二区免费在线| 狠狠色丁香久久婷婷综合_中| 日本欧美在线观看| 欧美a级理论片| 久久国产精品99久久人人澡| 亚洲1区2区3区4区| 五月婷婷欧美视频| 日韩精品一二区| 亚洲aaa精品| 蜜桃视频一区二区三区在线观看| 亚洲va天堂va国产va久| 亚洲国产成人av| 日本中文字幕一区二区视频| 天天综合天天做天天综合| 奇米精品一区二区三区四区| 日韩1区2区日韩1区2区| 久色婷婷小香蕉久久| 国产中文字幕精品| 成人高清在线视频| 在线观看91精品国产入口| 91一区二区三区在线播放| 在线观看成人小视频| 7777女厕盗摄久久久| 欧美精品一区二| 国产精品每日更新| 亚洲一区二区三区四区在线观看| 亚洲一卡二卡三卡四卡无卡久久| 视频在线观看国产精品| 激情偷乱视频一区二区三区| 波多野结衣在线aⅴ中文字幕不卡| 91麻豆免费看片| 777xxx欧美| 中文字幕一区二区在线播放| 亚洲一区二区三区四区在线观看| 日韩在线播放一区二区| 免费观看在线综合| av在线这里只有精品| 欧美日本高清视频在线观看| 精品国产伦一区二区三区免费| 日本一区二区三区视频视频| 一区二区三区免费看视频| 久久99深爱久久99精品| 一本到不卡免费一区二区| 日韩一区二区三区免费看 | 欧美一区午夜精品| 国产精品理伦片| 青青草97国产精品免费观看 | 亚洲精品乱码久久久久久| 久久国产婷婷国产香蕉| 91在线观看高清|