⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flashwrite.c

📁 Hitech microchip PIC C18 Compiler
💻 C
字号:
#include <pic18.h>void flash_write(far unsigned char * source_addr,unsigned char length,far unsigned char * dest_addr){	/* variable declaration */	unsigned char BUFFER[64];	unsigned char index;	unsigned char offset;	offset=(unsigned char)dest_addr;	while(offset>64)		offset-=64;	dest_addr-=offset;		while(length)	{		// fill the 64 byte data buffer either from ...		for(index=0;index<64;index++)		{			if((index>=offset)&&(length))	// specifed data area or ...			{				BUFFER[index]=*(source_addr++);				length--;			}			else				// otherwise from destination sector.				BUFFER[index]=*(dest_addr+index);		}		FLASH_ERASE(dest_addr);	// now begin to copy the buffer to the destination area#if defined(SMALL_DATA)		TBLPTRU=0;	// if 16 bit code pointers selected, TBLPTRU must be cleared manually#endif		TBLPTR=--dest_addr;	// load the destination address				offset=0;		for(index=0;index<64;index++)		{						TABLAT=BUFFER[index];	// copy the data buffer to the			asm("\tTBLWT+*");	// internal write buffer							if(++offset==8)	// after every 8th byte, the			{			// the write buffer is written to flash.				EEPGD=1;WREN=1;		// this is the required sequence				CARRY=0;if(GIE)CARRY=1;GIE=0;				EECON2=0x55;				EECON2=0xAA;				WR=1;				asm("\tNOP");				if(CARRY)GIE=1;				WREN=0;				offset=0;			}		}		dest_addr+=65;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -