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

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

?? flash.c

?? 29w160dt bsp源程序
?? C
字號:

#include "myfile.h"

uchar far rg_Flash1_addr  _at_ 0x800000;
uchar far rg_Flash1_aaa   _at_ 0x800aaa;
uchar far rg_Flash1_555   _at_ 0x800555; 
uchar far rg_Flash2_addr  _at_ 0x800000;
uchar far rg_Flash2_aaa   _at_ 0xa00aaa;
uchar far rg_Flash2_555   _at_ 0xa00555; 

uchar FlashProgram(ulong addr,uchar cshu);
uchar FlashErase(ulong addr);
uchar FlashBlockErase(ulong addr);
uchar FlashEraseChip(ulong addr);
void FlashReadGroup(ulong cl_AddrStar,uchar *pcl_DataStar,uchar cl_Len);
uchar FlashProgramGroup(ulong cl_AddrStar,uchar *pcl_DataStar,uchar cl_Len);

extern void delay(uchar shu);
//////////////////////////////////////////////////////// 
//返回值  =0  ---操作正確
//       !=0 ---操作失敗
///////////////////////////////////////////////////////
uchar FlashProgram(ulong addr,uchar cshu)
{
	uchar cl_Buffer1;
	uchar cl_Return;
	uchar far *prl_Flash1;
	uchar far *prl_Flash2;
	uint  cl_Count;
    //初始化返回值//
	cl_Return = 0x55;
	prl_Flash1 = &rg_Flash1_addr;
	prl_Flash2 = &rg_Flash1_addr;
	cl_Buffer1 = P4;
	cl_Buffer1 &= 0x4;
	if(cl_Buffer1 != 0)
	{
		if(addr < 200000)
		{
		    prl_Flash1 = &rg_Flash1_aaa;
			*prl_Flash1 = 0xaa;
			prl_Flash1 = &rg_Flash1_555;
			*prl_Flash1 = 0x55;
			prl_Flash1 = &rg_Flash1_aaa;
			*prl_Flash1 = 0xa0;
			prl_Flash1 = &rg_Flash1_addr;
			prl_Flash1 += addr;
			*prl_Flash1 = cshu;
		
			cl_Count = 0x0;
	        do
			{
				cl_Buffer1 = P4;
				cl_Buffer1 &= 0x4;
			}while ((cl_Buffer1 == 0) && (cl_Count < 65535)); 
			
			if(cl_Count > 65534)
			{
				cl_Buffer1 = *prl_Flash1;
				cl_Buffer1 &= 0x20;
				if(cl_Buffer1 != 0)
				{
					cl_Return = 0x55;
				}
				else
				{
					cl_Return = 0x0;
				}
			}
			else
			{
				cl_Return = 0x0;
			}
		}
		else
		{
			prl_Flash2 = &rg_Flash2_aaa;
			*prl_Flash2 = 0xaa;
			prl_Flash2 = &rg_Flash2_555;
			*prl_Flash2 = 0x55;
			prl_Flash2 = &rg_Flash2_aaa;
			*prl_Flash2 = 0xa0;
			prl_Flash2 = &rg_Flash2_addr;
			prl_Flash2 += addr;
			*prl_Flash2 = cshu;
		
			cl_Count = 0x0;
	        do
			{
				cl_Buffer1 = P4;
				cl_Buffer1 &= 0x4;
			}while ((cl_Buffer1 == 0) && (cl_Count < 65535)); 
			
			if(cl_Count > 65534)
			{
				cl_Buffer1 = *prl_Flash2;
				cl_Buffer1 &= 0x20;
				if(cl_Buffer1 != 0)
				{
					cl_Return = 0x55;
				}
				else
				{
					cl_Return = 0x0;
				}
			}
			else
			{
				cl_Return = 0x0;
			}
		}   
	}
	
	return(cl_Return);
}
//////////////////////////////////////////////////////
//
//
//////////////////////////////////////////////////////
uchar FlashEraseChip(ulong addr)
{
	uchar cl_Buffer1;
	uchar cl_Return;

	uchar far *prl_Flash1;
	uchar far *prl_Flash2;
	prl_Flash1 = &rg_Flash1_addr;
	prl_Flash2 = &rg_Flash1_addr;
	cl_Buffer1 = P4;
	cl_Buffer1 &= 0x4;
	
	//返回值預置為無效值//
	cl_Return = 0x55;
	
	if(cl_Buffer1 != 0)
	{
		if(addr > 0x200000)
		{
		 	prl_Flash1 = &rg_Flash1_aaa;
		 	*prl_Flash1 = 0xaa;
		 	prl_Flash1 = &rg_Flash1_555;
		 	*prl_Flash1 = 0x55;
		 	prl_Flash1 = &rg_Flash1_aaa;
		 	*prl_Flash1 = 0x80;
		 	*prl_Flash1 = 0xaa;
		 	prl_Flash1 = &rg_Flash1_555;
		 	*prl_Flash1 = 0x55;
		 	prl_Flash1 = &rg_Flash1_aaa;
		 	*prl_Flash1 = 0x10;
	
			delay(100);
	
			//judg erase over
			do
			{
				cl_Buffer1 = P4;
				cl_Buffer1 &= 0x4;
			}while (cl_Buffer1 == 0); 
		}
		else
		{
			prl_Flash2 = &rg_Flash2_aaa;
		 	*prl_Flash2 = 0xaa;
		 	prl_Flash2 = &rg_Flash2_555;
		 	*prl_Flash2 = 0x55;
		 	prl_Flash2 = &rg_Flash2_aaa;
		 	*prl_Flash2 = 0x80;
		 	*prl_Flash2 = 0xaa;
		 	prl_Flash2 = &rg_Flash2_555;
		 	*prl_Flash2 = 0x55;
		 	prl_Flash2 = &rg_Flash2_aaa;
		 	*prl_Flash2 = 0x10;
	
			delay(100);
	
			//judg erase over
			do
			{
				cl_Buffer1 = P4;
				cl_Buffer1 &= 0x4;
			}while (cl_Buffer1 == 0); 
		}
	}
	
	return(cl_Return);
}
///////////////////////////////////////////////////////
//
//
///////////////////////////////////////////////////////
uchar FlashBlockErase(ulong addr)
{
	uchar cl_Buffer1;
	uchar cl_Return;
	uchar far *prl_Flash1;
	uchar far *prl_Flash2;
	prl_Flash1 = &rg_Flash1_addr;
	prl_Flash2 = &rg_Flash2_addr;
	cl_Buffer1 = P4;
	cl_Buffer1 &= 0x4;
	
	//返回值預置為無效值//
	cl_Return = 0x55;
	
	if(cl_Buffer1 != 0)
	{
		if(addr > 0x200000)
		{
		 	prl_Flash1 = &rg_Flash1_aaa;
		 	*prl_Flash1 = 0xaa;
		 	prl_Flash1 = &rg_Flash1_555;
		 	*prl_Flash1 = 0x55;
		 	prl_Flash1 = &rg_Flash1_aaa;
		 	*prl_Flash1 = 0x80;
		 	*prl_Flash1 = 0xaa;
		 	prl_Flash1 = &rg_Flash1_555;
		 	*prl_Flash1 = 0x55;
		 	prl_Flash1 = &rg_Flash1_addr;
		 	prl_Flash1 += addr;
		 	*prl_Flash1 = 0x30;
		 	
		 	delay(1);
	
	        //judg erase over
			do
			{
				cl_Buffer1 = P4;
				cl_Buffer1 &= 0x4;
			}while (cl_Buffer1 == 0); 
		}
		else
		{
		 	prl_Flash2 = &rg_Flash2_aaa;
		 	*prl_Flash2 = 0xaa;
		 	prl_Flash1 = &rg_Flash2_555;
		 	*prl_Flash2 = 0x55;
		 	prl_Flash2 = &rg_Flash2_aaa;
		 	*prl_Flash2 = 0x80;
		 	*prl_Flash2 = 0xaa;
		 	prl_Flash2 = &rg_Flash1_555;
		 	*prl_Flash2 = 0x55;
		 	prl_Flash2 = &rg_Flash2_addr;
		 	prl_Flash2 += addr;
		 	*prl_Flash2 = 0x30;
		 	
		 	delay(1);
	
	        //judg erase over
			do
			{
				cl_Buffer1 = P4;
				cl_Buffer1 &= 0x4;
			}while (cl_Buffer1 == 0); 
		}			
	}
		
	return(cl_Return);
}

