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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? nrf905c51demo.txt

?? nRF905開(kāi)發(fā)
?? TXT
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//#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);//系統(tǒng)初始化
void SystemInit(void);//系統(tǒng)初始化
void SystemSetup(void);//系統(tǒng)設(shè)置
void SystemIoInit(void);//系統(tǒng)接口初始化
void TimeInit(void);//定時(shí)器定時(shí)參數(shù)設(shè)置
void UserSetup(void);//用戶運(yùn)行環(huán)境設(shè)置
void ClrWdt(void);//喂狗
void BeepSetup(unsigned char mode);//蜂鳴器發(fā)聲模式設(shè)置
void Beep(void);//蜂鳴器發(fā)聲驅(qū)動(dòng)
void KeyInit(void);//鍵盤(pán)初始化
void KeyCommandExec(unsigned char commgroup, unsigned char commnum);//執(zhí)行鍵盤(pán)命令

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);//長(zhǎng)鍵事件
void Key21(void);
void Key22(void);
void Key23(void);

/*-----------------------------------------------
        nrf905庫(kù)函數(shù)定義
------------------------------------------------*/
unsigned char SpiReadWrite(unsigned char);
void WriteTXBuffer(const unsigned char[]);
unsigned char ReadStatus(void);
void nRFPowerUP(void);
void nRFInit(void);//無(wú)線模塊初始化
unsigned char VerifynRFConfig(void);//校驗(yàn)配置nRF905
void WritenRFConfig(unsigned char[]);//寫(xiě)配置nRF905
void ReadnRFConfig(unsigned char[]);//讀配置nRF905
void FastWritenRFConfig(unsigned char);//快速配置nRF905
void SetTxMode(void);//設(shè)置發(fā)送模式
void SetRxMode(void);//設(shè)置接收模式
void StartTx(void);//開(kāi)始發(fā)送
void nRFReadWrite(void);//無(wú)線收發(fā)模塊


data SystemData SystemBuffers;//申請(qǐng)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)
idata SioData SioBuffers;//申請(qǐng)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)

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

/*------------------------------------------------
        寫(xiě)入nRF905發(fā)送數(shù)據(jù)函數(shù)WriteTXBuffer()
入口參數(shù):
        buffer 發(fā)送數(shù)據(jù)包
出口參數(shù):
        無(wú)
------------------------------------------------*/
void WriteTXBuffer(const unsigned char buffer[]) using 0
{
unsigned char i;
  TRX_CE = 0;//設(shè)置nRF905為待機(jī)方式
  _nop_();
  CSN=0;//打開(kāi)SPI 
  SpiReadWrite(WTA);//寫(xiě)發(fā)送地址
  for (i = 0; i < 4; i++)
  {
 SpiReadWrite(buffer[i]);  // Write 32 bytes Tx data
  }
  CSN=1;//關(guān)閉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;//設(shè)置nRF905為待機(jī)方式
  _nop_();
  CSN=0;//打開(kāi)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狀態(tài)函數(shù)ReadStatus()
入口參數(shù):
        無(wú)
出口參數(shù):
        nRF905狀態(tài)字
------------------------------------------------*/
unsigned char ReadStatus(void) using 0
{
unsigned char val;
  CSN = 0;//打開(kāi)SPI
  val = SpiReadWrite(RC);//讀狀態(tài)
  CSN = 1;//關(guān)閉SPI
  return val;//返回nRF905狀態(tài)字
}

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


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

  MainInit();//系統(tǒng)初始化
  while (1) {//主循環(huán)
    IE   |= 0xb2;//保證中斷可靠EA,ET2,ES,ET0
    TCON |= 0x55;//保證定時(shí)器開(kāi)
    PCON |= SMOD_ + GF0_ + IDL_;//進(jìn)入空閑狀態(tài)并喂軟件狗
    _nop_();
    _nop_();
  }
}

