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

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

?? flash.c

?? 本程序是一個RS232轉網口的。是一個透明傳輸的模塊
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
*****************************************************************************************************
*
*  File name: flash.c
*****************************************************************************************************
*/

#include "..\head\includes.h"



/*
*****************************************************************************************************
* 
*****************************************************************************************************
*/
#ifdef _F_W_W_P

unsigned char flash_write_with_poll(volatile uchar xdata* addr, uchar dat)
{
	unsigned char done;
	unsigned char error;
	unsigned char err;
	unsigned char poll;

	done = FALSE;
   	err = FALSE;
	
	*(FLASH_COMMON_X555) = 0xAA;     // unlock main flash, write 0xAA to addess 0xX555
	*(FLASH_COMMON_XAAA) = 0x55;     // unlock main flash, write 0x55 to addess 0xXAAA
	*(FLASH_COMMON_X555) = 0xA0;     // write 0xA0 command to program

	*(addr) = dat;                   // write byte to flash   
	
	dat = dat & NVM_DATA_POLL;       // get bit DQ7 of original dat   
	
	do                               // now use dat polling method to verify successful write
    {  

   		poll = *(addr);               // Read the location that was just programmed

		error = poll & NVM_ERROR;     // save timeout error bit at DQ5

		poll = poll & NVM_DATA_POLL;  // get DQ7 of poll byte read from flash  

		if (dat == poll)              // compare DQ7 

			done = TRUE;              // dat byte programmed into flash OK,
                                         // indicate successful exit criteria

		else if (error ==  NVM_ERROR )	 // check for timeout error   
			err = TRUE;                  // indicate timeout error occurred

    } while((done == FALSE) && (err == FALSE)); 


	if (err == TRUE)                     // make sure timeout error and dat poll didn't 
                                         // occur simultaneously
	{
		poll = *(addr);                  // Read location in flash again

		poll = poll & NVM_DATA_POLL;     // get DQ7 of poll byte read from flash  

		if (dat == poll)                 // compare DQ7 

			done = TRUE;                 // dat byte programmed into flash OK at the same
                                         // time timout error occured, indicate successful 
		                                 // exit criteria

		*(FLASH_COMMON_X555) = 0xF0;     // reset the flash array (short reset instruction) 
		                                 // now delay 3 msec per dat sheet
    }

   	return(done);                        // a successful flash write returns 1, timeout error returns 0
}
#endif


/*
*****************************************************************************************************
* 
*****************************************************************************************************
*/
#ifdef _F_B_W_W_P

unsigned char flash_boot_write_with_poll(volatile unsigned char xdata* addr, unsigned char dat)
{
	unsigned char done;
	unsigned char error;
	unsigned char err;
	unsigned char poll;

	done = FALSE;
   	err = FALSE;
	
	*(FLASH_BOOT_X555) = 0xAA;     // unlock main flash, write 0xAA to addess 0xX555
	*(FLASH_BOOT_XAAA) = 0x55;     // unlock main flash, write 0x55 to addess 0xXAAA
	*(FLASH_BOOT_X555) = 0xA0;     // write 0xA0 command to program

	*(addr) = dat;                   // write byte to flash   
	
	dat = dat & NVM_DATA_POLL;       // get bit DQ7 of original dat   
	
	do                               // now use dat polling method to verify successful write
    {  

   		poll = *(addr);              // Read the location that was just programmed

		error = poll & NVM_ERROR;    // save timeout error bit at DQ5

		poll = poll & NVM_DATA_POLL;  // get DQ7 of poll byte read from flash  

		if (dat == poll)              // compare DQ7 

			done = TRUE;              // dat byte programmed into flash OK,
                                         // indicate successful exit criteria

		else if (error ==  NVM_ERROR )	 // check for timeout error   
			err = TRUE;                  // indicate timeout error occurred

    } while((done == FALSE) && (err == FALSE)); 


	if (err == TRUE)                     // make sure timeout error and dat poll didn't 
                                         // occur simultaneously
	{
		poll = *(addr);                  // Read location in flash again

		poll = poll & NVM_DATA_POLL;     // get DQ7 of poll byte read from flash  

		if (dat == poll)        // compare DQ7 

			done = TRUE;        // dat byte programmed into flash OK at the same
                                // time timout error occured, indicate successful 
		                        // exit criteria

		*(FLASH_BOOT_X555) = 0xF0;  // reset the flash array (short reset instruction) 
		                            // now delay 3 msec per dat sheet
    }

   	return(done);                   // a successful flash write returns 1, timeout error returns 0
}
#endif


/*
*****************************************************************************************************
* 
*****************************************************************************************************
*/
#ifdef _F_W_W_T

