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

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

?? nflash32.c

?? USB通信程序開發(付DOC說明 論文 源碼) 是畢業設計內容 是好定西
?? C
字號:
/*++

Module Name:

         NFlash32.c

Abstract:

         Header file related to D12 module

Environment:

        ICCAVR 6.29

Revision History:

        04/23/2004      chenchi   created

--*/
/******************************************************************/
#include "io8515v.h"
#include "d12.h"
#include "scsi.h"
#include "nflash32.h"

unsigned int WriteResidueVal = 0;
unsigned char Flash_Write_Sec = 0x00;
unsigned char Flash_Write_Col = 0x00;
unsigned char Flash_Write_addl = 0x00;
unsigned char Flash_Write_addh = 0x00;
unsigned long ReadResidueVal = 0;
unsigned char Flash_Read_Sec = 0x00;
unsigned char Flash_Read_Col = 0x00;
unsigned char Flash_Read_addl = 0x00;
unsigned char Flash_Read_addh = 0x00;

/************************************************************
**工程名稱:U盤固件程序開發
**編譯器類型及版本:ICCAVR 6.26C
**日期:2004.4.30
**創建人:陳馳
**所屬單位:湖南大學計算機與通信學院

**芯片類型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
**時鐘頻率:8MHZ

**函數功能:塊擦除函數
**函數輸入參數及說明:
  addh:高地址
  addl:低地址

**函數返回值:無
**在本函數以外定義的變量:fCOMMAND,fADD,fWPs,fWPc,fRB
**調用的函數說明:無

**修改人:陳馳
**修改日期:2004.4.30
**修改說明:創建
*************************************************************/
void flashErase(unsigned char addh,unsigned char addl)
{
	unsigned char i=0;
	fWPs;//打開寫保護
	fCOMMAND = 0x60;//塊擦除命令
	fADD = addl;//低地址
	fADD = addh;//高地址
	fCOMMAND = 0xd0;//處理命令
	asm("nop \n nop");
	while(!fRB);
	fCOMMAND = 0x70;//讀狀態命令
	i = fDATA;//讀狀態值
	csram;
	fWPc;//寫保護
	printf("%x,%x erase is %x",addh,addl,i);//串口打印
}
/************************************************************
**工程名稱:U盤固件程序開發
**編譯器類型及版本:ICCAVR 6.26C
**日期:2004.4.30
**創建人:陳馳
**所屬單位:湖南大學計算機與通信學院

**芯片類型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
**時鐘頻率:8MHZ

**函數功能:寫FLASH預處理函數
**函數輸入參數及說明:無

**函數返回值:無
**在本函數以外定義的變量:
**調用的函數說明:無

**修改人:陳馳
**修改日期:2004.4.30
**修改說明:創建
*************************************************************/
void flashWritecmd(void)
{
	unsigned char Erase_addh,Erase_addl;
	unsigned char Sour_addh,Sour_addl,Dest_addh,Dest_addl;
	unsigned char Sour_two_addh,Sour_two_addl,Dest_two_addh,Dest_two_addl;
	unsigned int Erase_Count = 0,i = 0;
	unsigned int CopyBack_Count = 0;
	unsigned int CopyBack_two_count = 0;
	unsigned int WritePageNum = 0;
	union{
		unsigned char c[2];
		unsigned int add;
	}Start_add;
	union{
		unsigned char c[2];
		unsigned int add;
	}End_add;
	/************說明*****************
	  對于FLASH的寫操作原理是,寫之前
	  必須擦除,FLASH寫是按頁寫,但是擦
	  除是按塊擦除,1塊 = 32頁,所以在
	  一塊內只有部分頁被寫入時就需要先
	  將塊內其他頁保存,代整塊擦除后一起
	  寫入,這里用0XFA,0X00作為頭塊緩沖,
	  0XFB,0X00作為最后塊緩沖,中間塊采
	  用直接擦除處理
	**********************************/
	flashErase(0xfa, 0x00);
	Sour_addh = XmtBuff.b[19];
	Sour_addl = (XmtBuff.b[20]/0x20) * 0x20;
	Dest_addh = 0xfa;
	Dest_addl = (XmtBuff.b[20]/0x20) * 0x20;
	CopyBack_Count = XmtBuff.b[20]%0x20;
	for(i=0;i<CopyBack_Count;i++){
		flashCopyBLack(Sour_addh,Sour_addl,Dest_addh,Dest_addl);
		Sour_addl ++;
		Dest_addl ++;
	}
	Erase_addl = (XmtBuff.b[20]/0x20) * 0x20;
	Erase_addh = XmtBuff.b[19];
	WritePageNum = (XmtBuff.b[22]<<8)+XmtBuff.b[23];
	Erase_Count = WritePageNum / 0x20;
	if(WritePageNum % 0x20){
		Erase_Count ++;
		if((WritePageNum % 0x20) > (0x20 - (XmtBuff.b[20] % 0x20)))
			Erase_Count ++;
	}else if(XmtBuff.b[20] % 0x20){
		Erase_Count ++;
	}
	Start_add.add = (XmtBuff.b[19]<<8)+XmtBuff.b[20];
	End_add.add = Start_add.add + WritePageNum;
	flashErase(0xfb, 0x00);
	Sour_two_addh = End_add.c[1];
	Sour_two_addl = End_add.c[0];
	Dest_two_addh = 0xfb;
	Dest_two_addl = End_add.c[0];
	CopyBack_two_count = (Erase_Count * 0x20) - CopyBack_Count -WritePageNum;
	for(i=0;i<CopyBack_two_count;i++){
		flashCopyBLack(Sour_two_addh,Sour_two_addl,Dest_two_addh,Dest_two_addl);
		Sour_two_addl ++;
		Dest_two_addl ++;
	}
	for(i=0;i<Erase_Count;i++){
		flashErase(Erase_addh, Erase_addl);
		if(Erase_addl == 224){
			Erase_addl = 0x00;
			Erase_addh ++;
		}else
			Erase_addl += 0x20;
	}
	for(i=0;i<CopyBack_Count;i++){
		Sour_addl --;
		Dest_addl --;
		flashCopyBLack(Dest_addh,Dest_addl,Sour_addh,Sour_addl);
	}
	for(i=0;i<CopyBack_two_count;i++){
		Sour_two_addl --;
		Dest_two_addl --;
		flashCopyBLack(Dest_two_addh,Dest_two_addl,Sour_two_addh,Sour_two_addl);
	}
	Flash_Write_Sec= 0x00;
	Flash_Write_Col= 0x00;
	Flash_Write_addl= XmtBuff.b[20];
	Flash_Write_addh= XmtBuff.b[19];
  	WriteResidueVal=(XmtBuff.b[22]<<8)+XmtBuff.b[23];
}
/************************************************************
**工程名稱:U盤固件程序開發
**編譯器類型及版本:ICCAVR 6.26C
**日期:2004.4.30
**創建人:陳馳
**所屬單位:湖南大學計算機與通信學院

**芯片類型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
**時鐘頻率:8MHZ

**函數功能:寫FLASH函數
**函數輸入參數及說明:寫入數據

**函數返回值:無
**在本函數以外定義的變量:
**調用的函數說明:無

**修改人:陳馳
**修改日期:2004.4.30
**修改說明:創建
*************************************************************/
void flashWrite(unsigned char * PageBuff)
{
	unsigned int i;
	if(WriteResidueVal > 0)
	{
		fWPs;//打開寫保護
		fCOMMAND = 0x00;//從FRIST部分開始
		fCOMMAND = 0x80;//寫FLASH命令
		fADD = 0x00;//從0列開始
		fADD = Flash_Write_addl;//頁地址低位
		fADD = Flash_Write_addh;//頁地址高位
		
		for(i=0;i<512;i++)
		{
			fDATA = PageBuff[i];//寫數據到FLASH指定頁里
		}
		
		fCOMMAND = 0x10;
		asm("nop \n nop");
		while(!fRB);
		fCOMMAND = 0x70;//讀狀態值命令
		i = fDATA;//讀狀態值
		D12_COMMAND = 0xf2;//清端點緩沖區
		csram;
		fWPc;//寫保護
		
		WriteResidueVal = WriteResidueVal - 1;
		if(Flash_Write_addl== 255){
			Flash_Write_addl= 0x00;
			Flash_Write_addh++;
		}else
			Flash_Write_addl++;
	}
}
/************************************************************
**工程名稱:U盤固件程序開發
**編譯器類型及版本:ICCAVR 6.26C
**日期:2004.4.30
**創建人:陳馳
**所屬單位:湖南大學計算機與通信學院

**芯片類型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
**時鐘頻率:8MHZ

**函數功能:FLASH頁拷貝命令
**函數輸入參數及說明:
  Source_addh:源地址高位
  Source_addl:源地址低位
  Destination_addh:目的地址高位
  Destination_addl:目的地址低位

**函數返回值:無
**在本函數以外定義的變量:
**調用的函數說明:無

**修改人:陳馳
**修改日期:2004.4.30
**修改說明:創建
*************************************************************/
void flashCopyBLack(unsigned char Source_addh,unsigned char Source_addl,unsigned char Destination_addh,unsigned char Destination_addl)
{
	unsigned char i;
	fWPs;//打開寫保護
	fCOMMAND = 0x00;//頁拷貝命令
        /*源地址*/
	fADD = 0x00;
	fADD = Source_addl;
	fADD = Source_addh;
	asm("nop \n nop");
	while(!fRB);
	
	fCOMMAND = 0x8a;//頁拷貝命令
	/*目的地址*/
	fADD = 0x00;
	fADD = Destination_addl;
	fADD = Destination_addh;
	asm("nop \n nop");
	while(!fRB);
	
	fCOMMAND = 0x70;//讀狀態命令
	i = fDATA;//讀狀態值
	csram;
	fWPc;//寫保護
}
/************************************************************
**工程名稱:U盤固件程序開發
**編譯器類型及版本:ICCAVR 6.26C
**日期:2004.4.30
**創建人:陳馳
**所屬單位:湖南大學計算機與通信學院

**芯片類型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
**時鐘頻率:8MHZ

**函數功能:讀FLASH預處理函數
**函數輸入參數及說明:無

**函數返回值:無
**在本函數以外定義的變量:
**調用的函數說明:無

**修改人:陳馳
**修改日期:2004.4.30
**修改說明:創建
*************************************************************/
void flashReadcmd(void)
{
	/****************說明************
	  對于FLASH的讀原理為:FLASH的讀
	  可以是隨機讀取,所以這里只要給
	  定讀數據的首地址和讀寫長度
	********************************/
	Flash_Read_Sec = 0x00;
	Flash_Read_Col = 0x00;
	Flash_Read_addl = XmtBuff.b[20];
	Flash_Read_addh = XmtBuff.b[19];
  	ReadResidueVal = (XmtBuff.b[22]<<8) + XmtBuff.b[23];
      	ReadResidueVal = 512 * ReadResidueVal;
	fCOMMAND = 0xff;
	asm("nop \n nop");
	while(!fRB);
}
/************************************************************
**工程名稱:U盤固件程序開發
**編譯器類型及版本:ICCAVR 6.26C
**日期:2004.4.30
**創建人:陳馳
**所屬單位:湖南大學計算機與通信學院

**芯片類型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
**時鐘頻率:8MHZ

**函數功能:讀FLASH函數
**函數輸入參數及說明:無

**函數返回值:無
**在本函數以外定義的變量:
**調用的函數說明:無

**修改人:陳馳
**修改日期:2004.4.30
**修改說明:創建
*************************************************************/
void flashRead(void)
{
	unsigned char i;
	unsigned char  temp;
	if(ReadResidueVal > 0){
		ReadResidueVal -= 64;
		temp = (unsigned char)(Flash_Read_Col + 64);
		fCOMMAND = Flash_Read_Sec;
		fADD = Flash_Read_Col;
		fADD = Flash_Read_addl;
		fADD = Flash_Read_addh;
		asm("nop \n nop");
		while(!fRB);
		switch (Flash_Read_Sec)
		{
			case 0x00:
				if(temp == 0)
				{
					Flash_Read_Sec = 0x01;
					Flash_Read_Col = 0x00;
				}else
				{
					Flash_Read_Col += 64;
				}
				break;
			case 0x01:
				if(temp == 0)
				{
					if(Flash_Read_addl == 255){
						Flash_Read_addl = 0x00;
						Flash_Read_addh ++;
					}else
						Flash_Read_addl ++;
					Flash_Read_Sec = 0x00;
					Flash_Read_Col = 0x00;
				}else
				{
					Flash_Read_Col += 64;
				}
				break;
		}
		
		D12_COMMAND = 0x05;//選擇端點(指針指向0位置)
		cwait;
		D12_COMMAND = 0xf0;//寫緩沖區
		cwait;
		/****************************
	  	  緩沖區數據結構:
	  	  字節1:保留,可為任意值
	  	  字節2:數據字節的數目/長度
	  	  字節3:數據字節1
	  	  字節4:數據字節2
		*****************************/
		D12_DATA = 0x00;//字節1
		cwait;
		D12_DATA = 64;//字節2
		csram;
		for(i=0;i<64;i++)
		{
			D12_DATA = fDATA;//寫數據
			cwait;
		}
		D12_COMMAND = 0xfa;//設置緩沖區有效(滿標志)
		csram;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
自拍av一区二区三区| 久久精品国产一区二区三区免费看| 日韩国产精品久久久久久亚洲| 久久66热偷产精品| 久久亚洲精精品中文字幕早川悠里| 午夜精品123| 91丝袜美女网| 亚洲一区二区五区| 欧美日韩在线一区二区| 亚洲精品va在线观看| 在线亚洲欧美专区二区| 亚洲一区国产视频| 日韩三级av在线播放| 国产综合一区二区| 欧美国产一区二区| 在线观看日韩一区| 亚洲成人第一页| 欧美一区二区三区系列电影| 黄网站免费久久| 国产日韩精品一区二区浪潮av| 国产成人日日夜夜| 亚洲黄一区二区三区| 777午夜精品免费视频| 亚洲综合偷拍欧美一区色| 日韩精品资源二区在线| 国产一区 二区| 中文字幕高清一区| 一本大道久久a久久综合| 一区二区激情视频| 久久色在线观看| av电影在线观看一区| 亚洲精品水蜜桃| 欧美sm极限捆绑bd| 91一区二区三区在线播放| 国产精品久久久久久一区二区三区| 91高清视频免费看| 亚洲伊人色欲综合网| 7777精品伊人久久久大香线蕉经典版下载| 久久国产欧美日韩精品| 国产精品成人在线观看| 成人午夜免费电影| 日本不卡一区二区三区| 久久久久久9999| 欧美高清性hdvideosex| 粉嫩绯色av一区二区在线观看| 亚洲伦在线观看| 久久综合色播五月| 在线视频中文字幕一区二区| 精品一区精品二区高清| 亚洲成a人片在线不卡一二三区| 精品国产乱码久久久久久闺蜜| 在线观看亚洲精品| 国产美女久久久久| 亚洲午夜三级在线| 亚洲免费视频成人| 久久久久久久久久久久电影 | 国产ts人妖一区二区| 亚洲一二三区视频在线观看| 久久中文字幕电影| 欧美亚洲国产一区在线观看网站| 波多野结衣亚洲一区| 麻豆国产91在线播放| 一区二区三区 在线观看视频| 国产欧美日产一区| 欧美一区二区三区人| 国产乱子伦一区二区三区国色天香| 亚洲精品国产无套在线观| 国产精品午夜免费| 日韩欧美在线影院| 在线观看日韩电影| 91在线小视频| 国产福利精品导航| 成人一级片网址| 久久99精品国产91久久来源| 一区在线中文字幕| 国产精品毛片久久久久久| 亚洲精品在线电影| 欧美r级电影在线观看| 欧美日本乱大交xxxxx| 色综合天天综合网天天狠天天| 91影院在线观看| heyzo一本久久综合| 国产一区二区伦理片| 国产在线精品一区二区| 狠狠色狠狠色合久久伊人| 精品一区二区三区在线观看国产| 青青草伊人久久| 天天综合日日夜夜精品| 亚洲6080在线| 免费人成精品欧美精品| 男女激情视频一区| 免费成人性网站| 国产精一区二区三区| 国产一区二区91| 久久66热re国产| 国产一区二区三区免费观看 | 天天影视涩香欲综合网 | 韩国理伦片一区二区三区在线播放| 午夜久久电影网| 久久精品二区亚洲w码| 日韩va亚洲va欧美va久久| 午夜欧美视频在线观看| 天堂va蜜桃一区二区三区| 亚洲精品乱码久久久久久久久| 亚洲欧美另类在线| 日韩电影在线观看电影| 免费看黄色91| 免费人成精品欧美精品| 成人晚上爱看视频| caoporn国产精品| 欧美剧情电影在线观看完整版免费励志电影 | 成人天堂资源www在线| 高潮精品一区videoshd| 99精品欧美一区| 91精品一区二区三区久久久久久| 日韩免费一区二区| 欧美r级在线观看| 日韩一区日韩二区| 亚洲图片自拍偷拍| 激情综合网最新| av电影天堂一区二区在线观看| 日本精品一区二区三区高清| 精品国产髙清在线看国产毛片 | 欧美在线999| 精品sm在线观看| 欧美韩国一区二区| 天堂久久久久va久久久久| 久久99精品国产.久久久久久| 国产成人h网站| 3751色影院一区二区三区| 久久综合色之久久综合| 亚洲同性同志一二三专区| 亚洲3atv精品一区二区三区| 激情综合亚洲精品| 91在线一区二区| 欧美精品高清视频| 中文字幕+乱码+中文字幕一区| 亚洲成人综合视频| 国产精品18久久久久久久久 | 成人激情av网| 精品欧美久久久| 中文字幕人成不卡一区| 奇米精品一区二区三区在线观看一| 26uuu色噜噜精品一区二区| 欧美激情一区二区三区蜜桃视频 | 亚洲精品日韩一| 日本大胆欧美人术艺术动态| 久久免费午夜影院| 国产免费成人在线视频| 亚洲卡通动漫在线| 久久综合久久综合亚洲| 99精品久久免费看蜜臀剧情介绍| 亚洲精品中文在线影院| 久88久久88久久久| 久久综合av免费| 99久久精品国产观看| 国产高清精品在线| 美国欧美日韩国产在线播放| 亚洲精品一区二区三区蜜桃下载| 亚洲国产一区二区在线播放| 成人丝袜视频网| 国产精品久久久久精k8| 国产成人啪午夜精品网站男同| 日本一区二区三级电影在线观看| 日韩在线a电影| 欧美一区二区三区视频免费播放| 国内精品久久久久影院色| 欧美tickling网站挠脚心| 国产一区二区三区不卡在线观看| 国产精品亚洲人在线观看| 午夜精品久久久久久久99水蜜桃 | 国产欧美日韩三区| 91精品国产一区二区三区香蕉| 亚洲老妇xxxxxx| 在线观看国产日韩| 亚洲aaa精品| 欧美一级午夜免费电影| 激情欧美一区二区三区在线观看| 色综合天天天天做夜夜夜夜做| 欧洲中文字幕精品| 欧美午夜电影网| 伊人性伊人情综合网| 日韩美一区二区三区| 麻豆精品视频在线| 久久综合给合久久狠狠狠97色69| 中文字幕在线一区二区三区| 在线免费观看视频一区| 从欧美一区二区三区| 亚洲蜜臀av乱码久久精品| 国产精品成人网| 亚洲一区影音先锋| 精久久久久久久久久久| 欧美日韩成人综合天天影院| 欧美日韩一区二区欧美激情| 久久久一区二区| 亚洲一区二区三区四区在线免费观看 | 欧美bbbbb| 国产偷国产偷亚洲高清人白洁| 成人app下载| 一区二区三区**美女毛片|