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

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

?? dataflash_.h

?? ICCAVR 編寫的函數庫
?? H
?? 第 1 頁 / 共 2 頁
字號:
/******** Example Code : Accessing Atmel AT45Dxxx dataflash on STK500 *******

Device      : 	AT90S8515

File name   : 	dataflash.c

Description : 	Functions to access the Atmel AT45Dxxx dataflash series
      				  Supports 512Kbit - 64Mbit
                 
Last change:    16 Aug 2001   AS
 
****************************************************************************/

#define  __IAR_SYSTEMS_ASM__ 

// Includes
//#include <INA90.H>
//#include <io8515.h>

#include "D:\ICC_H\dataflash.h"

// Constants
//Look-up table for these sizes ->  512k, 1M, 2M, 4M, 8M, 16M, 32M, 64M
flash unsigned char DF_pagebits[]  ={  9,  9,  9,  9,  9,  10,  10,  11};	//index of internal page address bits

// Globals
unsigned char PageBits;

// Functions

/*****************************************************************************
*
*	Function name : DF_SPI_init
*
*	Returns :		None
*
*	Parameters :	None
*
*	Purpose :		Sets up the HW SPI in Master mode, Mode 3
*					Note -> Uses the SS line to control the DF CS-line.
*
******************************************************************************/
void DF_SPI_init (void)
{
	//PORTB= (1<<PORTB);									//Set SS high		
	//DDRB = (1<<PB4) | (1<<PB5)| (1<<PB7);					//Set SS, MOSI and SCK as outputs
	
	SPCR = (1<<SPE) | (1<<MSTR) | (1<<CPHA) | (1<<CPOL);	//Enable SPI in Master mode, mode 3
//SPCR=0x51;
}


/*****************************************************************************
*
*	Function name : DF_SPI_RW
*
*	Returns :		Byte read from SPI data register (any value)
*
*	Parameters :	Byte to be written to SPI data register (any value)
*
*	Purpose :		Read and writes one byte from/to SPI master
*
******************************************************************************/
unsigned char DF_SPI_RW (unsigned char output)
{
	unsigned char input;
	
	SPDR = output;							//put byte 'output' in SPI data register
	while(!(SPSR & 0x80));					//wait for transfer complete, poll SPIF-flag
	input = SPDR;							//read value in SPI data reg.
	
	return input;							//return the byte clocked in from SPI slave
}		


/*****************************************************************************
*
*	Function name : Read_DF_status
*
*	Returns :		One status byte. Consult Dataflash datasheet for further
*					decoding info
*
*	Parameters :	None
*
*	Purpose :		Status info concerning the Dataflash is busy or not.
*					Status info concerning compare between buffer and flash page
*					Status info concerning size of actual device
*
******************************************************************************/
unsigned char Read_DF_status (void)
{
	unsigned char result,index_copy;
	
	DF_CS_inactive;							//make sure to toggle CS signal in order
	DF_CS_active;							//to reset dataflash command decoder
	result = DF_SPI_RW(StatusReg);			//send status register read op-code
	result = DF_SPI_RW(0x00);				//dummy write to get result
	
	index_copy = ((result & 0x38) >> 3);	//get the size info from status register
	PageBits   = DF_pagebits[index_copy];	//get number of internal page address bits from look-up table
	
	return result;							//return the read status register value
}