unsigned char flash_write_with_toggle(addr,dat)	
volatile unsigned char *addr;
unsigned char dat;

	{
	unsigned char done;
	unsigned char error;
	unsigned char err;
	volatile unsigned char toggle_A;
	volatile unsigned char toggle_B;

	done = FALSE;
   	err = FALSE;

	*(FLASH_BOOT_X555) = 0xAA;		// unlock main flash, write 0xAA to addess 0xX555
	*(FLASH_BOOT_XAAA) = 0x55;		// unlock main flash, write 0x55 to addess 0xXAAA
	*(FLASH_BOOT_X555) = 0xA0;		// write 0xA0 command to program

	*(addr) = dat;		// write byte to flash   

		// now use toggling method to verify successful write

	toggle_A = *(addr);			// Read the location that was just programmed

	toggle_A = toggle_A & NVM_DATA_TOGGLE;	// mask toggle bit at DQ6
   		  								
	do
		{  
   		toggle_B = *(addr);		// Again read the location that was just programmed

		error = toggle_B & NVM_ERROR;	// save timeout error flag at DQ5

		toggle_B = toggle_B & NVM_DATA_TOGGLE;	// mask toggle bit at DQ6
   		  								
		if (toggle_A == toggle_B)	// compare toggle bit DQ6

			done = TRUE;		// bit did not toggle, dat byte programmed into 
						// flash OK, indicate successful exit criteria
		else
			{
	 		 if (error ==  NVM_ERROR )	// check for timeout error   
				err = TRUE; 	// indicate timeout error occurred

			toggle_A = toggle_B;  	// save most recent sample of toggle bit 
						// to compare with next sample
			}

		} while((done == FALSE) && (err == FALSE)); 


	if (err == TRUE)			// make sure timeout error and dat toggle didn't 
						// occur simultaneously
		{
		toggle_B = *(addr);		// Read location in flash again

		toggle_B = toggle_B & NVM_DATA_TOGGLE;	// mask toggle bit at DQ6

		if (toggle_A == toggle_B)		// compare toggle bit DQ6

			done = TRUE;			// dat byte programmed into flash OK at the same
							// time timout error occured, indicate successful 
							// exit criteria

		*(FLASH_BOOT_X555) = 0xF0;  // reset the flash array (short reset instruction) 
		        // now delay 3 msec per dat sheet
		}

   	return(done);		// a successful flash write returns 1, timeout error returns 0
	}

#endif



/*
*****************************************************************************************************
* 
*****************************************************************************************************
*/

#ifdef _F_E_B