///////////////////////////////////////////////////////		 	
//返回值  =0  ---操作正確
//       !=0 ---操作失敗
///////////////////////////////////////////////////////	
/*
uchar ProgramJudgFlash1(uchar cshu)
{
	uchar far *prl_Flash1;
	uchar cl_Status1;
	uchar cl_Status2;
	uchar cl_Return;
	prl_Flash1 = &rg_Flash1_addr;
	do
	{
		delay(1);
		cl_Status1 = *prl_Flash1;
		cl_Status2 = cl_Status1;
		
		//DQ7 poll  bit
		cl_Status1 &= 0x80;  
		
		cshu &= 0x80;
		//DQ5 error bit    
		cl_Status2 &= 0x20;	
			
		if(cl_Status1 == cshu)
		{
			cl_Return = 0;
		}
		else if(cl_Status2 != 0)
		{
			
			cl_Status1 = *prl_Flash1;
			cl_Status1 &= 0x80;
			if(cl_Status1 == cshu)
			{
				cl_Return = 0;
			}
			else
			{
				cl_Return = 0x55;
			}
			
			//reset error
			*prl_Flash1 = 0xf0;
		}
	//判斷是否寫完("cl_Status" flash的狀態寄存器)	
	} while((cl_Status1 != cshu) && (cl_Status2 == 0));
	return(cl_Return);
}
*/
//////////////////////////////////////////////////////////
//返回值  =0  ---操作正確
//       !=0 ---操作失敗
/////////////////////////////////////////////////////////
/*
uchar ProgramJudgFlash2(uchar cshu)
{
	uchar far *prl_Flash2;
	uchar cl_Status1;
	uchar cl_Status2;
	uchar cl_Return;
	prl_Flash2 = &rg_Flash1_addr;
	do
	{
		cl_Status1 = *prl_Flash2;
		cl_Status2 = cl_Status1;
		
		//DQ7 poll  bit
		cl_Status1 &= 0x80;  
		cshu &= 0x80;
		//DQ5 error bit    
		cl_Status2 &= 0x20;	
			
		if(cl_Status1 == cshu)
		{
			cl_Return = 0;
		}
		else if(cl_Status2 != 0)
		{
			cl_Status1 = *prl_Flash2;
			cl_Status1 &= 0x80;
			if(cl_Status1 == cshu)
			{
				cl_Return = 0;
			}
			else
			{
				cl_Return = 0x55;
			}
			
			//reset error
			*prl_Flash2 = 0xf0;
		}
	//判斷是否寫完("cl_Status" flash的狀態寄存器)	
	} while((cl_Status1 != cshu) && (cl_Status2 == 0));

	return(cl_Return);
}
*/
////////////////////////////////////////////////////////////////
//
//
///////////////////////////////////////////////////////////////

