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

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

?? nrf2401a的51單片機的代碼.txt

?? 此代碼為RFID射頻識別系統nRF2401a芯片的51單片機的代碼
?? TXT
字號:
**********************************************************************************/
/**********************************************************************************/
// The nRF2401 2.4GHz Multi Channel Software
//
// This software and any related documentation is provided "as is" without any
// warranty of any kind, either express or implied, including, without
// limitation, the implied warranties or merchantability, fitness for a
// particular purpose, and noninfringment. The entire risk arising out of use
// of this software remains with you.
// cpu= At89S52,keilC51 compiler

/**********************************************************************************/
/**********************************************************************************/
#include "reg52.h"   //晶振可以用11.0592MHZ,如果用串口的話
                     //提示:在調試程序的時候晶振用12MHZ
#include "stdio.h"
#include "string.h"
#include "math.h"
#include "intrins.h"
/**********************************************************************************/
#define uchar unsigned char 
#define uint  unsigned int

#define Fclk 3686400
#define BitRate 19200
#define BRR  (Fclk/(16*Bitrate))-1

#define timerdiv 1
#define timerval 256-(Fclk/timerdiv)/100000   // timeout each 10us
/**********************************************************************************/
uchar  InitData[15];
uchar  TXData[14];
uchar  RXData[10];

uchar  Temp;
uchar  BitCnt; 
uchar  ByteCnt;
uchar  Data1= 0xff;

bdata  uchar  tempi;
/**********************************************************************************/
sbit CLK1  =P1^7;
sbit CS  =P1^5;
sbit Data =P3^2;
sbit CE  =P1^1;
//sbit Clk2 =P1^5;
//sbit Dout2 =P1^6;

//sbit DR2  =P3^2;
sbit DR1  =P1^6;
sbit PWR_UP =P1^0;

sbit LED1 =P0^0;
sbit LED2 =P0^2;
sbit LED3 =P0^4;
sbit LED4 =P0^6;

/*sbit CLK1  =P2^0;
sbit CS  =P2^2;
sbit Data =P2^3;
sbit CE  =P2^4;
sbit Clk2 =P2^5;
sbit Dout2 =P2^6;

sbit DR2  =P3^2;
sbit DR1  =P3^3;
sbit PWR_UP =P3^5;

sbit LED1 =P0^4;
sbit LED2 =P0^5;
sbit LED3 =P0^6;
sbit LED4 =P0^7;
*/
sbit  bflag =tempi^7;
/**********************************************************************************/
void  init_io();
void  nRF2401_ON();
void  BuildInitWord();
void  InitnRF2401();
void  DoSPIClock();
void  CE_High();
void  RXEN_HIGH();
void  TXEN_LOW();
void delay_n(uchar n);
void  BuildShockWord(Data1);
void  ShockBurst();
void  CheckButtons();
void  ReceiveShock();
void  Inituart();
/*****************************************MAIN  START ******************************/

