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

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

?? upsd_flash.c

?? 適合初學者學習的UPSD的點陣LCD漢字顯示
?? C
?? 第 1 頁 / 共 2 頁
字號:
   function. 
   Note: The address that is passed in this function can be an address that 
         resides in any Flash segment that has a chip select. For example, if 
         fs0 and fs5 are used in the design, passing an address in this function
         that resides in either fs0 or fs5 will invoke the bulk erase operation. */

/*
unsigned char flash_erase_bulk(
    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
	*(FLASH_COMMON_X555) = 0x80;		// write 0x80 command to erase entire chip
	*(FLASH_COMMON_X555) = 0xAA;        	// continue unlock sequence
	*(FLASH_COMMON_XAAA) = 0x55;		// continue unlock sequence
	*(FLASH_COMMON_X555) = 0x10;		// write 0x10 command to complete erase command

	do		  			// now use dat polling method to verify successful erase
    {  
		poll = *(flash_bulk_erase_address); 	// read flash status from any address
		                                // within the defined flash address space

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

		poll = poll & NVM_DATA_POLL;	// look at D7   

		if (poll == NVM_DATA_POLL)	// compare DQ7 

			done = TRUE;		// bulk erase 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 = *(flash_bulk_erase_address); 	// Read flash status again

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

		if (poll == NVM_DATA_POLL)	// compare DQ7 

			done = TRUE;		// the flash erased 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 erase returns 1, timeout error returns 0

}*/
/*
unsigned char flash_boot_erase_bulk(
    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_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) = 0x80;		// write 0x80 command to erase entire chip
	*(FLASH_BOOT_X555) = 0xAA;        	// continue unlock sequence
	*(FLASH_BOOT_XAAA) = 0x55;		// continue unlock sequence
	*(FLASH_BOOT_X555) = 0x10;		// write 0x10 command to complete erase command

	do		  			// now use dat polling method to verify successful erase
         {  
         	poll = *(flash_bulk_erase_address); 	// read flash status from any address
		                                // within the defined flash address space
		
		error = poll & NVM_ERROR;	// save timeout error bit at DQ5

		poll = poll & NVM_DATA_POLL;	// look at D7   

		if (poll == NVM_DATA_POLL)	// compare DQ7 

			done = TRUE;		// bulk erase 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 = *(flash_bulk_erase_address); 	// Read flash status again

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

		if (poll == NVM_DATA_POLL)	// compare DQ7 

			done = TRUE;		// the flash erased 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 erase returns 1, timeout error returns 0

}
*/


/*Module: flash_reset
  Resets the main Flash memory to Read Array mode.
  After this reset, the Flash memory may be read like a ROM device. 
  You'll need to include the header files generated by PSDsoft
  Express. */
/*
void flash_reset()	// reset flash, read array mode

{

	//  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
	*(FLASH_COMMON_X555) = 0xF0;		// write 0xF0 command to reset 
						// Flash memory to Read Array Mode
                      // now delay 3 msec per dat sheet
}*/



/* Module: flash_read_id
   Reads the Flash Identifier byte from main Flash memory. You'll need 
   to include the header files generated by PSDsoft Express.
   Important: The address passed to this function should be independent 
   of memory paging or else the PSD page register value should be set to 
   the correct page prior to calling this function.

   Note: The flash memory in the boot area of a PSD813F2 or PSD813F4 does 
   not provide an ID. Only the main Flash memory in all PSD813FX provides 
   an ID. */


/*
unsigned char flash_read_id(flash_id_address)	// read flash identifier
volatile unsigned char *flash_id_address;  

{
	unsigned char id;

	//  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
	*(FLASH_COMMON_X555) = 0x90;		// write 0x90 command to get ID

	id = *(flash_id_address);		// read flash status, address bit A6 = 0
						//				  A1 = 0
						//				  A0 = 1
	*(FLASH_COMMON_X555) = 0xF0;  // reset the flash array (short reset instruction) 
		        // now delay 3 msec per dat sheet

	return (id);				// return byte ID value
}
*/



/* Module: flash_erase_sector
   Erases the specified sector in main Flash memory.
   Need to include mapflash.h. Important: The address passed to this function 
   should be independent of memory paging or else the PSD page register should 
   be set to the correct page prior to calling this function. */