void FlashReadGroup(ulong cl_AddrStar,uchar *pcl_DataStar,uchar cl_Len)
{
	uchar i;
	uchar cl_Buffer1;
	uchar far *prl_Flash1;
	uchar far *prl_Flash2;
	
	prl_Flash1 = &rg_Flash1_addr;
	prl_Flash2 = &rg_Flash2_addr;
	
	cl_Buffer1 = P4;
	cl_Buffer1 &= 0x4;
	
	if(cl_Buffer1 != 0)
	{
		 if(cl_AddrStar < 0x1fffff)
		 {
		 	// reset read mode
		    *prl_Flash1 = 0xf0;

			prl_Flash1 += cl_AddrStar;
			for(i = 0;i < cl_Len;i ++)
			{ 
		 		*pcl_DataStar = *prl_Flash1;
				prl_Flash1 ++;
				pcl_DataStar ++;
			}
		 
		 }
		 else
		 {
		 	// reset read mode
		    *prl_Flash2 = 0xf0;

			prl_Flash2 += cl_AddrStar;
			for(i = 0;i < cl_Len;i ++)
			{ 
		 		*pcl_DataStar = *prl_Flash2;
				prl_Flash2 ++;
				pcl_DataStar ++;
			}
		 
		 }
	}	
}

/////////////////////////////////////////////////////////////////////////
//
//
////////////////////////////////////////////////////////////////////////	