/*****************************************MAIN  START ******************************/
void main(void)
{ 
 init_io();                                      //初始化51的I/O口
 nRF2401_ON();                                   //給NRF2401上電,開啟2401,PWR-up=1
 delay_n(100);///jia////////
 BuildInitWord();                                //初始化120位狀態字
 InitnRF2401();                                  //送120位狀態字到NRF2401
 Inituart();                                     //單片機初始化計時器 
 CE_High();                                      //置CE為高
 RXEN_HIGH();                                    //51單片機從NRF2401的DATA讀出數據,NRF2401由配置方式轉為激發方式
 delay_n(100);       //delay for LED light
    
    P0=0xff;    //close all LED 
    TXEN_LOW();    // set TX mode                //51單片機向NRF2401寫入數據
 BuildShockWord(Data1);  
 ShockBurst();  
 delay_n(10);    // delay for mode change
 RXEN_HIGH();                          
 while(1)
  {
   CheckButtons(); //check if the button is pressed
   DR1=1;
   if(DR1==1)  // Check if DR1 is high (any received from nRF2401) 
    ReceiveShock();   
  }  
}
/*************************************Rmain      END *******************************/
/*************************************init_io   START ******************************/
void init_io()
{
 P0=0Xff;
 P1=0x00;
 P2=0xff;
 P3=0xff;
 P0=0xff;
/*
 P0=0Xff;
 P1=0xff;
 P2=0x00;
 P3=0xff;
 P0=0x0f;
 */
}
/*************************************init_io    END *******************************/
void Inituart(void)
{
 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;    //smod=0
 TR1 = 1;     //start timer1

   /* SCON=0x50;  //模式1
    TMOD=0x21;  //定時模式2
    IE=0x90;

    //=====9600=======設置串口通訊寄存器
    PCON=0x00;   //波特率9600BPS,晶振11.0592MHZ
    TH1=0xFD;  //
    TL1=0xFD;  //計數器初值
 TR1 = 1;     //start timer1*/
}
/*************************************BuildSPIWord START****************************/
void BuildInitWord()
{
 InitData[0]=0x50;  //RX receiver 2, Datalength 80bit(10 byte)
 InitData[1]=0x50;  //RX receiver 1, Datalength 80bit(10 byte)
 InitData[2]=0x00;
 InitData[3]=0xcc;
 InitData[4]=0xcc;
 InitData[5]=0xcc;
 InitData[6]=0xcc;
 InitData[7]=0xcc;
 InitData[8]=0xcc;   //RX receiver 1 address   High byte
 InitData[9]=0xcc;  //RX receiver 1 address   High byte
 InitData[10]=0xcc;  //RX receiver 1 address   Low byte
 InitData[11]=0xcc;  //RX receiver 1 address   Low byte
 //InitData[12]=0x82; //this is for 32 bit address(Bit7-Bit2), 16bit CRC(Bit1), CRC disable(Bit0) for ES chip
 InitData[12]=0x83;  //this is for 32 bit address(Bit7-Bit2), 16bit CRC(Bit1), CRC enable(Bit0) for final chip 
 InitData[13]=0x4f;  //One receiver(Bit7), shock Mode(Bit6), Datarate(Bit5) 250K, crystal(Bit4-Bit2), RF Power(Bit1-Bit0)
 //InitData[13]=0x6f; //One receiver(Bit7), shock Mode(Bit6), Datarate(Bit5) 1M, crystal(Bit4-Bit2), RF Power(Bit1-Bit0)
 InitData[14]=0x05;  //Channel Number(Bit7-Bit1), RX/TX mode(Bit0)
}
/*************************************BuildSPIWord END******************************/
void TxData (uchar x)
{
 SBUF=x; 
 while(TI==0);
  TI=0;

}


/*************************************InitnRF2401 START******************************/  
void InitnRF2401()
{
 CE=0;      //Disable CE
 CS=1;      //Enable CS--confige mode
 for (ByteCnt=0;ByteCnt<15;ByteCnt++)
  {
  tempi=InitData[ByteCnt];
  for (BitCnt=0;BitCnt<8;BitCnt++)
   {
    if (bflag==1) //Check if first bit is HIGH
     Data=1;  //Set Data high
    else
     Data=0;  //Set Data low
    tempi=tempi<<1; //Left Shift to get next bit
    DoSPIClock(); //Call "DoClock" to generate a clock pulse
   }
  }
 CS=0;      //Disable CS--standby mode 
 Data=0;      //Set Data low
}
/*************************************InitnRF2401 END *******************************/
/*************************************DoSPIClock START******************************/
void DoSPIClock()
{
 CLK1=1;
 _nop_();
 _nop_();
 CLK1=0;
} 

/*************************************DoSPIClock END *******************************/
/*************************************CE_High   START ******************************/
void CE_High()
{
 CE=1;
}
/*************************************CE_High    END *******************************/
/*************************************TXEN_LOW  START ******************************
void CE_Low()
{
 CE=0;
}
*************************************CE_Low     END ********************************/
/*************************************nRF2401_ON START******************************/
void nRF2401_ON()
{
 PWR_UP=1;
}
/*************************************nRF2401_ON END *******************************/
/*************************************nRF2401_OFF START*****************************/
//void nRF2401_OFF()
//{
// PWR_UP=0;   // Set Power_Up low 
//}
/*************************************nRF2401_OFF END ******************************/
/*************************************RXEN_HIGH START ******************************/
void RXEN_HIGH()
{
 CE=0;    //Set CE LOW  
 CS=1;    //Set CS HIGH--confige mode
 Data=1;    //Set Data HIGH
 DoSPIClock();   //Make one SPIClock cycle
 CS=0;    //Set CS LOW  
 CE=1;    //Set CE HIGH--active mode
}
/*************************************RXEN_HIGH  END *******************************/
/*************************************TXEN_LOW  START ******************************/  
void TXEN_LOW()
{
 CE=0;    //Set CE LOW   
 CS=1;    //Set CS HIGH--confige mode
 Data=0;    //Set Data LOW
 DoSPIClock();  //Make one SPIClock cycle
 CS=0;    //Set CS LOW  
 CE=1;    //Set CE HIGH--active mode
}