/*****************************************************************************
*
*	Function name : Page_To_Buffer
*
*	Returns :		None
*
*	Parameters :	BufferNo	->	Decides usage of either buffer 1 or 2
*					PageAdr		->	Address of page to be transferred to buffer
*
*	Purpose :		Transfers a page from flash to dataflash SRAM buffer
*					
******************************************************************************/
void Page_To_Buffer (unsigned int PageAdr, unsigned char BufferNo)
{
	DF_CS_inactive;												//make sure to toggle CS signal in order
	DF_CS_active;												//to reset dataflash command decoder
	
	if (1 == BufferNo)											//transfer flash page to buffer 1
	{
		DF_SPI_RW(FlashToBuf1Transfer);							//transfer to buffer 1 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)											//transfer flash page to buffer 2
	{
		DF_SPI_RW(FlashToBuf2Transfer);							//transfer to buffer 2 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 the transfer
	DF_CS_active;
	
	while(!(Read_DF_status() & 0x80));							//monitor the status register, wait until busy-flag is high
}



/*****************************************************************************
*
*	Function name : Buffer_Read_Byte
*
*	Returns :		One read byte (any value)
*
*	Parameters :	BufferNo	->	Decides usage of either buffer 1 or 2
*					IntPageAdr	->	Internal page address
*
*	Purpose :		Reads one byte from one of the dataflash
*					internal SRAM buffers
*
******************************************************************************/
unsigned char Buffer_Read_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)							//read byte from buffer 1
	{
		DF_SPI_RW(Buf1Read);					//buffer 1 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
		data = DF_SPI_RW(0x00);					//read byte
	}
	else
	if (2 == BufferNo)							//read byte 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
		data = DF_SPI_RW(0x00);					//read byte
	}
	
	return data;								//return the read data byte
}



