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

📄 writeflash.c

📁 motorola jw32 usb 源码
💻 C
字号:


// #define   _debug
#ifdef _debug
		#define FBUS 10                  //总线速度4M
#else
 #define FBUS 32                 //总线速度32M
#endif
#define ERARNGE() {__asm jsr $FE13;} //跳到0x2806执行//gw32 0xFe13
#define PGRRNGE() {__asm jsr $FE10;} //跳到0x2809执行  gw32 0xFE10
#define LDRNGE()  {__asm jsr $FA31;} //跳到0x2809执行  gw32 0xFA31

//RAM buffer define areac

const word   Ram_Blcok = (word)Ram_Key;
#define  Bus_Speed      		Ram_Key[0]
#define  RamDataSize    		Ram_Key[1]
#define  ADD_RH      				Ram_Key[2]
#define  ADD_RL         		Ram_Key[3]


void ErasePage(byte const *Address,byte *ebuffer) //FLASH擦除函数
{
word eaddress;
byte highaddr;
	ebuffer[0] = FBUS;
 eaddress =(word)Address;
 highaddr =     eaddress>>8;
 ebuffer[2] =highaddr;
ebuffer[3] =(byte) eaddress;
//FLCR = 0x0a;  //control erase.open
 __asm ldhx ebuffer;      //将要擦除的地址装入H,X寄存器
 ERARNGE();                //调用擦除函数
// FLCR = 0x00;  //control erase.close

}
//---------------------------------------------------------------------
void WriteFlash(byte const *address,byte  number,byte *inbuffer,byte writeflag)        //FLASH编程函数
{
word romaddress;
BYTE bhigh;
DisableInterrupts;
FLBPR = 0x8C;
//-----------------------

if(writeflag==NORMAL_WRITE)
{
	ErasePage(address,inbuffer);//first errase flash
}
delayms(1);
romaddress = (word)address;
//wrietflag:
//----------------------------
inbuffer[1] = number;
inbuffer[0] = FBUS;
bhigh = romaddress>>8;
inbuffer[2] = bhigh;
inbuffer[3] = (byte)romaddress;
//FLCR = 0x09;  //control erase.open
__asm ldhx inbuffer;         //将要编程的地址装入H,X寄存器
PGRRNGE();                 //调用编程函数
//FLCR = 0x00;
FLBPR = 0x00;
 EnableInterrupts;
}
//load rom data to outbuffer
void ReadFlash(byte const *address,byte length,byte *outbuffer)
{
	word romaddress;
	byte bhigh;
	outbuffer[0] = FBUS;
	outbuffer[1]  =  length;
	romaddress = (word)address;
	bhigh = romaddress>>8;
	outbuffer[2] = bhigh;
	outbuffer[3] = (byte)romaddress;
//	__asm ldhx Ram_Blcok;         //将要编程的地址装入H,X寄存器
__asm ldhx outbuffer;
	LDRNGE();               //调用编程函
}

⌨️ 快捷键说明

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