void MainInit(void) using 0//系統(tǒng)初始化
{
  _start_();
  ClrWdt();//清除看門(mén)狗計(jì)數(shù)器
  SystemIoInit();//系統(tǒng)接口初始化
  SystemInit();//系統(tǒng)上電初始化
  SystemSetup();//系統(tǒng)運(yùn)行環(huán)境設(shè)置
  UserSetup();//用戶運(yùn)行環(huán)境設(shè)置
}

void SystemInit(void) using 0//系統(tǒng)初始化
{
unsigned char i;
  for (i = 0; i < 32; i ++) {
    SioBuffers.SioTxBuff[i] = 0;
    SioBuffers.SioRxBuff[i] = 0;
  }
  if (SystemBuffers.RamTest != 0x55aa) {//內(nèi)存初始化
    for (i = 0; i < 32; i ++) {
      SystemBuffers.nRFTxBuff[i] = 0;
      SystemBuffers.nRFRxBuff[i] = 0;
    }
    SystemBuffers.nRFRxBuff[0] = RX_ADDRESS_0;//本機(jī)地址
    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//系統(tǒng)設(shè)置
{
  TimeInit();
  IP = 0x05;//中斷優(yōu)先級(jí)EX0>EX1>ET0>ET1
  SystemBuffers.TestTime = 0;
  SystemBuffers.WaitTime = 0;
}

void TimeInit() using 0
{
//  TCON = 0x55;//啟動(dòng)定時(shí)器
/*----------------------------------
      定時(shí)器0定時(shí)參數(shù)設(shè)置
----------------------------------*/
  TL0 = 0;
  TH0 = 0;
  TR0 = 1;//啟動(dòng)定時(shí)器0
/*----------------------------------
      定時(shí)器1定時(shí)參數(shù)設(shè)置
----------------------------------*/
  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;//無(wú)發(fā)送數(shù)據(jù)
  SioBuffers.SioRXCount = 32;//允許接收串口數(shù)據(jù)
  TR1 = 1;//啟動(dòng)定時(shí)器1
/*----------------------------------
      定時(shí)器2定時(shí)參數(shù)設(shè)置
----------------------------------*/
  TIMEER2 = T2_5mS;
  RCAP    = T2_5mS;
  TR2     = 1;//啟動(dòng)定時(shí)器2
}

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

void ReadnRFConfig(unsigned char rxaddr[]) using 0//讀配置nRF905
{
unsigned char i;
  TRX_CE = 0;//設(shè)置nRF905為待機(jī)方式
  _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;//設(shè)置nRF905為待機(jī)方式
  _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); //發(fā)射+10dBm,發(fā)射頻率433MHz,中心頻率第9位=0
  SpiReadWrite(TX_AFW_4BYTE | RX_AFW_4BYTE);     //接收地址寬度4字節(jié),發(fā)送地址寬度4字節(jié)
  SpiReadWrite(RX_PW_32BYTE);                    //接收數(shù)據(jù)寬度32字節(jié)
  SpiReadWrite(TX_PW_32BYTE);                    //發(fā)送數(shù)據(jù)寬度32字節(jié)
  SpiReadWrite(rxaddr[0]);                       //接收有效地址第1字節(jié)
  SpiReadWrite(rxaddr[1]);                       //接收有效地址第2字節(jié)
  SpiReadWrite(rxaddr[2]);                       //接收有效地址第3字節(jié)
  SpiReadWrite(rxaddr[3]);                       //接收有效地址第4字節(jié)
  SpiReadWrite(CRC16_EN | XOF_16MHz);            //CRC16模式使能,晶體振蕩器頻率16MHz
  CSN = 1;      // Disable Spi
  TRX_CE = !TX_EN;//
}

unsigned char VerifynRFConfig(void) using 0//校驗(yàn)配置nRF905
{
unsigned char error = 0;
  TRX_CE = 0;//設(shè)置nRF905為待機(jī)方式
  _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 ++; //發(fā)射+10dBm,發(fā)射頻率433MHz,中心頻率第9位=0
  if (SpiReadWrite(0xff) != (TX_AFW_4BYTE | RX_AFW_4BYTE)) error ++;     //接收地址寬度4字節(jié),發(fā)送地址寬度4字節(jié)
  if (SpiReadWrite(0xff) != (RX_PW_32BYTE)) error ++;                    //接收數(shù)據(jù)寬度32字節(jié)
  if (SpiReadWrite(0xff) != (TX_PW_32BYTE)) error ++;                    //發(fā)送數(shù)據(jù)寬度32字節(jié)
  SpiReadWrite(0xff);                       //接收有效地址第1字節(jié)
  SpiReadWrite(0xff);                       //接收有效地址第2字節(jié)
  SpiReadWrite(0xff);                       //接收有效地址第3字節(jié)
  SpiReadWrite(0xff);                       //接收有效地址第4字節(jié)
  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;//關(guān)閉中斷
  P2 = 0x9d;//P2口初始化
  P0 = 0xff;//P0口初始化
  P1 = 0xff;//P1口初始化
  P3 = 0xff;//P3口初始化
//  nRFPowerUP();
}

void UserSetup(void) using 0//用戶運(yùn)行環(huán)境設(shè)置
{
  KeyInit();//鍵盤(pán)初始化
  nRFInit();//無(wú)線模塊初始化
  SystemBuffers.TimeCount = 0;
}

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

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

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

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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美久久久| 97久久精品人人爽人人爽蜜臀| 日韩欧美亚洲国产精品字幕久久久| 国产精一区二区三区| 一区二区三区欧美久久| 中文字幕va一区二区三区| 成人精品国产免费网站| 亚洲成人免费看| 亚洲国产岛国毛片在线| 欧美成人女星排行榜| 欧美三级日本三级少妇99| 成人精品免费看| 免费精品99久久国产综合精品| 亚洲人精品午夜| 国产亚洲精品免费| 日韩一区二区三区三四区视频在线观看| 91免费视频网| 波多野结衣在线一区| 国产一区二区三区四区五区入口 | 午夜日韩在线电影| 日韩美女精品在线| 亚洲国产精品精华液ab| 精品精品国产高清一毛片一天堂| 欧美日韩国产一级| 91福利在线导航| jlzzjlzz国产精品久久| 国产成人免费av在线| 久久精品视频免费| 久久精品在线观看| 日韩情涩欧美日韩视频| 在线观看免费成人| 一本大道久久a久久精二百| 成人免费视频caoporn| 国产一区91精品张津瑜| 久久国内精品视频| 韩国一区二区三区| 久久国产精品色| 国产在线精品一区二区| 经典三级视频一区| 国产成人在线电影| 成人国产精品视频| 91亚洲精品久久久蜜桃| 91天堂素人约啪| 在线欧美日韩国产| 欧美高清视频不卡网| 欧美美女一区二区三区| 91精品国产全国免费观看| 精品久久久久99| 日本一区二区三区国色天香| 国产亚洲一区二区三区在线观看 | 久久精品亚洲精品国产欧美kt∨| 在线精品亚洲一区二区不卡| 欧美伊人久久久久久久久影院| 91精品久久久久久久91蜜桃| 欧美一二三区在线观看| 久久人人97超碰com| 欧美激情一区二区三区蜜桃视频| 国产精品免费久久| 亚洲综合一区二区精品导航| 午夜精品免费在线观看| 老司机午夜精品| 国产精品亚洲第一区在线暖暖韩国| 成人少妇影院yyyy| 欧美在线免费播放| 欧美精品一区二区三区蜜臀| 国产精品久久精品日日| 亚洲一区二区四区蜜桃| 激情综合网av| jizz一区二区| 欧美一区永久视频免费观看| 久久精品男人天堂av| 亚洲一区二区三区四区在线观看| 日本大胆欧美人术艺术动态| 国产iv一区二区三区| 在线观看中文字幕不卡| 精品sm在线观看| 亚洲视频一区二区在线观看| 天天色综合天天| 日本中文字幕一区| 国产乱码精品一区二区三| 99精品视频在线免费观看| 欧美日韩国产系列| 国产拍欧美日韩视频二区| 亚洲自拍欧美精品| 国产老妇另类xxxxx| 在线观看精品一区| 国产欧美日韩在线| 日韩国产在线观看一区| 不卡一区二区中文字幕| 欧美成人激情免费网| 亚洲人精品一区| 国产真实精品久久二三区| 在线精品观看国产| 国产精品无遮挡| 久久精品理论片| 91久久精品一区二区三| 一区二区三区国产豹纹内裤在线| 黄色资源网久久资源365| 欧美午夜精品一区二区三区| 中文字幕的久久| 麻豆精品一区二区三区| 欧美曰成人黄网| 国产精品夫妻自拍| 天天色 色综合| 97超碰欧美中文字幕| 久久蜜臀中文字幕| 日本不卡一二三区黄网| 日本高清不卡aⅴ免费网站| 中文在线免费一区三区高中清不卡| 天天影视色香欲综合网老头| 91小宝寻花一区二区三区| 国产亚洲成年网址在线观看| 玖玖九九国产精品| 欧美一区二区在线视频| 亚洲高清在线视频| 在线亚洲一区观看| 国产精品久久久久影院老司 | 中文字幕一区二区三区在线观看| 麻豆成人免费电影| 91麻豆精品91久久久久久清纯| 亚洲精品高清在线观看| 99久久精品国产麻豆演员表| 国产欧美日韩久久| 国产精品一区二区久久不卡 | 亚洲视频一区二区免费在线观看| 国产成a人亚洲精| 欧美激情一区二区| 国产精品一区二区在线看| 精品欧美一区二区三区精品久久| 日韩精品一二三| 国产精品毛片a∨一区二区三区| 色噜噜狠狠成人网p站| 国产精品久久久久久久岛一牛影视| 国产在线不卡视频| 国产日本一区二区| 丁香桃色午夜亚洲一区二区三区| 国产欧美日韩精品一区| 国产成a人亚洲| 18欧美亚洲精品| 在线免费不卡电影| 亚洲成精国产精品女| 制服丝袜一区二区三区| 久久99国产精品久久99| 精品欧美黑人一区二区三区| 国内国产精品久久| 国产精品美女久久福利网站| av一二三不卡影片| 亚洲国产一区视频| 欧美一区国产二区| 国产传媒一区在线| 亚洲人妖av一区二区| 欧美日韩一区高清| 极品尤物av久久免费看| 国产精品欧美久久久久一区二区| 97久久超碰国产精品电影| 亚洲精品v日韩精品| 欧美日本国产视频| 国产精品羞羞答答xxdd| 亚洲日本护士毛茸茸| 91麻豆精品国产无毒不卡在线观看| 麻豆精品视频在线观看| 久久精品亚洲麻豆av一区二区| 99精品视频在线免费观看| 五月天中文字幕一区二区| 久久婷婷色综合| 91在线观看地址| 美女网站色91| 国产精品色呦呦| 欧美日韩高清一区二区| 国产精品一区一区三区| 亚洲最快最全在线视频| 日韩欧美久久久| 一本大道久久a久久综合| 久色婷婷小香蕉久久| 亚洲日穴在线视频| 日韩免费看网站| 精品久久一区二区三区| 国内精品国产成人国产三级粉色 | 国产a级毛片一区| 国产成人免费在线观看| 亚洲免费观看高清完整版在线 | 国产不卡在线视频| 亚洲国产视频网站| 国产亚洲欧美日韩在线一区| 欧洲一区二区三区免费视频| 国产在线不卡一区| 性欧美大战久久久久久久久| 国产精品水嫩水嫩| 日韩一区二区三| 色哟哟一区二区| 极品美女销魂一区二区三区免费| 一区二区三区色| 欧美国产精品v| 日韩免费成人网| 欧美自拍丝袜亚洲| 成人h版在线观看| 久久99精品久久久| 亚洲成人免费电影| 综合色中文字幕| 国产日本欧美一区二区|