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

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

?? w78ie54無線接收端.c

?? 單片機的無線通訊程序
?? C
字號:
//================================================================================
//編制:忻琦     2007.12.9		   串口通訊速率:Baud:9600  fosc=11.0592MHz
//================================================================================


//1號裝置		    //接受端

//#pragma SRC
//#pragma SMALL

#include <REG51.H>

#define INBUF_LEN 32     //數據長度

//(以下操作全部從對應寄存器的字節0開始) 
#define WC  0x00  // 寫配置寄存器(RF-Configuration Register) 
#define RC  0x10   // 讀配置寄存器(RF-Configuration Register) 
#define WTP  0x20   // 向TX-Payload寄存器寫入發送有效數據 
#define RTP  0x21  // 從TX-Payload寄存器讀取發送有效數據 
#define WTA  0x22  // 向TX-Address寄存器寫入發送地址 
#define RTA  0x23  // 從TX-Address寄存器讀取發送地址 
#define RRP  0x24  // 從RX-Payload寄存器讀取接收到的有效數據 

/*nRF905寄存器配置參數*/ 
struct RFConfig 
{ 
 unsigned char n; 
 unsigned char buf[10]; 
}  RxTxConf;




char bdata char_buf;
unsigned char DATA_STR[16];      //放置接收的命令
unsigned char TxBuf[4]; 
unsigned char RxBuf[INBUF_LEN]; 
unsigned char CHARcount,RD_FLAG;

bit  read_flag=0;


sbit AM=P1^4;	
sbit DR=P3^2;	
sbit TX_EN=P1^0;	
sbit TRX_CE=P1^1;	
sbit MOSI=P1^7;	
sbit MISO=P1^6;	
sbit SCK=P3^6;	
sbit CSN=P3^3;
sbit PWR=P1^2;			   //芯片上電
sbit CD=P1^3;
sbit uCLK=P1^5;
sbit Led1=P0^0;		      //指示燈

sbit flag= char_buf^7;
sbit flag1= char_buf^0;



char uuch;
unsigned long t_num=0;


void Delay (unsigned char t)	//t=1延遲650um
{
	unsigned int i,j;
    for (i=0;i<t;i++)
	{
	   for(j=0;j<=650;j++);
	}

}


//<SPI寫操作 代碼> 
void SpiWrite(unsigned char  ch_byte) 
{ 
 unsigned char i;  
 char_buf=ch_byte;    // 將需要發送的數據寫入緩存 
 for (i=0;i<8;i++)    // 循環8次發送一個字節的數據 
 { 
  if (flag)           // flag = char_buf^7; 			    
   MOSI=1; 
  else 
   MOSI=0;  
  SCK=1;              // SCK 高電平 
  char_buf=char_buf<<1; // 左移一位,為下一位的發送做準備 
  SCK=0;              // SCK 低電平  
 }  
} 

//<SPI讀操作 代碼> 
unsigned char SpiRead(void) 
{ 
 unsigned char i;  
 for (i=0;i<8;i++)      //循環8次發送一個字節的數據 
 {  
  char_buf=char_buf<<1; //左移一位,準備接收下一位數據 
  SCK=1;                // SCK 高電平 
  if (MISO)
      flag1=1;          // flag1 = char_buf^0; 
  else 
      flag1=0;
 
  SCK=0;                // SCK低電平 
 } 
 return char_buf;       // char_buf 為接收到的完整數據 
} 

 
//意:數據的傳輸時,高位在前,低位在后。 
 
 
 
//<主機通過SPI接口向905配置寄存器寫入信息> 
void Config905(void) 
{ 
 unsigned char i;      
 CSN=0;      // CSN片選信號,SPI使能 
 SpiWrite(WC);    // 向905芯片寫配置命令 
 for (i=0;i<RxTxConf.n;i++)  // 循環寫入配置信息 
 { 
  SpiWrite(RxTxConf.buf[i]); //RxTxConf保存預先設置好的配置信息 
 } 
 CSN=1;      // 結束SPI數據傳輸 
} 

void Read905(void) 
{ 
 unsigned char i;
     
 CSN=0;      // CSN片選信號,SPI使能 
 SpiWrite(RC);    // 向905芯片寫配置命令 
 for (i=0;i<RxTxConf.n;i++)  // 循環寫入配置信息 
 { 
  DATA_STR[i]=SpiRead(); //RxTxConf保存預先設置好的配置信息 
 } 
 CSN=1;      // 結束SPI數據傳輸
 
 
} 

 
void TXready(char adr)
{

    TxBuf[0]=adr;
    TxBuf[1]=adr;
	TxBuf[2]=adr;
	TxBuf[3]=adr;

} 
 
//使用nRF905發送數據 
void TxPacket(void) 
{ 
 unsigned char i;
  
 TX_EN=1; 
 TRX_CE=0; 
 Delay(1);     // delay for mode change(>=650us) 

 CSN=0; 
 SpiWrite(WTP);    // 先寫數據,Write payload command 
 for (i=0;i<32;i++) 
 { 
  SpiWrite(RxBuf[i]);  // 寫入32直接發送數據 
 } 
 CSN=1;      // 關閉SPI,保存寫入的數據 
 Delay(1); 
 CSN=0;      // SPI使能,準備寫入地址信息 
 SpiWrite(WTA);    // 再寫地址,寫數據至地址寄存器 
 for (i=0;i<4;i++)   // 寫入4字節地址 
 { 
  SpiWrite(TxBuf[i]); 
 }  
 
 CSN=1;      // 關閉SPI 
 TRX_CE=1;     // 進入發送模式,啟動射頻發送 
 Delay(1);     // 進入ShockBurst發送模式后,芯片保證數據發送完成后返回STANDBY模式 
 TRX_CE=0;
 
} 

void RxPacket(void)  
{ 
 unsigned char i; 

 TRX_CE=0;     // 設置905進入待機模式  
 CSN=0;      // 使能SPI 
 SpiWrite(RRP);    // 準備讀取接收到的數據  
 for (i=0;i<32;i++) 
 { 
  RxBuf[i]=SpiRead();  // 通過SPI接口從905芯片讀取數據   
 } 
 
 CSN=1;      // 禁用SPI 
 while(DR||AM);
  
 
} 


//<設置器件為接收模式> 
void SetRxMode(void) 
{ 
 TX_EN=0; 
 TRX_CE=1; 
 Delay(1);     // delay for mode change(>=650us)     
} 



void init_serialcomm(void)     //初始化串口
{
    SCON  = 0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr 
    TMOD |= 0x20;       //TMOD: timer 1, mode 2, 8-bit reload 
    TH1   = 0xFD;       //Baud:9600  fosc=11.0592MHz 
    IE   |= 0x90;       //Enable Serial Interrupt 
    TR1   = 1;          //timer 1 run 
    
}

//向串口發送一個字符,非中斷方式 
void send_char_com(unsigned char ch)  
{
    SBUF=ch;
    while(TI==0);
    TI=0;
}

//向串口發送一個字符串,strlen為該字符串長度 
void send_string_com(unsigned char *str,unsigned int strlen)
{
    unsigned int k=0;
    
	do 
    {
        send_char_com(*(str + k));
        k++;
    } while(k < strlen);
	CHARcount=0;
	
}


//串口接收中斷函數 
void serial () interrupt 4 using 3 
{
    if(RI)
    {
        unsigned char ch;
        
		RI = 0;
        ch = SBUF;
        DATA_STR[CHARcount]=ch;
		if (CHARcount<INBUF_LEN)
		CHARcount++;
        read_flag=1;  //如果串口接收的數據 
                      //就置位取數標志 
         
    }
}


void setConf(void)
{
    RxTxConf.n = 10;		//配置寄存器內容
	RxTxConf.buf[0]=0x4c;
	RxTxConf.buf[1]=0x0c;	//RxTxConf={ 10,
	                        //           0x4c,0x0c,0x44,0x20,0x20,0xcc,0xcc,0xcc,0xcc,0x58}; 

	RxTxConf.buf[2]=0x44;   //4字節的地址寬度
	RxTxConf.buf[3]=0x20;
    RxTxConf.buf[4]=0x20;
    RxTxConf.buf[5]=0xcc;   //接收地址為0x19
    RxTxConf.buf[6]=0xcc;
    RxTxConf.buf[7]=0xcc;
	RxTxConf.buf[8]=0xcc;
	RxTxConf.buf[9]=0x58;

	Config905();			//寫入配置
}

