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

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

?? nrf905c51demo.txt

?? nRF905開發
?? TXT
?? 第 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一区二区三区免费野_久草精品视频
国产一区 二区 三区一级| 99精品久久99久久久久| 成人高清伦理免费影院在线观看| 色婷婷精品久久二区二区蜜臀av | 精品黑人一区二区三区久久| 国产精品国产成人国产三级| 美女国产一区二区三区| 在线中文字幕一区二区| 国产精品久久午夜| 麻豆精品一区二区三区| 日本久久电影网| 国产精品乱码人人做人人爱| 精品中文字幕一区二区| 欧美精品丝袜久久久中文字幕| 亚洲欧洲av在线| www.亚洲在线| 国产日韩欧美在线一区| 激情综合亚洲精品| 日韩一区二区麻豆国产| 图片区日韩欧美亚洲| 色综合天天综合网天天狠天天| 国产精品久久福利| 成人av网站在线观看免费| 久久夜色精品国产欧美乱极品| 久久精品国产99国产| 91精品在线免费观看| 亚洲一区成人在线| 欧美伊人久久久久久久久影院| 中文字幕在线不卡视频| 成人av免费在线观看| 中文字幕亚洲在| 91在线视频播放地址| 亚洲欧美另类小说视频| 一本色道久久综合亚洲aⅴ蜜桃 | 国产真实乱偷精品视频免| 欧美一区二区视频在线观看| 久久91精品久久久久久秒播| 欧美电影免费提供在线观看| 精品伊人久久久久7777人| 欧美v国产在线一区二区三区| 美脚の诱脚舐め脚责91| xfplay精品久久| 成人教育av在线| 综合在线观看色| 欧美色倩网站大全免费| 男男成人高潮片免费网站| 日韩一区二区麻豆国产| 国产成人综合在线| 亚洲人午夜精品天堂一二香蕉| 91麻豆123| 日韩国产精品91| 国产日韩精品一区二区三区| 91污片在线观看| 亚洲成av人片一区二区三区| 日韩免费电影一区| 国产成人免费在线视频| 亚洲免费在线观看视频| 91精选在线观看| 风间由美一区二区av101| 中文字幕日本乱码精品影院| 在线91免费看| 国产不卡视频在线播放| 亚洲va欧美va人人爽| 精品人在线二区三区| 99热精品国产| 蜜桃久久久久久久| 亚洲三级电影全部在线观看高清| 制服丝袜激情欧洲亚洲| 国产精品77777| 亚洲福利视频导航| 久久久五月婷婷| 欧美在线观看一区| 国产乱淫av一区二区三区| 亚洲精品你懂的| 久久久99免费| 777色狠狠一区二区三区| 国产在线不卡视频| 亚洲高清一区二区三区| 中文无字幕一区二区三区| 欧美日韩视频在线第一区| 国产成人免费在线视频| 日韩精品欧美精品| 亚洲精选视频免费看| 欧美精品一区二区三区高清aⅴ| 色悠悠久久综合| 国产精品1区二区.| 免费视频最近日韩| 亚洲精品视频在线| 国产精品拍天天在线| 欧美成人精品高清在线播放| 欧美日韩一区高清| 91久久精品一区二区二区| 国产麻豆视频精品| 久色婷婷小香蕉久久| 亚洲国产精品久久一线不卡| 亚洲欧美日韩成人高清在线一区| 国产亚洲一区字幕| 精品处破学生在线二十三| 精品视频全国免费看| 一本久久a久久精品亚洲| 国产在线精品免费| 精品一区免费av| 麻豆传媒一区二区三区| 五月婷婷激情综合网| 亚洲精品免费一二三区| 欧美激情中文不卡| 久久嫩草精品久久久久| 久久综合成人精品亚洲另类欧美| 日韩亚洲欧美成人一区| 6080亚洲精品一区二区| 欧美精品久久天天躁| 欧美日韩国产大片| 欧美做爰猛烈大尺度电影无法无天| a4yy欧美一区二区三区| 成人网在线播放| 菠萝蜜视频在线观看一区| 春色校园综合激情亚洲| 岛国av在线一区| 91麻豆国产精品久久| 色悠久久久久综合欧美99| 欧美亚一区二区| 欧美午夜一区二区| 欧美老女人在线| 日韩欧美成人一区| 久久久无码精品亚洲日韩按摩| 久久久亚洲精品一区二区三区 | 日韩欧美第一区| 久久综合久久综合久久| 久久综合久久鬼色中文字| 中文字幕第一区二区| 18成人在线观看| 亚洲综合清纯丝袜自拍| 丝袜亚洲另类欧美综合| 国产真实乱子伦精品视频| 成人av在线影院| 欧美特级限制片免费在线观看| 欧美精品乱人伦久久久久久| 日韩欧美中文字幕制服| 中文字幕欧美国产| 一区二区三区久久久| 奇米影视7777精品一区二区| 国产精品一区一区| 在线观看国产91| 日韩久久久久久| 亚洲人成伊人成综合网小说| 视频在线在亚洲| 成人免费va视频| 欧美丰满少妇xxxxx高潮对白| 精品粉嫩aⅴ一区二区三区四区| 国产日韩亚洲欧美综合| 亚洲一区二区在线视频| 国内精品视频666| 色94色欧美sute亚洲13| 精品国产污污免费网站入口 | 欧美亚洲一区三区| 日韩欧美专区在线| 亚洲视频一二三| 久久国产精品一区二区| 97久久精品人人做人人爽50路| 7777精品伊人久久久大香线蕉 | 热久久免费视频| 91免费版在线看| 日韩午夜激情av| 亚洲欧洲中文日韩久久av乱码| 日韩精品免费视频人成| 本田岬高潮一区二区三区| 日韩视频在线观看一区二区| 亚洲色图欧美激情| 国产一区二区三区观看| 欧美性猛片aaaaaaa做受| 国产欧美一区二区三区网站| 男女视频一区二区| 95精品视频在线| 久久久久久久精| 久久9热精品视频| 欧美日韩激情一区| 亚洲日韩欧美一区二区在线| 国产一区二区三区久久悠悠色av| 欧美日韩极品在线观看一区| 亚洲欧美日韩人成在线播放| 国产精品一区二区在线看| 欧美一级二级在线观看| 午夜免费久久看| 91国偷自产一区二区三区观看| 中文字幕欧美激情一区| 国产麻豆一精品一av一免费| 欧美电影免费观看高清完整版在线| 亚洲一区二区三区四区在线观看| 久久综合色播五月| 欧美日韩亚洲不卡| 国产精品久久久久久久久果冻传媒| 日韩高清不卡一区二区三区| 一本一道综合狠狠老| 国产精品二三区| 成人免费视频国产在线观看| 国产精品情趣视频| 国产成人在线免费| 在线观看www91| 亚洲3atv精品一区二区三区| 26uuuu精品一区二区|