unsigned char flash_erase_sector(
    volatile unsigned char xdata* flash_bulk_erase_address)
{
	unsigned char done;
 	unsigned char poll;
 	unsigned char error;
 	unsigned char err;

	done = FALSE;
   	err = FALSE;

	//  Note:  the following constants (FLASH_COMMON_XXXX)
	//     are declared type volatile in the header file 
	//	   so they are not optimized away by the compiler

	*(FLASH_COMMON_X555) = 0xAA;		// unlock main flash, write 0xAA to addess 0xX555
	*(FLASH_COMMON_XAAA) = 0x55;		// unlock main flash, write 0x55 to addess 0xXAAA

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱码精品一区二区三区忘忧草 | 国产成人免费视频一区| 91精品久久久久久久99蜜桃| 亚洲一线二线三线久久久| 91麻豆免费视频| 综合久久国产九一剧情麻豆| av高清不卡在线| 亚洲人成精品久久久久久| 一本一道久久a久久精品| 一片黄亚洲嫩模| 欧美日韩国产成人在线免费| 五月天激情综合网| 蜜臀av性久久久久蜜臀aⅴ流畅 | 91年精品国产| 中文字幕人成不卡一区| 91久久一区二区| 亚洲免费av高清| 91伊人久久大香线蕉| 国产精品麻豆一区二区| 99精品在线免费| 综合欧美一区二区三区| 91丨porny丨户外露出| 亚洲品质自拍视频| 懂色av一区二区三区蜜臀| 国产免费久久精品| 91视视频在线观看入口直接观看www| 国产精品素人视频| 欧美在线观看禁18| 奇米色777欧美一区二区| 精品国产精品网麻豆系列| 国产成人无遮挡在线视频| 亚洲色图色小说| 欧美日韩国产大片| 亚洲品质自拍视频网站| a4yy欧美一区二区三区| 亚洲精品成人悠悠色影视| 欧美日韩一级黄| 日韩国产精品久久久久久亚洲| 国产精品久久久久婷婷二区次 | 国产一本一道久久香蕉| 国产精品伦一区| 欧美日韩视频在线观看一区二区三区 | 555www色欧美视频| 精品综合免费视频观看| 日本一区二区三区国色天香| 色琪琪一区二区三区亚洲区| 一区二区三区四区高清精品免费观看| 欧美一区二区三区色| 国产一区二区中文字幕| 一区二区三区免费| 欧美大白屁股肥臀xxxxxx| 成人在线视频首页| 日韩高清不卡一区二区三区| 国产日韩精品视频一区| 欧美自拍偷拍午夜视频| 免费高清在线一区| 国产日本欧美一区二区| 欧美综合视频在线观看| 国产精品自拍三区| 日韩中文字幕亚洲一区二区va在线 | 国产精品女同互慰在线看| 欧美人xxxx| 色猫猫国产区一区二在线视频| 蜜桃av一区二区| 亚洲福利一二三区| 最新日韩av在线| 欧美系列一区二区| 91在线精品一区二区| 蓝色福利精品导航| 亚洲一区二区在线免费观看视频| 午夜欧美大尺度福利影院在线看| 亚洲欧洲精品一区二区三区不卡| 欧美一级片免费看| 99久久国产综合色|国产精品| 国产乱一区二区| 午夜激情综合网| 亚洲福利一区二区| 欧美激情资源网| 久久在线观看免费| 欧美一区二区三区播放老司机| 国产伦理精品不卡| 毛片基地黄久久久久久天堂| 亚洲精品美国一| 国产精品不卡视频| 欧美精品久久一区二区三区| 99久久99久久精品免费看蜜桃| 久久精品av麻豆的观看方式| 日韩av一级片| 日韩黄色一级片| 麻豆国产精品视频| 亚洲v中文字幕| 奇米精品一区二区三区在线观看 | 亚洲精品菠萝久久久久久久| 日本一区二区三区高清不卡| 国产精品美女久久久久高潮| 久久久久一区二区三区四区| 粉嫩av一区二区三区粉嫩| 国产成人av网站| 国产成都精品91一区二区三| 国产一区在线观看麻豆| 免费成人小视频| 另类调教123区| 久久先锋影音av| 久久久久久久综合| 久久人人97超碰com| 国产三级欧美三级日产三级99| 国产欧美一区二区在线| 国产精品网站在线观看| 国产精品婷婷午夜在线观看| 成人免费一区二区三区视频| 亚洲婷婷在线视频| 中文av一区二区| 日韩一区欧美一区| 中文字幕一区二区三区四区不卡| 国产精品短视频| 亚洲国产欧美在线| 香蕉成人啪国产精品视频综合网| 亚洲日本免费电影| 亚洲欧美另类图片小说| 亚洲一区二区三区四区在线| 日本在线不卡视频| 蜜桃视频在线一区| 国产成人鲁色资源国产91色综| 成人av资源在线| 欧美日韩一区二区三区在线| 欧美日韩中文另类| 91精品综合久久久久久| 欧美一区二区三区四区五区| 精品国产乱码久久久久久久| 亚洲精品久久久久久国产精华液| 国产欧美一区二区精品性色 | 亚洲一二三级电影| 国产在线一区二区综合免费视频| 久久se这里有精品| 色综合天天综合网天天狠天天 | 欧美日韩卡一卡二| 欧美又粗又大又爽| 日韩欧美中文一区二区| 国产三级欧美三级| 婷婷成人激情在线网| 国产精品一卡二| 99re热这里只有精品免费视频| 欧美四级电影网| 国产亚洲污的网站| 一区二区三区在线播| 国产精品自在在线| 欧美嫩在线观看| 中文字幕五月欧美| 黑人巨大精品欧美黑白配亚洲| 99re成人在线| 欧美第一区第二区| 亚洲美女免费在线| 成人污污视频在线观看| 欧美视频第二页| 国产精品免费观看视频| 亚洲天堂网中文字| 国产精品综合久久| 欧美一级日韩不卡播放免费| 一个色妞综合视频在线观看| 国产精品一二三| 制服.丝袜.亚洲.中文.综合| 亚洲三级小视频| 国产又粗又猛又爽又黄91精品| aaa国产一区| 99久久精品免费看国产免费软件| 亚洲一区免费视频| 日韩不卡手机在线v区| 在线观看欧美黄色| 国产欧美视频在线观看| 午夜视频在线观看一区二区| 9人人澡人人爽人人精品| 欧美男生操女生| 亚洲一区二区三区视频在线 | 久久精品av麻豆的观看方式| 欧美视频一区二区三区四区| 综合电影一区二区三区| 日韩精品一区二区三区老鸭窝| 亚洲福利一区二区三区| 国产成人av电影在线| 精品久久国产97色综合| 亚洲一区二区视频| 色婷婷精品久久二区二区蜜臂av | 九九在线精品视频| 51久久夜色精品国产麻豆| 亚洲图片一区二区| 一本到不卡精品视频在线观看| 亚洲国产激情av| 国产一区二区三区精品视频| 7777精品伊人久久久大香线蕉完整版 | 欧美日韩成人一区| 亚洲国产综合91精品麻豆| 国产麻豆欧美日韩一区| 国产美女在线观看一区| 欧美一区二区三区小说| 日本中文字幕一区二区有限公司| 3d成人h动漫网站入口| 亚洲图片欧美视频| 欧美高清精品3d| 99久久综合99久久综合网站| 亚洲欧洲日产国产综合网|