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

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

?? dataflash_.h

?? ICCAVR 編寫的函數庫
?? H
?? 第 1 頁 / 共 2 頁
字號:
		}
	}
	else
	if (2 == BufferNo)							//read byte(s) from buffer 2
	{
		DF_SPI_RW(Buf2Read);					//buffer 2 read op-code
		DF_SPI_RW(0x00);						//don't cares
		DF_SPI_RW((unsigned char)(IntPageAdr>>8));//upper part of internal buffer address
		DF_SPI_RW((unsigned char)(IntPageAdr));	//lower part of internal buffer address
		DF_SPI_RW(0x00);						//don't cares
		for( i=0; i<No_of_bytes; i++)
		{
			*(BufferPtr) = DF_SPI_RW(0x00);		//read byte and put it in AVR buffer pointed to by *BufferPtr
			BufferPtr++;						//point to next element in AVR buffer
		}
	}
}
//NB : Sjekk at (IntAdr + No_of_bytes) < buffersize, hvis ikke blir det bare ball..



/*****************************************************************************
*
*	Function name : Buffer_Write_Enable
*
*	Returns :		None
*
*	Parameters :	IntPageAdr	->	Internal page address to start writing from
*					BufferAdr	->	Decides usage of either buffer 1 or 2
*					
*	Purpose :		Enables continous write functionality to one of the dataflash buffers
*					buffers. NOTE : User must ensure that CS goes high to terminate
*					this mode before accessing other dataflash functionalities 
*
******************************************************************************/
void Buffer_Write_Enable (unsigned char BufferNo, unsigned int IntPageAdr)
{
	DF_CS_inactive;								//make sure to toggle CS signal in order
	DF_CS_active;								//to reset dataflash command decoder
	
	if (1 == BufferNo)							//write enable to buffer 1
	{
		DF_SPI_RW(Buf1Write);					//buffer 1 write op-code
		DF_SPI_RW(0x00);						//don't cares
		DF_SPI_RW((unsigned char)(IntPageAdr>>8));//upper part of internal buffer address
		DF_SPI_RW((unsigned char)(IntPageAdr));	//lower part of internal buffer address
	}
	else
	if (2 == BufferNo)							//write enable to buffer 2
	{
		DF_SPI_RW(Buf2Write);					//buffer 2 write op-code
		DF_SPI_RW(0x00);						//don't cares
		DF_SPI_RW((unsigned char)(IntPageAdr>>8));//upper part of internal buffer address
		DF_SPI_RW((unsigned char)(IntPageAdr));	//lower part of internal buffer address
	}
}



/*****************************************************************************
*
*	Function name : Buffer_Write_Byte
*
*	Returns :		None
*
*	Parameters :	IntPageAdr	->	Internal page address to write byte to
*					BufferAdr	->	Decides usage of either buffer 1 or 2
*					Data		->	Data byte to be written
*
*	Purpose :		Writes one byte to one of the dataflash
*					internal SRAM buffers
*
******************************************************************************/
void Buffer_Write_Byte (unsigned char BufferNo, unsigned int IntPageAdr, unsigned char Data)
{
	
	DF_CS_inactive;								//make sure to toggle CS signal in order
	DF_CS_active;								//to reset dataflash command decoder
	
	if (1 == BufferNo)							//write byte to buffer 1
	{
		DF_SPI_RW(Buf1Write);					//buffer 1 write op-code
		DF_SPI_RW(0x00);						//don't cares
		DF_SPI_RW((unsigned char)(IntPageAdr>>8));//upper part of internal buffer address
		DF_SPI_RW((unsigned char)(IntPageAdr));	//lower part of internal buffer address
		DF_SPI_RW(Data);						//write data byte
	}
	else
	if (2 == BufferNo)							//write byte to buffer 2
	{
		DF_SPI_RW(Buf2Write);					//buffer 2 write op-code
		DF_SPI_RW(0x00);						//don't cares
		DF_SPI_RW((unsigned char)(IntPageAdr>>8));//upper part of internal buffer address
		DF_SPI_RW((unsigned char)(IntPageAdr));	//lower part of internal buffer address
		DF_SPI_RW(Data);						//write data byte
	}		
}


