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

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

?? spif.c

?? 制作Zigbee模塊的詳細電路原理圖和C代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
	Address = (Address << 5) | 0x8000;

//  	_INT_OFF();

	*P_NAND_GPIO_SETUP &= ~PCSN;		//使能線置0
	Delay(0);
	
	SPI_SB(Address>>8);
	SPI_SB(Address);

  	while(Length--)
  	{
      *DataPtr = SPI_RB();
      DataPtr++;
  	}
  	
	*P_NAND_GPIO_SETUP |= PCSN;		//使能線置1
//  	_INT_ON();
}

/****************************************************************************************
*  	Function: 
*  	Description: 讀ZigBee模塊接收數據包
*  	Syntax: 
*	Modify: 
*	parameter:  UINT8 *DataPtr:讀出的數據存放的指針
				UINT8 Length:  讀出的數據的長度
*  	Returns:    無
*  	Notes: 
*	Date: 2007-02-27
*	Author: ZijianWang
****************************************************************************************/ 
void spi_rd_rx_fifo(UINT8 *DataPtr, UINT8 *RxLength)
{
	UINT8 Length;

//  	_INT_OFF();

	*P_NAND_GPIO_SETUP &= ~PCSN;		//使能線置0
	Delay(0);
	
	SPI_SB(0xE0);
	SPI_SB(0x00);

//	Length = SPI_RB();	//接收的第一個數據為幀界定符,忽略
  	Length = SPI_RB();

  	*RxLength = Length;

  	while(Length--)
  	{
      	*DataPtr = SPI_RB();
      	DataPtr++;
  	}
	
	*P_NAND_GPIO_SETUP |= PCSN;		//使能線置1
//  	_INT_ON();
}