/*****************************************************************************
*
*	Function name : Buffer_Read_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 read
*					*BufferPtr	->	address of buffer to be used for read bytes
*
*	Purpose :		Reads one or more bytes from one of the dataflash
*					internal SRAM buffers, and puts read bytes into
*					buffer pointed to by *BufferPtr
*
******************************************************************************/
void Buffer_Read_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)							//read byte(s) from buffer 1
	{
		DF_SPI_RW(Buf1Read);					//buffer 1 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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品原创巨作av| 欧洲国内综合视频| 色婷婷亚洲婷婷| 欧美成人激情免费网| 亚洲午夜三级在线| 粉嫩一区二区三区性色av| 欧美剧在线免费观看网站| 国产精品久久久久久久久免费樱桃| 亚洲成人资源在线| 99久久免费精品| 亚洲精品一区二区精华| 亚洲综合免费观看高清完整版| 国产伦精品一区二区三区视频青涩| 欧美日韩国产首页| 亚洲男人的天堂av| 成人黄色大片在线观看| 亚洲精品一区在线观看| 日韩电影在线一区二区| 欧美综合一区二区三区| 国产精品国产三级国产aⅴ入口| 韩国一区二区在线观看| 欧美一区二区三区播放老司机| 亚洲女性喷水在线观看一区| proumb性欧美在线观看| 国产亚洲短视频| 国产精品一区在线观看乱码| 欧美mv和日韩mv国产网站| 蜜桃精品视频在线| 91精品国产91久久久久久最新毛片 | 欧美一区二区啪啪| 日日摸夜夜添夜夜添国产精品| 色婷婷久久一区二区三区麻豆| 亚洲欧美日韩一区二区三区在线观看| 成人免费高清视频在线观看| 国产丝袜美腿一区二区三区| 福利电影一区二区| 国产精品国产a| 一本久道中文字幕精品亚洲嫩| 中文字幕一区二区三区在线观看| 成人a区在线观看| 中文在线免费一区三区高中清不卡| 国产麻豆成人传媒免费观看| 国产精品系列在线| 成人久久视频在线观看| 《视频一区视频二区| 欧美综合一区二区| 日韩vs国产vs欧美| 久久综合久久综合九色| 国产99精品国产| 亚洲美女区一区| 91精品国产一区二区三区香蕉| 免费黄网站欧美| 久久久国产一区二区三区四区小说 | 久久久久久久精| 不卡在线视频中文字幕| 一区二区三区不卡在线观看| 欧美人与z0zoxxxx视频| 国内精品久久久久影院色| 国产精品久久久久久久久图文区| 色老综合老女人久久久| 蜜桃91丨九色丨蝌蚪91桃色| 国产欧美日韩激情| 在线观看日韩av先锋影音电影院| 丝袜国产日韩另类美女| 久久久久九九视频| 欧美日韩综合不卡| 国产成人综合亚洲91猫咪| 亚洲最快最全在线视频| 2021久久国产精品不只是精品| 91小视频在线免费看| 蜜桃视频一区二区三区在线观看| 日本一区免费视频| 制服丝袜国产精品| 91亚洲大成网污www| 精品无人码麻豆乱码1区2区 | 337p粉嫩大胆色噜噜噜噜亚洲| 国产成人欧美日韩在线电影| 亚洲午夜精品在线| 久久久久久久久久久久久久久99| 欧美午夜不卡在线观看免费| 粉嫩蜜臀av国产精品网站| 首页国产欧美日韩丝袜| 中文字幕在线不卡| 26uuu亚洲综合色| 欧美性色黄大片| 成人精品一区二区三区四区 | 香蕉成人啪国产精品视频综合网| 精品乱码亚洲一区二区不卡| 在线看不卡av| 99九九99九九九视频精品| 国产在线一区观看| 免费欧美在线视频| 亚洲国产综合色| 亚洲欧洲av色图| 中文字幕的久久| 久久久三级国产网站| 欧美日韩国产欧美日美国产精品| 波多野结衣在线aⅴ中文字幕不卡| 另类小说一区二区三区| 日韩精品一级二级| 亚洲成在线观看| 亚洲一级二级三级在线免费观看| 国产精品拍天天在线| 国产欧美久久久精品影院| 日韩视频国产视频| 欧美一区二区观看视频| 欧美日产在线观看| 欧美另类videos死尸| 欧美精品在线观看一区二区| 91黄视频在线观看| 在线观看国产91| 欧美午夜影院一区| 欧美日韩国产欧美日美国产精品| 欧美日韩在线播放| 欧美日韩在线播放一区| 欧美喷水一区二区| 欧美一级二级三级蜜桃| 日韩欧美123| 欧美精品一区二区高清在线观看| 日韩欧美在线不卡| 日韩欧美123| 国产女人18水真多18精品一级做 | 亚洲婷婷综合久久一本伊一区| 欧美极品aⅴ影院| ●精品国产综合乱码久久久久| 亚洲色图另类专区| 亚洲成a人片在线不卡一二三区| 偷拍一区二区三区| 日本va欧美va精品发布| 麻豆精品久久精品色综合| 国产精品一级黄| hitomi一区二区三区精品| 91污片在线观看| 欧美亚洲高清一区二区三区不卡| 欧美精品第1页| 精品国产成人在线影院| 国产精品美女www爽爽爽| 亚洲一区二区三区在线看| 蜜桃视频一区二区三区在线观看| 国产精品中文欧美| 91福利国产精品| 欧美成人三级在线| 亚洲色图都市小说| 男女性色大片免费观看一区二区 | 日韩高清国产一区在线| 国产一区二区三区视频在线播放| 粉嫩av一区二区三区粉嫩| 欧美伊人久久大香线蕉综合69 | 日韩一区在线播放| 香蕉影视欧美成人| 久久er精品视频| 色哟哟欧美精品| 精品国产免费人成电影在线观看四季| 国产精品视频一区二区三区不卡| 亚洲一区免费观看| 国产精品18久久久久久久久| 91国偷自产一区二区使用方法| 欧美大片免费久久精品三p| 18涩涩午夜精品.www| 视频一区二区三区入口| www.视频一区| 精品国产一二三区| 一区二区三区不卡在线观看| 国产精品一区一区| 91精品国产入口在线| 亚洲人成7777| 国产suv精品一区二区三区| 欧美久久高跟鞋激| 中文字幕亚洲综合久久菠萝蜜| 毛片av一区二区| 在线观看网站黄不卡| 国产精品久久一级| 国内成人免费视频| 欧美一区午夜精品| 一区二区三区自拍| 成人99免费视频| 欧美经典一区二区| 久久99久久99精品免视看婷婷 | 日本视频一区二区三区| 91麻豆免费视频| 国产精品福利在线播放| 国产精品99久久久| 日韩久久久精品| 蜜臀av一区二区在线观看| 欧美亚洲国产怡红院影院| 《视频一区视频二区| 粉嫩久久99精品久久久久久夜| 精品国产一区二区三区不卡 | 91麻豆精品国产自产在线| 亚洲蜜臀av乱码久久精品蜜桃| 成人免费高清在线观看| 国产午夜精品一区二区三区四区| 久久99久久精品欧美| 日韩欧美国产系列| 久久精品国产一区二区三| 日韩欧美一区二区久久婷婷| 三级欧美韩日大片在线看| 7777女厕盗摄久久久| 琪琪久久久久日韩精品| 欧美一三区三区四区免费在线看|