/*****************************************************************************
*
*	Function name : Buffer_Write_Str
*
*	Returns :		None
*
*	Parameters :	BufferNo	->	Decides usage of either buffer 1 or 2
*					IntPageAdr	->	Internal page address
*					No_of_bytes	->	Number of bytes to be written
*					*BufferPtr	->	address of buffer to be used for copy of bytes
*									from AVR buffer to dataflash buffer 1 (or 2)
*
*	Purpose :		Copies one or more bytes to one of the dataflash
*					internal SRAM buffers from AVR SRAM buffer
*					pointed to by *BufferPtr
*
******************************************************************************/
void Buffer_Write_Str (unsigned char BufferNo, unsigned int IntPageAdr, unsigned int No_of_bytes, unsigned char *BufferPtr)
{
	unsigned int i;

	DF_CS_inactive;								//make sure to toggle CS signal in order
	DF_CS_active;								//to reset dataflash command decoder
	
	if (1 == BufferNo)							//write byte(s) to buffer 1
	{
		DF_SPI_RW(Buf1Write);					//buffer 1 write op-code
		DF_SPI_RW(0x00);						//don't cares
		DF_SPI_RW((unsigned char)(IntPageAdr>>8));//upper part of internal buffer address
		DF_SPI_RW((unsigned char)(IntPageAdr));	//lower part of internal buffer address
		for( i=0; i<No_of_bytes; i++)
		{
			DF_SPI_RW(BufferPtr[i]);			//write byte pointed at by *BufferPtr to dataflash buffer 1 location
			//BufferPtr++;						//point to next element in AVR buffer
		}
	}
	else
	if (2 == BufferNo)							//write byte(s) to buffer 2
	{
		DF_SPI_RW(Buf2Write);					//buffer 2 write op-code
		DF_SPI_RW(0x00);						//don't cares
		DF_SPI_RW((unsigned char)(IntPageAdr>>8));//upper part of internal buffer address
		DF_SPI_RW((unsigned char)(IntPageAdr));	//lower part of internal buffer address
		for( i=0; i<No_of_bytes; i++)
		{
			DF_SPI_RW(*(BufferPtr));			//write byte pointed at by *BufferPtr to dataflash buffer 2 location
			BufferPtr++;						//point to next element in AVR buffer
		}
	}
}
//NB : Monitorer busy-flag i status-reg.
//NB : Sjekk at (IntAdr + No_of_bytes) < buffersize, hvis ikke blir det bare ball..



/*****************************************************************************
*
*	Function name : Buffer_To_Page
*
*	Returns :		None
*
*	Parameters :	BufferAdr	->	Decides usage of either buffer 1 or 2
*					PageAdr		->	Address of flash page to be programmed
*
*	Purpose :		Transfers a page from dataflash SRAM buffer to flash
*					
******************************************************************************/
void Buffer_To_Page (unsigned char BufferNo, unsigned int PageAdr)
{
	DF_CS_inactive;												//make sure to toggle CS signal in order
	DF_CS_active;												//to reset dataflash command decoder
		
	if (1 == BufferNo)											//program flash page from buffer 1
	{
		DF_SPI_RW(Buf1ToFlashWE);								//buffer 1 to flash with erase op-code
		DF_SPI_RW((unsigned char)(PageAdr >> (16 - PageBits)));	//upper part of page address
		DF_SPI_RW((unsigned char)(PageAdr << (PageBits - 8)));	//lower part of page address
		DF_SPI_RW(0x00);										//don't cares
	}
	else	
	if (2 == BufferNo)											//program flash page from buffer 2
	{
		DF_SPI_RW(Buf2ToFlashWE);								//buffer 2 to flash with erase op-code
		DF_SPI_RW((unsigned char)(PageAdr >> (16 - PageBits)));	//upper part of page address
		DF_SPI_RW((unsigned char)(PageAdr << (PageBits - 8)));	//lower part of page address
		DF_SPI_RW(0x00);										//don't cares
	}
	
	DF_CS_inactive;												//initiate flash page programming
	DF_CS_active;												
	
	while(!(Read_DF_status() & 0x80));							//monitor the status register, wait until busy-flag is high
}


