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

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

?? dataflash_.h

?? 很實用的單片機例程
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*********************************************************************
網上收集:  免費共享:慧凈電子

目    的:   建立xxxx操作庫
	
目標系統:   基于任何兼容AVR的微處理器

應用軟件:   ICC

版    本:   Version 2.0

收集時間:   2008-08-08

開發人員:   慧凈網上收集整理(感謝能放在網上共享的朋友們,功德無量,有你們,中國會更強大)

說    明:  版權:慧凈助學產品(包括程序源碼,硬件資源)沒有版權,歡迎復制共享,功德無量,為中國自動化與單片事業作一點功勞。部分源碼技術資料、軟件、來源網絡,如有傷害到你的利益請來郵:hjmcu@163.com 我們的助學會員會定期刪除,謝謝你的理解與支持。

助學小店:http://shop37031453.taobao.com/
慧凈空間:http://hi.baidu.com/hjmcu   
助學QQ:  121350852
*********************************************************************/

#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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品专区在线影院观看| 日韩欧美第一区| 六月丁香综合在线视频| 欧美国产日韩精品免费观看| 欧美久久一区二区| 波多野结衣中文一区| 美美哒免费高清在线观看视频一区二区 | 91精品国产综合久久香蕉的特点 | 国产成人小视频| 亚洲成va人在线观看| 国产精品久久久久aaaa| 精品国产污污免费网站入口| 亚洲男人的天堂av| 久久久久一区二区三区四区| 欧美人xxxx| 色婷婷av一区二区三区软件| 国产99久久久国产精品潘金网站| 性做久久久久久免费观看欧美| 亚洲人成精品久久久久久| 国产亚洲精品超碰| 久久综合九色综合97婷婷女人| 欧美乱熟臀69xxxxxx| 欧美中文一区二区三区| 91在线视频观看| 99re热视频精品| 成人99免费视频| 国产高清在线精品| 国产麻豆精品95视频| 国产乱淫av一区二区三区| 奇米四色…亚洲| 老司机免费视频一区二区三区| 天天免费综合色| 日本亚洲电影天堂| 免费一级欧美片在线观看| 日本美女一区二区| 日韩成人av影视| 日本欧美一区二区三区| 日韩高清不卡在线| 日韩av一区二| 久久国产人妖系列| 精东粉嫩av免费一区二区三区| 精品在线播放午夜| 国产一区二区三区美女| 国产高清一区日本| 成人黄页在线观看| 91色porny蝌蚪| 欧美私人免费视频| 8x8x8国产精品| 欧美成人免费网站| 2欧美一区二区三区在线观看视频| 精品国产一区二区亚洲人成毛片 | 日韩欧美一区电影| 欧美大尺度电影在线| 久久久精品国产免费观看同学| 欧美激情一区二区三区全黄| 中文字幕一区二区不卡| 亚洲精品免费在线观看| 天天色图综合网| 激情丁香综合五月| 99热这里都是精品| 欧美亚洲综合一区| 久久综合丝袜日本网| 欧美激情在线看| 亚洲一区二区不卡免费| 免费高清成人在线| 国产馆精品极品| 日本丶国产丶欧美色综合| 欧美一区二区精品久久911| 亚洲精品一区二区三区精华液 | 久久精品国产亚洲高清剧情介绍| 欧美va日韩va| 欧美国产视频在线| 一区二区三区国产精品| 免费精品视频在线| 成人久久视频在线观看| 欧美日韩国产高清一区二区| 久久久久国产精品免费免费搜索| 亚洲欧洲国产日韩| 亚洲第一二三四区| 成人丝袜视频网| 欧美日韩国产不卡| 国产精品久久久久久福利一牛影视| 一区二区三区四区激情| 九九九精品视频| 色综合网色综合| 日韩欧美高清在线| 一区二区三区精品视频在线| 国产一区二区三区av电影 | 欧美一级片在线看| 1000精品久久久久久久久| 日韩二区三区四区| 99re这里只有精品首页| 日韩精品最新网址| 亚洲精品乱码久久久久久久久| 极品少妇一区二区三区精品视频 | 国产偷国产偷亚洲高清人白洁 | 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲人成网站精品片在线观看| 久久国产精品99久久久久久老狼| 91视频免费观看| 久久新电视剧免费观看| 午夜电影久久久| 91视频观看视频| 亚洲国产岛国毛片在线| 热久久国产精品| 欧美三级日韩在线| 亚洲欧美乱综合| 处破女av一区二区| 亚洲精品一区二区三区精华液| 丝袜亚洲精品中文字幕一区| 91美女在线看| 国产精品卡一卡二卡三| 国产麻豆成人精品| 26uuu精品一区二区在线观看| 婷婷久久综合九色综合绿巨人| 91色婷婷久久久久合中文| 国产精品欧美久久久久一区二区| 狠狠色丁香婷婷综合久久片| 日韩一级二级三级| 日韩高清国产一区在线| 欧美亚洲综合久久| 一级精品视频在线观看宜春院| av电影天堂一区二区在线| 欧美高清在线一区| 国产成人精品影视| 国产精品三级久久久久三级| 国产suv精品一区二区883| 欧美国产精品v| 国产一区二区调教| 精品第一国产综合精品aⅴ| 奇米777欧美一区二区| 91精品一区二区三区在线观看| 亚洲尤物视频在线| 欧美美女激情18p| 五月婷婷激情综合网| 欧美精品久久99久久在免费线 | 色视频一区二区| 亚洲综合激情网| 欧美午夜一区二区三区| 亚洲国产中文字幕在线视频综合| 欧美性色黄大片手机版| 亚洲一区二区三区四区在线免费观看| 在线观看av一区二区| 偷拍一区二区三区| 日韩视频中午一区| 国产一区视频在线看| 国产日产亚洲精品系列| 97久久人人超碰| 一级精品视频在线观看宜春院| 欧美精品在线观看一区二区| 人人爽香蕉精品| 国产午夜一区二区三区| 99免费精品视频| 亚洲国产成人精品视频| 日韩一级高清毛片| 懂色av一区二区三区蜜臀 | 一色桃子久久精品亚洲| 91麻豆.com| 日韩电影免费在线看| 国产日韩欧美亚洲| 色婷婷综合五月| 奇米亚洲午夜久久精品| 国产亚洲精品免费| 在线视频一区二区免费| 男女性色大片免费观看一区二区| 久久久影院官网| 91传媒视频在线播放| 久久国产生活片100| 一色桃子久久精品亚洲| 欧美久久久久免费| 丁香六月久久综合狠狠色| 一区二区三区国产| 久久蜜桃av一区精品变态类天堂 | 国产色综合一区| 在线观看成人小视频| 韩国v欧美v日本v亚洲v| 亚洲激情自拍偷拍| 久久综合丝袜日本网| 在线欧美一区二区| 国产精品一二三四五| 亚洲国产视频直播| 久久一区二区视频| 欧美亚洲综合一区| 国产成人超碰人人澡人人澡| 亚洲成av人片www| 久久久不卡影院| 欧美一区二区三区喷汁尤物| eeuss鲁片一区二区三区| 日本欧美在线观看| 亚洲黄色av一区| 亚洲国产成人一区二区三区| 欧美午夜在线观看| 岛国一区二区三区| 捆绑调教美女网站视频一区| 亚洲免费大片在线观看| 国产日韩欧美综合一区| 91精品国产综合久久久久| 色综合天天综合网天天看片| 国产剧情一区在线| 日韩二区在线观看|