void ChComd(void)	//解釋命令
{
   unsigned char ch,i;
   ch=DATA_STR[0];
   switch (ch)
   {
   case 'h':
   DATA_STR[0]='H';
   DATA_STR[1]='e';
   DATA_STR[2]='l';
   DATA_STR[3]='l';
   DATA_STR[4]='o';
   send_string_com(DATA_STR,5);
   break;
   case 'r':
   Read905();
   send_string_com(DATA_STR,10);
   break;
   case 'g':
   
   while (DR==1);
   PWR=0;
   Delay(10);
   PWR=1;
   Delay(10);
   setConf();
   Delay(10);
   SetRxMode();		//設置接收模式
   DATA_STR[0]='S';
   DATA_STR[1]='E';
   DATA_STR[2]='T';
   DATA_STR[3]='U';
   DATA_STR[4]='P';
   
   send_string_com(DATA_STR,5);
   
   break;

   case 'd':
				
				uuch=0xcd;
                RxBuf[0]=1;
				RxBuf[1]=0xcc;
				RxBuf[2]=uuch;
				RxBuf[3]=0x00;
				
				TXready(uuch);
				
	            TxPacket();	      //發射
				
				SetRxMode();	  //設置為接收
				
		 
   break;
   case 'b':
				
				uuch=0xcb;
				RxBuf[0]=1;
				RxBuf[1]=0xcc;
				RxBuf[2]=uuch;
				RxBuf[3]=0x00;
				
				TXready(uuch);
				
	            TxPacket();	      //發射
				
				SetRxMode();	  //設置為接收
				
		 
   break;
   case 'x':
				
				uuch=0xcb;
				RxBuf[0]=1;
				RxBuf[1]=0xcc;
				RxBuf[2]=uuch;
				RxBuf[3]=0xcd;
				
				TXready(uuch);
				
	            TxPacket();	      //發射
				
				SetRxMode();	  //設置為接收
				
		 
   break;
   case 'y':
				
				uuch=0xcd;
				RxBuf[0]=1;
				RxBuf[1]=0xcc;
				RxBuf[2]=uuch;
				RxBuf[3]=0xcb;
				
				TXready(uuch);
				
	            TxPacket();	      //發射
				
				SetRxMode();	  //設置為接收
				
		 
   break;   
   
   case 'z':
               for (i=0;i<4;i++)
			   RxBuf[i]=DATA_STR[i+1];
			   
			   uuch=RxBuf[2];
			   
			   TXready(uuch);
				
	            TxPacket();	      //發射
				
				SetRxMode();	  //設置為接收
   
   }

}

void PowUp(void)
{
                
        PWR=0;
        Delay(10);
        PWR=1;
        Delay(10);
        setConf();
        Delay(10);
        SetRxMode();		//設置接收模式
    	Delay(2);

}