/*****************************************************************************
*
*	Function name : Cont_Flash_Read_Enable
*
*	Returns :		None
*
*	Parameters :	PageAdr		->	Address of flash page where cont.read starts from
*					IntPageAdr	->	Internal page address where cont.read starts from
*
*	Purpose :		Initiates a continuous read from a location in the DataFlash
*					
******************************************************************************/
void Cont_Flash_Read_Enable (unsigned int PageAdr, unsigned int IntPageAdr)
{
	DF_CS_inactive;																//make sure to toggle CS signal in order
	DF_CS_active;																//to reset dataflash command decoder
	
	DF_SPI_RW(ContArrayRead);													//Continuous Array Read op-code
	DF_SPI_RW((unsigned char)(PageAdr >> (16 - PageBits)));						//upper part of page address
	DF_SPI_RW((unsigned char)((PageAdr << (PageBits - 8))+ (IntPageAdr>>8)));	//lower part of page address and MSB of int.page adr.
	DF_SPI_RW((unsigned char)(IntPageAdr));										//LSB byte of internal page address
	DF_SPI_RW(0x00);															//perform 4 dummy writes
	DF_SPI_RW(0x00);															//in order to intiate DataFlash
	DF_SPI_RW(0x00);															//address pointers
	DF_SPI_RW(0x00);
}