/*************************************TXEN_LOW   END *******************************/
/*************************************delay_n   START *****************************/ 
void delay_n(uchar n)
{
 uchar  x;
 uchar  y;
 for(x=0;x<n;x++)
  {
  //for(y=0;y<100;y++)
  for(y=0;y<130;y++)/////jia
  _nop_();
  }
}
/*************************************delay_n   END *******************************/
/*************************************ShockBurst START *****************************/
void BuildShockWord(Data1)
{
 TXData[0]=0xcc;  //MSB    ;RX receiver 1 address   High byte
 TXData[1]=0xcc;  //MSB-1  ;RX receiver 1 address   High byte
 TXData[2]=0xcc;  //MSB-2  ;RX receiver 1 address   Low byte
 TXData[3]=0xcc;  //MSB-3  ;RX receiver 1 address   Low  byte
 TXData[4]=Data1; //MSB-4  ;Data byte 9
 TXData[5]=0x02;  //MSB-5  ;Data byte 8
 TXData[6]=0x03;  //MSB-6  ;Data byte 7
 TXData[7]=0x04;  //MSB-7  ;Data byte 6
 TXData[8]=0x05;  //MSB-8  ;Data byte 5
 TXData[9]=0x06;  //MSB-9  ;Data byte 4
 TXData[10]=0x07; //MSB-10 ;Data byte 3
 TXData[11]=0x08; //MSB-11 ;Data byte 2
 TXData[12]=0x09; //MSB-12 ;Data byte 1
 TXData[13]=0x10; //MSB-13 ;Data byte 0   
}
/************************************* BuildShockWord END *******************************/
/************************************* ShockBurst   START *******************************/
void ShockBurst()
{
 CS=0;     //Pull CS low
 CE=1;     //Enable CE active mode
 for (ByteCnt=0;ByteCnt<14;ByteCnt++)
 {
  tempi=TXData[ByteCnt];
  for (BitCnt=0;BitCnt<8;BitCnt++)
  {
   if (bflag==1) //Check if first bit is HIGH
    Data=1;  //Set Data high
   else
    Data=0;  //Set Data low
   tempi=tempi<<1; //Left Shift to get next bit
   DoSPIClock();
   //SendData(); //Call SendData
  }
 }
 CE=0;     //Disable CE (TX Starts!)--standby mode
 Data=0;     //Set Data low
}
/************************************* ShockBurst END ***********************************/
/************************************* SendData     START *******************************
  
void SendData()
{
 for (BitCnt=0;BitCnt<8;BitCnt++)
  {
  if (bflag==1)  //Check if first bit is HIGH
   Data=1;   //Set Data high
  else
   Data=0;   //Set Data low
  tempi=tempi<<1;  //Left Shift to get next bit
  DoSPIClock();  //Call "DoClock" to generate a clock pulse
  }
}

************************************** SendData END *************************************/
/************************************* CheckButtons START *******************************/ 
/*
void CheckButtons_jia()
{
 uchar xx;
 P0=0xff;
 Temp=P0&0x0f;   //read key value from port P0
 if (Temp!=0x0f)
 {
  delay_n(10);
  Temp=P0&0x0f;   //read key value from port P0
  if (Temp!=0x0f)
  {
   xx=Temp;
   Temp=Temp<<4;
   Data1=Temp;  //put the button Data in dada package
   P0=Data1;  //Turn On the LED
   TXEN_LOW();  //set TX mode
   BuildShockWord(Data1);
   ShockBurst();
   TxData(xx);
   delay_n(500);
   P0=0xff;  //close LED display
   RXEN_HIGH();

   while((P0&0x0f)!=0x0f);
   }
  }
}
*/
void CheckButtons()
{
 uchar xx;
 P0=0xff;
 Temp=P0&0xaa;   //read key value from port P0
 if (Temp!=0xaa)
 {
  delay_n(10);
  Temp=P0&0xaa;   //read key value from port P0
  if (Temp!=0xaa)
  {
   xx=Temp;
   Temp=Temp>>1;
   Data1=Temp;  //put the button Data in dada package
   P0=Data1;  //Turn On the LED
   TXEN_LOW();  //set TX mode
   BuildShockWord(Data1);
   ShockBurst();
   TxData(xx);
   delay_n(500);
   P0=0xff;  //close LED display
   RXEN_HIGH();

   while((P0&0xaa)!=0xaa);
   }
  }
}
/************************************* CheckButtons END *********************************/
/************************************* ReceiveShock START *******************************/
/*
void ReceiveShock_jia()
{
 uchar xx;
 Data=1;     //Set Data tri state
 Temp=0;
 for (ByteCnt=0;ByteCnt<10;ByteCnt++)
 {
  for(BitCnt=0;BitCnt<8;BitCnt++)
  {
   Temp=Temp<<1; //shift left to receive next bit
   CLK1=1;   //set clock high
   _nop_(); 
   _nop_();  //wait one clk cycle
   Data=1;
   if(Data==1)  //check if Data=high  
    Temp|=0x01; //yes - set bit high
   CLK1=0;   //set clock low
   _nop_();  //wait one clk cycle
  }
  _nop_();
  RXData[ByteCnt]=Temp;
  DR1=1;
  if(DR1!=1)   //check if DR1 is not still high
  {  
   _nop_();
   P0=RXData[0]; //Turn On the LED
   xx=(RXData[0]>>4)&0x0f;
   TxData(xx);
   delay_n(500);
        P0=0xff;
  }
  }
}
*/
void ReceiveShock()
{
 uchar xx;
 Data=1;     //Set Data tri state
 Temp=0;
 for (ByteCnt=0;ByteCnt<10;ByteCnt++)
 {
  for(BitCnt=0;BitCnt<8;BitCnt++)
  {
   Temp=Temp<<1; //shift left to receive next bit
   CLK1=1;   //set clock high
   _nop_(); 
   _nop_();  //wait one clk cycle
   Data=1;
   if(Data==1)  //check if Data=high  
    Temp|=0x01; //yes - set bit high
   CLK1=0;   //set clock low
   _nop_();  //wait one clk cycle
  }
  _nop_();
  RXData[ByteCnt]=Temp;
  DR1=1;
  if(DR1!=1)   //check if DR1 is not still high
  {  
   _nop_();
   P0=RXData[0]; //Turn On the LED
   xx=RXData[0]<<1;//
   TxData(xx);
   delay_n(500);
        P0=0xff;
  }
  }
}
/************************************* ReceiveShock END *********************************/ 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二视频| 亚洲欧洲另类国产综合| 国产欧美精品一区aⅴ影院| 亚洲人吸女人奶水| 欧美a级一区二区| fc2成人免费人成在线观看播放| 欧美日韩www| 中文字幕亚洲电影| 国产一区二区三区免费播放| 在线观看成人免费视频| 久久精品欧美一区二区三区不卡 | 久久久久国产精品厨房| 亚洲欧洲制服丝袜| 大桥未久av一区二区三区中文| 91精品欧美综合在线观看最新 | 亚洲女厕所小便bbb| 久久99久久99精品免视看婷婷 | 玉米视频成人免费看| 国产中文字幕精品| 91精品国产综合久久婷婷香蕉| 亚洲视频免费在线观看| 国产成+人+日韩+欧美+亚洲| 日韩区在线观看| 午夜久久久久久久久| 97精品电影院| 亚洲欧洲另类国产综合| 白白色亚洲国产精品| 中文字幕久久午夜不卡| 国产美女主播视频一区| 日韩欧美国产一区二区三区| 日韩影院在线观看| 3751色影院一区二区三区| 亚洲图片欧美色图| 欧美精品一区二区三| 午夜欧美视频在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品性做久久久久久| 精品久久久久久久久久久院品网| 午夜电影一区二区| 欧美日本不卡视频| 亚洲aⅴ怡春院| 欧美精品自拍偷拍| 天天影视色香欲综合网老头| 欧美人与禽zozo性伦| 天天做天天摸天天爽国产一区| 欧美猛男男办公室激情| 日韩激情一二三区| 日韩精品资源二区在线| 国产69精品久久777的优势| 国产日韩欧美精品一区| a在线播放不卡| 亚洲男人都懂的| 欧美日韩你懂的| 免费欧美在线视频| 久久女同互慰一区二区三区| 成人午夜在线播放| 一区二区三区在线视频免费| 色一情一伦一子一伦一区| 亚洲一区二区三区在线播放| 欧美性xxxxxx少妇| 精品午夜久久福利影院 | 国产精品久久久爽爽爽麻豆色哟哟| 国产精品系列在线观看| **网站欧美大片在线观看| 欧美日韩中文字幕一区| 激情图区综合网| 自拍偷拍欧美精品| 欧美一区二区三区免费| 国产成人午夜精品影院观看视频 | 亚洲v精品v日韩v欧美v专区| 欧美成人精品1314www| 欧美人妇做爰xxxⅹ性高电影| 看电视剧不卡顿的网站| 中文字幕一区二区三区四区| 精品视频一区二区三区免费| 国产美女av一区二区三区| 亚洲免费视频成人| 精品国产制服丝袜高跟| 一本大道久久a久久综合婷婷| 久久精品国产在热久久| 亚洲乱码精品一二三四区日韩在线| 日韩欧美一区电影| 91亚洲精品一区二区乱码| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美—级在线免费片| 777a∨成人精品桃花网| 91久久免费观看| 国产福利一区二区三区在线视频| 亚洲午夜羞羞片| 国产精品三级av在线播放| 91麻豆精品国产综合久久久久久| 99精品国产视频| 国产精品一卡二卡| 喷白浆一区二区| 亚洲va韩国va欧美va| 自拍偷拍亚洲综合| 国产精品全国免费观看高清| 日韩精品一区二区三区视频| 欧美日韩一区二区三区高清| av中文字幕在线不卡| 韩国精品一区二区| 蜜臀av性久久久久蜜臀aⅴ| 亚洲成人免费电影| 亚洲精品国久久99热| 国产精品久久久久久久久免费桃花 | 波多野结衣在线aⅴ中文字幕不卡| 男人操女人的视频在线观看欧美| 亚洲综合久久久| 国产精品美女久久久久aⅴ| 久久久久国产免费免费 | 欧美国产日韩亚洲一区| 日韩精品在线网站| 4438亚洲最大| 日韩视频在线观看一区二区| 91精品国产入口| 欧美日韩成人综合在线一区二区| 欧美少妇bbb| 欧美在线影院一区二区| 欧洲av一区二区嗯嗯嗯啊| 色综合天天做天天爱| 91美女片黄在线观看| 久久婷婷色综合| 久久久综合视频| 欧美精品一区二区蜜臀亚洲| 久久久综合视频| 国产精品福利一区| 亚洲情趣在线观看| 亚洲一线二线三线视频| 亚洲午夜久久久久久久久久久| 亚洲小说春色综合另类电影| 一区二区三区在线免费播放| 亚洲欧美日韩一区二区三区在线观看| 亚洲欧美一区二区三区国产精品| 亚洲欧美偷拍三级| 亚洲.国产.中文慕字在线| 免费观看成人av| 国产精品亚洲视频| 一本一道久久a久久精品| 欧亚一区二区三区| 欧美一二三区在线观看| 久久久777精品电影网影网 | 精品久久久久久最新网址| 日本一区二区三区dvd视频在线 | 99综合影院在线| 欧美三级乱人伦电影| 日韩精品一区二区三区三区免费| 国产欧美一区二区在线| 亚洲一区欧美一区| 激情综合色播五月| 99re亚洲国产精品| 在线不卡中文字幕| 国产精品视频yy9299一区| 午夜av区久久| 国产精品白丝jk白祙喷水网站| 91麻豆国产福利在线观看| 欧美一级片在线| 1区2区3区国产精品| 日本欧美大码aⅴ在线播放| 国产成人在线视频免费播放| 在线观看三级视频欧美| 精品91自产拍在线观看一区| 亚洲精品乱码久久久久久久久| 免费成人在线播放| 91免费观看视频在线| 精品国产乱子伦一区| 亚洲激情网站免费观看| 国产精品一区专区| 欧美日本一道本| 日韩一区中文字幕| 捆绑变态av一区二区三区| 欧美在线你懂得| 中文字幕第一区二区| 麻豆精品视频在线观看视频| 91在线视频观看| 国产视频一区二区在线| 丝袜亚洲另类欧美综合| 91色视频在线| 国产农村妇女精品| 国产主播一区二区| 日韩片之四级片| 天天射综合影视| 91福利在线看| 亚洲色图色小说| 成人h动漫精品一区二区| 精品日韩一区二区| 日本人妖一区二区| 欧美性生活久久| 亚洲天堂a在线| 成人动漫一区二区在线| 精品久久久久久无| 美日韩一区二区三区| 欧美精品三级日韩久久| 亚洲第一会所有码转帖| 一本到一区二区三区| 亚洲品质自拍视频网站| 色哟哟一区二区| 亚洲精品国产视频| 91网站最新地址| 亚洲色图制服丝袜| 色综合天天综合狠狠|