main()			   //程序入口
{
    	    //配置寄存器內容
    init_serialcomm();  //初始化串口
	CHARcount=0;
	
	Led1=0;             //打開指示燈
	
	PowUp();
	PowUp();
	while(1)
    {
          
		 if (t_num<100000)    
  	     t_num++;
		 else
		 t_num=0;

		 if (t_num==40000||t_num==90000)
		 {

		   //DATA_STR[0]='s';
		   //read_flag=1;
		 
		   if (Led1)
		   Led1=0;
		   else
		   Led1=1;


		 }

			 if ( DR )
			 {
				
			    RxPacket();	      //接收
				
				
				send_string_com(RxBuf,32);
				SetRxMode();	  //設置為接收
				

			 }
			 
		 	 

		  if(read_flag)  //如果取數標志已置位,就將讀到的數從串口發出 
          {
               read_flag=0; //取數標志清0 
			   ChComd();	//解釋命令
               
          }
		  
     }

}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级久久久久久久大片| 51精品视频一区二区三区| 亚洲第一成年网| 久久一区二区三区四区| 91国偷自产一区二区开放时间| 91视频国产资源| 日本不卡一二三| 一区二区三区免费观看| 国产欧美精品一区aⅴ影院| 欧美高清视频一二三区| 色拍拍在线精品视频8848| 国产一区二区在线视频| 日韩精彩视频在线观看| 亚洲免费在线观看| 国产精品久久一卡二卡| 久久久久青草大香线综合精品| 精品视频1区2区| 91国偷自产一区二区开放时间| 国产suv一区二区三区88区| 久久aⅴ国产欧美74aaa| 日韩精品免费专区| 亚洲动漫第一页| 亚洲免费观看视频| 综合久久给合久久狠狠狠97色 | 国产老女人精品毛片久久| 日日夜夜免费精品视频| 亚洲精品视频自拍| 最新国产成人在线观看| 中文字幕欧美三区| 欧美高清在线视频| 欧美国产日韩亚洲一区| 国产网站一区二区| 国产午夜三级一区二区三| 欧美精品一区二区三区四区| 91精品在线麻豆| 欧美一区二区三区不卡| 欧美一二三四在线| 日韩欧美123| 日韩欧美国产午夜精品| 精品婷婷伊人一区三区三| 91成人免费在线| 欧美性一二三区| 欧美日韩一区二区在线观看视频| 欧美三日本三级三级在线播放| 欧美视频在线一区| 欧美影院精品一区| 欧美三区在线观看| 欧美久久久久久久久| 欧美肥妇毛茸茸| 精品少妇一区二区三区视频免付费 | 久久久久久久久久久黄色| 久久夜色精品国产欧美乱极品| 久久综合九色综合97婷婷| 久久久久久久久久久99999| 中文字幕 久热精品 视频在线| 国产亚洲精久久久久久| 国产精品美女久久久久久久| 亚洲日本电影在线| 亚洲国产精品一区二区www在线| 首页综合国产亚洲丝袜| 久久99久久99| 成人动漫精品一区二区| 欧美三电影在线| 日韩欧美黄色影院| 国产精品欧美精品| 亚洲国产日韩av| 美女脱光内衣内裤视频久久网站| 精品一区二区免费视频| 99精品欧美一区| 日韩一区二区三区视频| 久久久精品国产免大香伊| 一区二区三区中文字幕精品精品| 日韩精品电影一区亚洲| 国产福利91精品一区二区三区| 一本在线高清不卡dvd| 日韩三级在线观看| 国产精品女上位| 亚洲网友自拍偷拍| 国产一区二区看久久| 91日韩一区二区三区| 欧美一级xxx| 亚洲视频一区二区在线| 日韩在线一区二区三区| 国产成人丝袜美腿| 91麻豆精品国产91久久久资源速度| 久久精品亚洲精品国产欧美| 亚洲成人av资源| 成人午夜在线免费| 欧美日韩精品免费| 一区免费观看视频| 久久精品久久精品| 欧美日韩视频一区二区| 久久精品欧美日韩| 亚洲成人免费影院| 成人一区二区三区在线观看| 欧美日韩一卡二卡| 国产精品欧美一级免费| 奇米四色…亚洲| 99精品黄色片免费大全| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 亚洲欧洲在线观看av| 久久99精品国产麻豆不卡| 91高清视频在线| 国产精品福利一区| 国产一区二区三区免费在线观看| 欧美性生活大片视频| 中文字幕在线不卡一区| 国产.欧美.日韩| 精品处破学生在线二十三| 亚洲成人av一区二区| 99精品久久只有精品| 国产欧美1区2区3区| 黄色精品一二区| 欧美一区二区久久久| 亚洲激情五月婷婷| 91在线视频播放| 中文字幕欧美一| 国产69精品久久久久毛片| 久久综合av免费| 国产一区二区看久久| 日韩欧美区一区二| 青椒成人免费视频| 日韩一区二区三区在线视频| 五月激情综合网| 欧美精品123区| 三级欧美在线一区| 欧美精品日韩一本| 午夜精品123| 欧美一区二区黄| 丝袜脚交一区二区| 日韩一区二区在线看| 蜜桃视频在线观看一区二区| 制服丝袜国产精品| 免费精品视频最新在线| 日韩一级高清毛片| 精品一二线国产| 精品国免费一区二区三区| 美脚の诱脚舐め脚责91| 亚洲精品一区二区三区福利| 国产制服丝袜一区| 国产女人水真多18毛片18精品视频 | 亚洲www啪成人一区二区麻豆| 欧美性猛片aaaaaaa做受| 亚洲一二三四区不卡| 欧美视频在线播放| 香蕉影视欧美成人| 69堂精品视频| 狠狠色丁香婷婷综合| 国产日韩高清在线| 成人免费视频视频| 亚洲男同1069视频| 欧美日韩视频专区在线播放| 日本少妇一区二区| www国产精品av| 不卡高清视频专区| 亚洲一区二区av在线| 日韩区在线观看| 国产福利不卡视频| 亚洲欧美日韩人成在线播放| 欧美日韩国产综合视频在线观看| 天堂资源在线中文精品| 日韩精品专区在线| 成人动漫一区二区三区| 亚洲综合视频在线观看| 日韩一区二区免费在线电影| 激情成人综合网| 亚洲精品老司机| 日韩欧美在线123| 99久久久久久99| 性感美女久久精品| 久久综合九色综合久久久精品综合| 成人app软件下载大全免费| 一区二区三区四区精品在线视频| 3atv一区二区三区| 成人一区二区三区在线观看| 亚洲一区电影777| 久久精品人人做| 欧美日本在线播放| 色婷婷av一区二区三区之一色屋| 日韩精彩视频在线观看| 中文字幕欧美日韩一区| 欧美肥胖老妇做爰| 99国产精品久久久久久久久久久| 日本怡春院一区二区| 中文字幕五月欧美| 精品国产91乱码一区二区三区| 91蜜桃在线观看| 国产精品一区专区| 亚洲一区二区不卡免费| 中文字幕欧美日本乱码一线二线| 欧美高清一级片在线| 91老师国产黑色丝袜在线| 久久99国产精品久久99果冻传媒| 亚洲欧美国产高清| 久久综合久久综合久久| 91精品啪在线观看国产60岁| 一本色道**综合亚洲精品蜜桃冫| 国产精品一品视频| 日韩电影在线观看网站| 伊人色综合久久天天|