// *****************************[ End Of DATAFLASH.C ]*************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久婷婷香蕉 | 成人爽a毛片一区二区免费| 亚洲免费在线视频| 欧美国产日韩一二三区| 国产亚洲欧美在线| 国产日韩欧美电影| 国产精品视频yy9299一区| 国产欧美日韩一区二区三区在线观看| 亚洲精品一区二区三区福利| 日韩西西人体444www| 久久亚洲一区二区三区四区| 久久久久亚洲蜜桃| 国产精品久久久久9999吃药| 亚洲欧洲av一区二区三区久久| 亚洲精品菠萝久久久久久久| 亚洲一二三级电影| 欧美aaaaaa午夜精品| 国模娜娜一区二区三区| 99麻豆久久久国产精品免费| 国产suv精品一区二区三区| 日韩av一二三| 狠狠色丁香久久婷婷综合_中 | 国产成人在线视频网站| 精品成人免费观看| 久久国产精品第一页| 日韩精品一区二| 成人午夜视频在线观看| 欧美色综合网站| 午夜视黄欧洲亚洲| 韩国女主播成人在线观看| 成人国产在线观看| 日本欧美一区二区在线观看| 欧美国产一区视频在线观看| 日韩欧美一区二区免费| 国产精品青草久久| 香蕉久久一区二区不卡无毒影院 | 懂色av中文一区二区三区| www.日韩精品| 日韩一区二区视频| 亚洲人吸女人奶水| 精品一区二区日韩| 欧美日韩一区二区电影| 精品国产乱码久久久久久久| 亚洲精品高清视频在线观看| 国产中文字幕精品| 欧美日韩精品综合在线| 欧美国产一区二区| 精品一区二区三区不卡| 欧美视频一区在线| 亚洲婷婷综合久久一本伊一区| 男女视频一区二区| 欧美日韩成人一区| 自拍视频在线观看一区二区| 国产一区二区伦理片| 欧美精品第一页| 亚洲欧美乱综合| 丁香激情综合五月| 久久综合色8888| 久久精品99久久久| 欧美一区二区三区日韩| 午夜国产精品一区| 在线观看国产精品网站| 日韩一区在线免费观看| 国产成人免费视频网站| 精品国产一区二区亚洲人成毛片| 三级精品在线观看| 91成人国产精品| 亚洲欧美国产三级| 97国产一区二区| 中文字幕一区视频| aa级大片欧美| 国产精品黄色在线观看| 99re在线精品| 一区二区三区欧美久久| 色综合一区二区三区| 亚洲天堂精品视频| 91在线精品一区二区| 亚洲欧洲av色图| 色婷婷亚洲一区二区三区| 亚洲男同性恋视频| 色综合久久九月婷婷色综合| 亚洲激情在线播放| 欧美日韩国产免费| 美日韩一区二区三区| 亚洲视频图片小说| 国产99一区视频免费| 国产亚洲欧美色| 成人av动漫网站| 一区二区三区欧美日韩| 欧美日韩在线免费视频| 亚洲福利视频一区| 欧美午夜视频网站| 亚洲国产精品久久艾草纯爱 | 在线视频国产一区| 亚洲国产综合91精品麻豆| 51精品秘密在线观看| 麻豆国产精品官网| 久久精品夜色噜噜亚洲a∨| 东方欧美亚洲色图在线| 亚洲免费观看高清完整版在线观看熊| 欧美日韩亚洲综合一区二区三区| 亚洲18色成人| 欧美激情一二三区| 色婷婷综合五月| 成人h版在线观看| 一区二区三区视频在线观看| 欧美一区永久视频免费观看| 国产精品一区免费视频| 国产精品毛片a∨一区二区三区| 欧美伊人久久大香线蕉综合69| 亚洲精品国产精品乱码不99| 色诱视频网站一区| 91视频精品在这里| 天天综合天天做天天综合| 国产日产亚洲精品系列| 欧美伊人久久大香线蕉综合69| 理论片日本一区| 亚洲人成网站精品片在线观看| 日韩欧美国产综合一区| 91视频免费观看| 国产精品1区2区3区| 性做久久久久久久免费看| 国产精品视频一二三| 欧美一区二区三区的| 91丨porny丨国产| 国产一区二区不卡在线| 亚洲成av人片| 亚洲精品少妇30p| 久久久综合网站| 欧美一区二区三区精品| 在线免费视频一区二区| 国产99久久久国产精品潘金| 免费成人在线播放| 亚洲成精国产精品女| 1024亚洲合集| 国产精品亲子伦对白| 国产婷婷色一区二区三区在线| 欧美日韩mp4| 欧美日韩情趣电影| 色综合久久88色综合天天免费| 粉嫩高潮美女一区二区三区| 久久se精品一区精品二区| 日韩二区三区四区| 日本午夜一本久久久综合| 五月综合激情婷婷六月色窝| 亚洲国产日产av| 亚洲与欧洲av电影| 一区二区三区欧美日韩| 亚洲资源中文字幕| 亚洲免费色视频| 亚洲激情成人在线| 亚洲精品成人a在线观看| 亚洲精品日韩一| 亚洲一区中文日韩| 亚洲国产成人av网| 奇米一区二区三区av| 日本不卡一区二区| 日本不卡高清视频| 国内外成人在线| 高清不卡一区二区| av亚洲精华国产精华| 91亚洲国产成人精品一区二区三 | 91蝌蚪porny九色| 97久久超碰国产精品| 色偷偷成人一区二区三区91 | 久久精品一区蜜桃臀影院| 久久久99久久精品欧美| 中文字幕精品一区二区三区精品 | 亚洲午夜久久久久久久久电影院| 成人免费视频在线观看| 亚洲成在线观看| 免费三级欧美电影| 国产麻豆成人传媒免费观看| 国产福利一区二区三区视频| 99精品国产热久久91蜜凸| 色88888久久久久久影院按摩| 91精品国产全国免费观看| 欧美精品一区二区三区视频| 国产精品麻豆久久久| 亚洲午夜精品17c| 狠狠色狠狠色合久久伊人| 不卡av在线网| 欧美一区二区三区小说| 国产午夜精品久久久久久免费视| 国产精品色一区二区三区| 亚洲高清免费视频| 国产精品自拍三区| 91极品视觉盛宴| 国产三级三级三级精品8ⅰ区| 亚洲精品日日夜夜| 国产美女在线观看一区| 一本久道久久综合中文字幕 | 亚洲成人精品一区| 国产成人高清在线| 欧美精品久久天天躁| 一区二区中文视频| 激情综合网激情| 欧美综合色免费| 中文字幕在线免费不卡| 精品一区二区三区香蕉蜜桃|