/****************************************************************************************
*  	Function: 
*  	Description: 中斷中使用的 SPI短地址讀,及地址為1字節,讀出的數據為1字節
*  	Syntax: 
*	Modify: 
*	parameter:  UINT8 Address:需要讀的寄存器地址
				UINT8 *DataPtr:讀出的數據存放的指針
*  	Returns:    無
*  	Notes: 
*	Date: 2007-02-27
*	Author: ZijianWang
****************************************************************************************/ 
void spi_sr_IRQ(UINT8 Address, UINT8 *DataPtr)
{ 	
  	Address = (Address << 1);

//  	_INT_OFF();

	*P_NAND_GPIO_SETUP &= ~PCSN;		//使能線置0
	Delay(0);
	
  	SPI_SB(Address);
  	
  	*DataPtr = SPI_RB();

	*P_NAND_GPIO_SETUP |= PCSN;		//使能線置1
	
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//以下為使用芯片SPI驅動的函數
/////////////////////////////////////////////////////////////////////////////////////////////////////////
#else

void InitSPI()
{// Init MCU's SPI Register

	
    *P_SPI_CONF = 0x3;		// SPI Clock Enable
    
	*P_SPI_MODE_CTRL = 0x0; 
	
    *P_SPI_MISC  = 0x00000000;                //SPI smart mode,skip data 
    *P_SPI_TXSTS = 0x80000000;                //SPITXLEVEL1, Tx interrupt disable; 
    *P_SPI_RXSTS = 0x80000000;                //SPIRXLEVEL1, Rx interrupt disable; 
    //*P_SPI_RXSTS = 0x80000000;                //SPIRXLEVEL1, Rx interrupt enable; 
    *P_SPI_MODE_CTRL  = 0x80000002;                             //open SPI clock = 27M/64,Master Mode         
    *P_SD_INTERFACE_SEL |= 0x100;                      //Enable SPI     
    
    while((*P_SPI_MISC & 0x10)==0x10);	//wait for IDLE	  
 
    
}

void spi_sw(UINT8 Address, UINT8 Value)
{
	UINT8 temp;
	
	Address = (Address << 1) | 0x0001; //Shfit the Address

  	_INT_OFF();

  	*P_SPI_TXDATA = Address; //Write the address
  	while(!(*P_SPI_TXSTS & 0x08000000));
  	*P_SPI_TXSTS |= 0x80000000; //clear the flag      
  		  
  	*P_SPI_TXDATA = Value; //Write the data
  	while(!(*P_SPI_TXSTS & 0x08000000));
  	*P_SPI_TXSTS |= 0x80000000; //clear the flag  
  		
    while((*P_SPI_MISC & 0x10)==0x10);	//wait for IDLE	    	
  	temp = *P_SPI_RXDATA;     //read dummy data     	  
  	temp = *P_SPI_RXDATA;     //read dummy data     	
  	 
  	_INT_ON();	
}
 
UINT8 spi_sr(UINT8 Address)
{ 	
  	UINT8 Value;
  	Address = (Address << 1);

	_INT_OFF();
	

  	*P_SPI_TXDATA = Address; //Write the address
  	while(!(*P_SPI_TXSTS & 0x08000000));	 
  
  	Value = *P_SPI_RXDATA;     //read dummy data  	  
  	
  	*P_SPI_TXDATA = 0; //Write the data (For generating the SCLK)
  	while((*P_SPI_MISC & 0x04)==0x00);		  
  	while((*P_SPI_RXSTS & 0x07)>0) 
  	{	  	  
        while((*P_SPI_MISC & 0x10)==0x10);	//wait for IDLE
      	Value = *P_SPI_RXDATA;  	                             
  	}
       
  	_INT_ON();
  	return Value;
}


void spi_lw(UINT16 Address, UINT8 Value)
{
	UINT8 temp;

  	Address = (Address << 5) | 0x8010;

  	_INT_OFF();

  	*P_SPI_TXDATA = Address>>8; //Write the address
  	while(!(*P_SPI_TXSTS & 0x08000000));
  	*P_SPI_TXSTS |= 0x80000000; //clear the flag  	
  

  	*P_SPI_TXDATA = Address; //Write the data
  	while(!(*P_SPI_TXSTS & 0x08000000));
  	*P_SPI_TXSTS |= 0x80000000; //clear the flag  	
  	
  	
  	*P_SPI_TXDATA = Value; //Write the data
  	while(!(*P_SPI_TXSTS & 0x08000000));
  	*P_SPI_TXSTS |= 0x80000000; //clear the flag
  	
    while((*P_SPI_MISC & 0x10)==0x10);	//wait for IDLE	  
	temp = *P_SPI_RXDATA;     //read dummy data 
	temp = *P_SPI_RXDATA;     //read dummy data 	
	temp = *P_SPI_RXDATA;     //read dummy data   		 	

  	_INT_ON();	
}

UINT8 spi_lr(UINT16 Address)
{
	UINT8 Value;
  	Address = (Address << 5) | 0x8000;

  	_INT_OFF();
  	
  	*P_SPI_TXDATA = Address>>8; //Write the address
  	while(!(*P_SPI_TXSTS & 0x08000000));
  	*P_SPI_TXSTS |= 0x80000000; //clear the flag

  	*P_SPI_TXDATA = Address; //Write the data
  	while(!(*P_SPI_TXSTS & 0x08000000));
  	*P_SPI_TXSTS |= 0x80000000; //clear the flag
  	
//	  	*DataPtr = *P_SPI_RXDATA;     //read dummy data	  	//此操作無效,只有IDLE時才能讀數 by zijian
//	  	*DataPtr = *P_SPI_RXDATA;     //read dummy data   	  	
 	
	*P_SPI_TXDATA = 0; //Write the data (For generating the SCLK)		
			
	while((*P_SPI_MISC & 0x04)==0x00);		  	
  	while((*P_SPI_RXSTS & 0x07)>0) 
    { 	  	    
  	    while((*P_SPI_MISC & 0x10)==0x10);	//wait for IDLE
        Value = *P_SPI_RXDATA;                          
    }  
  	_INT_ON();	
  	return Value;
}

void spi_fill_fifo(UINT16 Address, UINT8 *DataPtr, UINT8 Length)
{
	UINT8 temp,i,len;
	
	len = Length+2;
	
	Address = (Address << 5) | 0x8010;

  	_INT_OFF();

	*P_SPI_TXDATA = Address>>8; //Write the address
  	while(!(*P_SPI_TXSTS & 0x08000000));
  	*P_SPI_TXSTS |= 0x80000000; //clear the flag

  	*P_SPI_TXDATA = Address; //Write the data
  	while(!(*P_SPI_TXSTS & 0x08000000));
  	*P_SPI_TXSTS |= 0x80000000; //clear the flag	
	  	
	while (Length--)
	{
      	*P_SPI_TXDATA = *DataPtr; //Write the data
	  	while(!(*P_SPI_TXSTS & 0x08000000));
	  	*P_SPI_TXSTS |= 0x80000000; //clear the flag
      	DataPtr++;
  	}
	
	for(i=0;i<len;i++)
	{
		while((*P_SPI_MISC & 0x10)==0x10);	//wait for IDLE	  
		temp = *P_SPI_RXDATA;     //read dummy data 
	}
	
  	_INT_ON();
}


void spi_dump_fifo(UINT16 Address, UINT8 *DataPtr, UINT8 Length)
{
	while(Length--)
	{
		*DataPtr = spi_lr( Address );
		Address++;
		DataPtr++;
	}
}


void spi_rd_rx_fifo(UINT8 *DataPtr, UINT8 *RxLength)
{
	UINT8 Length;
	UINT16 Address;

	Address = 0x300;
	Length = spi_lr(Address);
  	*RxLength = Length;
    Address++;
  	while(Length--)
  	{
      	*DataPtr = spi_lr( Address );
		Address++;
		DataPtr++;
  	}
}

void spi_sr_IRQ(UINT8 Address, UINT8 *DataPtr)
{ 	
  	Address = (Address << 1);

  	_INT_OFF();

  	*P_SPI_TXDATA = Address; //Write the address
  	while(!(*P_SPI_TXSTS & 0x08000000));	 
  
  	*DataPtr = *P_SPI_RXDATA;     //read dummy data  	  
  	
  	*P_SPI_TXDATA = 0; //Write the data (For generating the SCLK)
  	while((*P_SPI_MISC & 0x04)==0x00);		  
  	while((*P_SPI_RXSTS & 0x07)>0) 
  	{	  	  
//	  	  i=0;
//	  	  while(i++<0xff4); 	
      	while((*P_SPI_MISC & 0x10)==0x10);	//wait for IDLE
      	*DataPtr = *P_SPI_RXDATA;  	                             
  	}
	
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人18精品视频| 欧美日韩一区二区欧美激情| 亚洲一二三区视频在线观看| 精品欧美乱码久久久久久1区2区| 福利一区在线观看| 琪琪久久久久日韩精品| 亚洲人成7777| 国产日韩欧美制服另类| 91超碰这里只有精品国产| 99精品久久免费看蜜臀剧情介绍| 免费精品视频最新在线| 亚洲影视在线观看| 国产精品毛片久久久久久| 3d动漫精品啪啪1区2区免费 | 国产河南妇女毛片精品久久久 | 欧美成人官网二区| 欧美日韩色综合| 不卡一区中文字幕| 国产一区 二区| 蜜桃av一区二区三区| 一区二区三区精品视频| 国产精品色婷婷| 国产日韩三级在线| 久久久久99精品一区| 精品99久久久久久| 欧美一级高清片| 欧美日本精品一区二区三区| 色婷婷激情久久| av电影天堂一区二区在线| 丰满放荡岳乱妇91ww| 国产99久久久国产精品潘金网站| 美脚の诱脚舐め脚责91| 日本人妖一区二区| 天天亚洲美女在线视频| 日本一不卡视频| 日本一不卡视频| 日本欧美久久久久免费播放网| 亚洲一区二区美女| 亚洲午夜成aⅴ人片| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲视频在线一区观看| 综合色中文字幕| 亚洲人亚洲人成电影网站色| 国产精品久久久一本精品| 国产精品久久久一本精品| 国产精品久久久爽爽爽麻豆色哟哟| 国产婷婷色一区二区三区 | 日精品一区二区| 日韩在线观看一区二区| 青草国产精品久久久久久| 麻豆久久一区二区| 国产裸体歌舞团一区二区| 福利视频网站一区二区三区| 97精品久久久午夜一区二区三区| 一本色道久久综合亚洲精品按摩| 色成年激情久久综合| 欧美日韩在线三级| 欧美一区二区观看视频| 欧美精品一区视频| 综合精品久久久| 亚洲成人www| 久久成人精品无人区| 国产盗摄女厕一区二区三区| av高清久久久| 在线播放亚洲一区| 久久久www成人免费无遮挡大片 | 国产三级一区二区三区| 亚洲欧美一区二区视频| 亚洲小说欧美激情另类| 久久成人精品无人区| 99在线精品一区二区三区| 欧美三级视频在线| 精品少妇一区二区三区日产乱码 | 一区二区三区中文字幕电影| 天天综合网天天综合色| 国产成人综合亚洲网站| 色呦呦国产精品| 欧美一级午夜免费电影| 国产精品福利一区| 日韩成人免费电影| 不卡影院免费观看| 欧美一区二区三区免费大片| 欧美国产精品一区| 午夜伦理一区二区| 国产伦精品一区二区三区免费迷| av中文字幕一区| 欧美变态tickling挠脚心| 亚洲欧洲av在线| 老司机一区二区| 91女神在线视频| 亚洲精品一区在线观看| 亚洲激情五月婷婷| 国产高清成人在线| 欧美日韩精品一区二区三区| 国产日韩欧美综合在线| 日韩国产欧美在线播放| 成人ar影院免费观看视频| 欧美一区二区在线视频| 亚洲视频一二三| 国产成人在线视频网站| 5858s免费视频成人| 亚洲天堂久久久久久久| 狠狠色狠狠色合久久伊人| 精品视频1区2区3区| 亚洲日本中文字幕区| 国产一区不卡视频| 欧美一区二区视频观看视频| 亚洲视频一二三| 粉嫩蜜臀av国产精品网站| 日韩一区二区三区在线视频| 亚洲国产人成综合网站| 99re这里都是精品| 久久久久国产精品人| 久久精品久久精品| 欧美精品丝袜中出| 一区二区三区精品在线观看| 成人av电影在线播放| 国产欧美精品一区二区色综合朱莉| 日本欧美一区二区在线观看| 欧美色图天堂网| 亚洲精品国产精品乱码不99| 成人ar影院免费观看视频| 国产亚洲欧美日韩日本| 经典一区二区三区| 日韩亚洲欧美在线| 亚洲伊人色欲综合网| 一本色道综合亚洲| 有坂深雪av一区二区精品| 97国产精品videossex| 国产精品国产精品国产专区不片| 国产精品一二三区| 国产日韩一级二级三级| 国产aⅴ综合色| 国产精品妹子av| 97精品久久久午夜一区二区三区| 成人欧美一区二区三区黑人麻豆| 成人高清视频在线| 自拍视频在线观看一区二区| 国产成人99久久亚洲综合精品| 精品av综合导航| 高清av一区二区| 日韩理论片在线| 欧美偷拍一区二区| 亚洲国产精品一区二区久久恐怖片 | 亚洲综合丁香婷婷六月香| 色先锋aa成人| 亚洲第一综合色| 欧美一级片免费看| 国产精品亚洲一区二区三区妖精| 久久夜色精品一区| 粉嫩在线一区二区三区视频| 自拍偷拍国产亚洲| 欧美日韩国产另类不卡| 日韩精品亚洲一区| 欧美精品一区二区三区蜜桃 | 成人妖精视频yjsp地址| 国产精品久久久久久亚洲毛片 | 国产精品白丝jk白祙喷水网站| 欧美激情综合网| 91麻豆国产福利精品| 性做久久久久久免费观看欧美| 日韩午夜激情免费电影| 国产jizzjizz一区二区| 亚洲精品高清在线观看| 欧美高清精品3d| 狠狠色狠狠色综合系列| 亚洲色图欧美激情| 4438亚洲最大| 粉嫩13p一区二区三区| 亚洲黄色尤物视频| 日韩欧美电影一区| www.久久精品| 欧美96一区二区免费视频| 国产欧美精品区一区二区三区| 色婷婷久久久亚洲一区二区三区| 五月婷婷久久丁香| 国产精品美日韩| 欧美一激情一区二区三区| 懂色av噜噜一区二区三区av| 亚洲一区二区偷拍精品| 26uuu亚洲综合色| 在线视频综合导航| 国产乱理伦片在线观看夜一区| 亚洲精品视频在线| 欧美精品一区视频| 欧美日韩精品综合在线| 成人污视频在线观看| 日本不卡一区二区| 国产精品成人午夜| 精品日韩成人av| 欧美日韩一级黄| 不卡欧美aaaaa| 国精品**一区二区三区在线蜜桃| 亚洲免费毛片网站| 久久久久久日产精品| 欧美日韩国产在线观看| 91免费视频网址| 国产成人精品免费一区二区| 丝袜诱惑制服诱惑色一区在线观看 | 在线精品视频一区二区三四|