uchar FlashProgramGroup(ulong cl_AddrStar,uchar *pcl_DataStar,uchar cl_Len)
{
	uchar i;
	uchar cl_Buffer;
	for(i = 0;i < cl_Len;i ++)
	{
		cl_Buffer =	FlashProgram(cl_AddrStar,*pcl_DataStar);		 
		pcl_DataStar ++;
		cl_AddrStar ++;
		
	}
	
	return (cl_Buffer);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品免费国产一区二区三区四区| 欧美精品 国产精品| 日韩精品一二区| 国产日韩欧美制服另类| 欧美色图第一页| 国产91富婆露脸刺激对白| 日韩精彩视频在线观看| 国产精品久久久久久亚洲毛片| 777亚洲妇女| 97se亚洲国产综合自在线观| 韩国av一区二区三区在线观看| 亚洲综合色噜噜狠狠| 欧美激情一区二区三区四区| 日韩一区二区三区观看| 欧美伊人久久大香线蕉综合69 | 成人精品免费看| 日本最新不卡在线| 亚洲一区二区偷拍精品| 国产精品国产三级国产aⅴ入口| 日韩区在线观看| 欧美日韩综合色| 91影视在线播放| 成人一区二区三区视频在线观看| 久久99精品久久久久久国产越南| 午夜av区久久| 一区二区成人在线| 亚洲欧美日韩国产成人精品影院 | 一区二区三区在线观看动漫 | 性做久久久久久久久| 国产精品女同互慰在线看| 久久蜜桃香蕉精品一区二区三区| 欧美精品777| 欧美午夜片在线看| 91免费看视频| 色香蕉久久蜜桃| 91免费观看在线| 色综合天天在线| 91在线视频观看| 成人h精品动漫一区二区三区| 国产成人av电影| 风流少妇一区二区| 成人午夜激情视频| 成人自拍视频在线| 99国产精品久久久久| 国产精品456| bt7086福利一区国产| 男女激情视频一区| 久久国产精品99精品国产| 蜜臀av一区二区在线免费观看| 视频一区欧美精品| 日韩电影在线免费观看| 蜜芽一区二区三区| 久久99国产精品久久99果冻传媒| 国产一区二区在线观看免费| 国产91精品一区二区麻豆网站 | 国产亚洲成年网址在线观看| 久久久精品免费免费| 国产日产欧产精品推荐色| 国产精品乱码人人做人人爱| 综合婷婷亚洲小说| 一区二区三区在线观看动漫| 日韩专区欧美专区| 极品美女销魂一区二区三区| 成人av在线一区二区| 91黄视频在线观看| 欧美视频日韩视频| 欧美tickle裸体挠脚心vk| 久久综合九色综合欧美就去吻| 欧美国产日韩a欧美在线观看| 国产日韩欧美精品综合| 国产精品不卡在线| 天天综合色天天| 久久99精品国产麻豆不卡| 成人激情午夜影院| 欧美男同性恋视频网站| ww亚洲ww在线观看国产| 日韩理论片在线| 首页国产欧美日韩丝袜| 国产一区二区久久| 日本韩国精品在线| 欧美一区二区免费观在线| 国产亚洲欧美在线| 亚洲一区二区三区四区在线免费观看| 日韩专区一卡二卡| av激情亚洲男人天堂| 欧美一区二区三区精品| 国产精品卡一卡二| 婷婷夜色潮精品综合在线| 国产 欧美在线| 欧美日韩在线三级| 国产精品嫩草影院av蜜臀| 视频在线观看一区二区三区| 国产一区二区在线看| 欧美日韩国产一级| 国产精品乱子久久久久| 美女高潮久久久| 一本久久综合亚洲鲁鲁五月天| 欧美一二三区在线观看| 玉足女爽爽91| 国产激情精品久久久第一区二区| 欧美三级资源在线| 中文字幕不卡三区| 蜜桃一区二区三区在线观看| 一本到一区二区三区| 国产偷国产偷精品高清尤物| 亚洲成人在线观看视频| 99久久精品一区二区| 精品国产乱码久久久久久浪潮| 国内精品国产成人国产三级粉色 | 精品剧情v国产在线观看在线| 亚洲精品一二三区| 国产精品亚洲一区二区三区在线| 欧美精品自拍偷拍动漫精品| 国产精品妹子av| 国产一区91精品张津瑜| 欧美精品少妇一区二区三区| 亚洲日本在线天堂| 成人在线综合网| 久久久三级国产网站| 蜜桃一区二区三区在线观看| 欧美日韩一区二区三区免费看| 亚洲啪啪综合av一区二区三区| 狠狠色丁香久久婷婷综| 欧美一区二区福利视频| 亚洲一区在线观看视频| 91美女视频网站| 欧美国产精品v| 成人一区二区三区在线观看| 26uuu亚洲综合色| 毛片一区二区三区| 6080yy午夜一二三区久久| 亚洲国产一二三| 欧亚一区二区三区| 亚洲欧美日韩在线| 99久免费精品视频在线观看| 中文在线一区二区| 成人一道本在线| 国产精品久久久99| 成人免费毛片片v| 国产欧美1区2区3区| 福利视频网站一区二区三区| 久久精品一区八戒影视| 国产成人在线看| 日本一区二区三区电影| 成人激情电影免费在线观看| 中文字幕在线免费不卡| 成人av在线播放网址| 国产精品少妇自拍| 色婷婷国产精品| 亚洲自拍偷拍网站| 欧美日韩国产免费一区二区| 午夜私人影院久久久久| 欧美人牲a欧美精品| 毛片av一区二区| 久久视频一区二区| 99久久精品国产观看| 一区二区三区蜜桃网| 欧美日韩欧美一区二区| 老司机精品视频线观看86| 久久精品欧美一区二区三区不卡 | 日本美女一区二区三区视频| 欧美一级片在线看| 国产成a人亚洲| 亚洲激情自拍偷拍| 欧美精品在线观看播放| 蜜臀精品久久久久久蜜臀| 精品国产第一区二区三区观看体验| 国产精品911| 亚洲一区二区视频| 欧美一区二区三区日韩视频| 国产一区二区在线观看免费| 最新日韩av在线| 欧美日韩国产片| 国产精品12区| 亚洲最新在线观看| 91精品国产入口在线| 粉嫩一区二区三区性色av| 一区二区在线观看av| 欧美一区二区三区在线| 国产成人精品免费一区二区| 亚洲综合色区另类av| 精品精品国产高清一毛片一天堂| 丰满少妇久久久久久久| 亚洲午夜激情av| 26uuu亚洲综合色欧美| 色视频一区二区| 麻豆成人av在线| 亚洲欧美韩国综合色| 欧美mv日韩mv| 欧美亚洲一区二区在线| 国产精品自拍在线| 亚洲综合视频在线| 日本一区二区三区四区 | 91在线精品一区二区| 日韩va亚洲va欧美va久久| 欧美激情综合在线| 欧美一区日本一区韩国一区| 99久久精品免费精品国产| 麻豆精品视频在线观看视频| 亚洲视频在线一区二区|