unsigned char flash_erase_sector(
     volatile unsigned char xdata * sector_erase_address)

{
	char done;

 	unsigned char poll;
 	unsigned char error;
	unsigned char err;
 
	done = 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) = 0x80;			// write 0x80 command 
	*(FLASH_COMMON_X555) = 0xAA;			// continue unlock sequence
	*(FLASH_COMMON_XAAA) = 0x55;			// continue unlock sequence
	*(sector_erase_address) = 0x30;		// write 0x30 command to indicate sector erase command


	do			// now use data polling method to verify successful erase
		{  
		poll = *(sector_erase_address); 	// read flash status from any address
		                                	// within the  flash address sector space
   		  								
		error = poll & NVM_ERROR;	    	// save timeout error bit at DQ5
                
		poll = poll & NVM_DATA_POLL;		// look at D7   
		
		if (poll == NVM_DATA_POLL)			// compare DQ7 

			done = TRUE;					// erase OK,
											// indicate successful exit criteria

		else if (error == NVM_ERROR)		// check for timeout error   

			err = TRUE;						// indicate timeout error occurred

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


	if (err == TRUE)				// make sure timeout error and data poll didn't 
									// occur simultaneously
		{
		poll = *(sector_erase_address); 	// Read flash status again

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

		if (poll == NVM_DATA_POLL)			// compare DQ7 

			done = TRUE;					// the flash erased OK at the same
											// time timout error occured, indicate successful 

			*(FLASH_COMMON_X555) = 0xF0;  		// reset the flash array (short reset instruction) 

		}									// exit criteria

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


 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人一区二区三区在线观看| 精品国产一区二区三区久久影院| 亚洲天堂成人在线观看| 欧美一区二区三区免费大片| 国产精品妹子av| 欧美成人精品高清在线播放| 777午夜精品视频在线播放| 欧日韩精品视频| 国产麻豆精品视频| 午夜在线电影亚洲一区| 久久影院午夜论| 免费成人小视频| 国产精品福利一区二区三区| 国产精品激情偷乱一区二区∴| 欧美影院午夜播放| 欧美变态凌虐bdsm| 欧美一级一区二区| 精品国产精品网麻豆系列| 日韩一区二区三区观看| 91精品国产综合久久精品| 欧美成人性战久久| 久久无码av三级| 色婷婷久久一区二区三区麻豆| 91麻豆福利精品推荐| 91社区在线播放| 欧美视频日韩视频在线观看| 欧美女孩性生活视频| 久久九九99视频| 亚洲综合在线电影| 韩国欧美国产一区| 91啪在线观看| 精品国产1区二区| 一区二区三区四区高清精品免费观看 | 99热精品一区二区| 91精品国产综合久久精品图片| 欧美大片在线观看| 亚洲人成7777| 蜜桃一区二区三区四区| 久久国产欧美日韩精品| 成人av网址在线观看| 3d成人h动漫网站入口| 国产精品久久久久久户外露出 | 国产精品一区二区视频| 972aa.com艺术欧美| 精品国产乱码久久久久久夜甘婷婷| 欧美国产精品v| 日韩黄色片在线观看| 国产一区二区三区久久久| 日本精品一区二区三区高清 | 色菇凉天天综合网| 精品国产第一区二区三区观看体验| 久久免费偷拍视频| 蜜桃av一区二区| 26uuu精品一区二区在线观看| 亚洲精品伦理在线| 国产电影精品久久禁18| 欧美一区二区三区人| 亚洲精品v日韩精品| 国产99久久精品| 久久亚洲精精品中文字幕早川悠里 | 视频一区二区国产| 99久久亚洲一区二区三区青草| 色综合久久久久综合99| 国产色产综合产在线视频| 麻豆国产91在线播放| 国产亚洲欧美在线| 国产一区在线观看麻豆| 国产精品成人免费在线| 婷婷综合五月天| 国产欧美日韩在线看| 欧美性一级生活| 国产凹凸在线观看一区二区| 日韩成人免费在线| 亚洲永久精品国产| 国产精品丝袜在线| 日韩免费高清视频| 欧美欧美欧美欧美| 欧美在线啊v一区| 国产suv精品一区二区三区| 全国精品久久少妇| 亚洲自拍偷拍图区| 国产精品欧美一级免费| 欧美一区二区黄色| 亚洲国产精品成人久久综合一区| 欧美日韩五月天| av午夜一区麻豆| 高清beeg欧美| 国产91丝袜在线18| 老司机精品视频导航| 亚洲国产精品久久一线不卡| 日韩一区欧美小说| 国产精品视频你懂的| 久久一区二区视频| 日韩精品一区二区三区老鸭窝| 欧美日韩视频在线第一区| 在线精品国精品国产尤物884a| 久久精品国产亚洲aⅴ| 午夜激情综合网| 美女一区二区三区在线观看| 久久成人免费网| 图片区小说区区亚洲影院| 香蕉久久夜色精品国产使用方法| 夜夜夜精品看看| 国产精品网站在线观看| 久久精子c满五个校花| 久久综合网色—综合色88| 26uuu另类欧美亚洲曰本| 亚洲欧洲国产日韩| 亚洲成人综合在线| 国产一区欧美日韩| 成人福利电影精品一区二区在线观看| 91啪九色porn原创视频在线观看| 一本在线高清不卡dvd| 欧美精品777| 国产精品女上位| 亚洲一区二区欧美日韩| 国产一区二区免费看| 欧美亚洲国产一区在线观看网站| 欧美一区二区三区免费大片 | 亚洲精品五月天| 久99久精品视频免费观看| 99久久精品国产一区二区三区| 欧美一区二区三区小说| 欧美国产精品一区| 免费观看一级欧美片| 91在线观看美女| 久久精品网站免费观看| 日本不卡中文字幕| 色天天综合久久久久综合片| 精品国产sm最大网站免费看| 亚洲狠狠爱一区二区三区| 国产精品一级二级三级| 欧美一区二区三级| 性做久久久久久| 9色porny自拍视频一区二区| 精品欧美乱码久久久久久| 亚洲成人自拍网| 色视频一区二区| 亚洲色图丝袜美腿| www.激情成人| 国产精品乱码一区二三区小蝌蚪| 另类人妖一区二区av| 欧美一区二区三区公司| 蜜桃一区二区三区在线观看| 欧美美女bb生活片| 亚洲成人动漫一区| 欧美日韩一区成人| 蜜臀av国产精品久久久久 | 国产中文一区二区三区| 日韩免费观看2025年上映的电影| 日本网站在线观看一区二区三区 | 久久久夜色精品亚洲| 国产91富婆露脸刺激对白| 2022国产精品视频| 国产高清久久久久| 日本一区二区视频在线| 成人午夜伦理影院| 亚洲免费成人av| 91精品国产麻豆| 国产在线精品一区二区夜色| 久久精品免费在线观看| 成人网在线免费视频| 亚洲欧洲日韩一区二区三区| 91免费视频观看| 日韩精品福利网| 久久夜色精品一区| 欧美性色aⅴ视频一区日韩精品| 香蕉久久一区二区不卡无毒影院 | 亚洲免费在线电影| 欧美一级高清片| 99v久久综合狠狠综合久久| 一区二区三区四区在线播放| 91精品国产黑色紧身裤美女| 国产一区二区三区四区五区美女| 精品久久久久香蕉网| 国产精品综合久久| 亚洲视频网在线直播| 日韩欧美卡一卡二| 91蝌蚪porny九色| 日本伊人午夜精品| 亚洲乱码国产乱码精品精的特点 | 国产精品第一页第二页第三页| 欧美日韩一区二区三区四区| 成人app在线观看| 久久成人免费网| 日韩精品久久久久久| 亚洲日本va午夜在线电影| 国产日韩精品视频一区| 精品国产一二三区| 日韩一卡二卡三卡四卡| 欧美疯狂做受xxxx富婆| 色丁香久综合在线久综合在线观看| 国产成人在线免费观看| 激情综合五月婷婷| 日韩电影在线免费| 三级成人在线视频| 亚洲电影欧美电影有声小说| 尤物在线观看一区| 一区二区成人在线观看| 一区二区三区在线观看网站|