📄 programer.h
字号:
#if !defined(AFX_PROGRAMER_H__8BCD0D24_CE0E_4ABA_8F09_79C0798F6DA1__INCLUDED_)
#define AFX_PROGRAMER_H__8BCD0D24_CE0E_4ABA_8F09_79C0798F6DA1__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//////////////////////////////////////////////////////////////////////////////////
#define MC908J3 0
#define MC908J1 1
//////////////////////////////////////////////////////////////////////////////////
class Programer
{
public:
// static const BYTE EraseCode[]; //保存擦除一页(64 byte)FLASH的MCU代码;
// static const BITE ProgramCode[];//保存写入一页(32 4byte)FLASH的MCU代码;
// static const BITE MassErsCode[];//保存擦除整个FLASH的MCU代码;
class MonitorROM *rom;
protected:
// int nMCUType; //MCU类型
WORD wFStartAddress; //FLASH开始地址;
int nFLASHSize; // FLASH大小;
public:
Programer(MonitorROM *lpROM);
void SetMCU(int MCUType);//设置FLASH开始地址,大小;
int PageErase(WORD Address);//擦除一页FLASH;
int PageProgram(WORD Address, BYTE *Data);//写入一页FLASH;
int MassErase( );//整FLASH擦除;
int ProgramFile(HFILE hFile);//写入一个可执行代码文件到FLASH;
};
//////////////////////////////////////////////////////////////////////////////////////
const BYTE EraseCode[] = {0xA6,0xFF, //LDA #$02
0xC7,0xFE,0x09, //STA $FE08 ;the entire FLASH memory is not protected
0xA6,0x02, //LDA #$02
0xC7,0xFE,0x08, //STA $FE08
0x55,0x80, //LDHX $80 ;load erase start address
0xA6,0x40, //LDA #$40
0x5E,0x80, //mov: MOV $80,X+ ;writing any data
0x4A, //DECA
0x26,0xFB, //BNE mov
0xA6,0xA, //LDA #$A
0x4A, //10us DECA
0x26,0xFD, //BNE 10us
0xA6,0xA, //LDA #$A ;set Erase and HVEN bit
0xC7,0xFE,0x08, //STA $FE08
0xA6,0xFF, //LDA #$FF
0x4A, //1ms DECA
0x21,0x0, //BRN
0x21,0x0, //BRN
0x26,0xF9, //BNE 1ms
0xA6,0x8, //LDA #$A ;Clear Erase bit
0xC7,0xFE,0x08, //STA $FE08
0xA6,0x5, //LDA #$5
0x4A, //10us DECA
0x26,0xFD, //BNE 10us
0xA6,0x0, //LDA #$A ;Clear HVEN bit
0xC7,0xFE,0x08, //STA $FE08
0x83 }; //SWI ;return monitor ROM model
const BYTE ProgramCode[] ={0xA6,0xFF, //LDA #$02
0xC7,0xFE,0x09, //STA $FE08 ;the entire FLASH memory is not protected
0xA6,0x01, //LDA #$01
0xC7,0xFE,0x08, //STA $FE08
0x55,0x82, //LDHX $82 ;load program start address
0xA6,0x20, //LDA #$20
0x5E,0x80, //mov: MOV $80,X+ ;writing any data
0x4A, //DECA
0x26,0xFB, //BNE mov
//waiting 10us
0xA6,0xA, //LDA #$A
0x4A, //10us DECA
0x26,0xFD, //BNE 10us
0xA6,0x9, //LDA #$A ;set PGM and HVEN bit
0xC7,0xFE,0x08, //STA $FE08
//waiting 5us
0xA6,0x5, //LDA #$A
0x4A, //5us: DECA
0x26,0xFD, //BNE 5us
//start program,repeat program one byte
0x45,0x0,0x84,//LDHX #$84 ;this data buffer
0x35,0x80,//STHX $80
0x55,0x80, //rep: LDHX $80 ;load data buffer address
0xF6, //LDA ,X
0x5C, //INCX
0x35,0x80,//STHX $80
0x55,0x82, //LDHX $82 ;load program address
0xF7, //STA ,X
0x5C, //INCX
0x35,0x82,//STHX $82
//waiting 30us
0xA6,0x1E, //LDA #$A
0x4A, //30us DECA
0x26,0xFD, //BNE 10us
0xB6,0x81,//LDA $81
0xA1,0xA4,//CMP #$A4
0x25,0xE9,//BLO #rep
0xA6,0x8, //LDA #$02 ;claer PGM bit
0xC7,0xFE,0x08, //STA $FE08
//waiting 5us
0xA6,0x5, //LDA #$A
0x4A, //5us: DECA
0x26,0xFD, //BNE 5us
0xA6,0x0, //LDA #$02 ;claer HVEN bit
0xC7,0xFE,0x08, //STA $FE08
0x83 }; //SWI ;return monitor ROM model
const BYTE MassErsCode[] = {0xA6,0xFF, //LDA #$02
0xC7,0xFE,0x09, //STA $FE08 ;the entire FLASH memory is not protected
0xA6,0x06, //LDA #$02
0xC7,0xFE,0x08, //STA $FE08 ;set ERASE and MASS bit
0x55,0x80, //LDHX $80 ;load erase start address
0xA6,0x40, //LDA #$40
0x5E,0x80, //mov: MOV $80,X+ ;writing any data
0x4A, //DECA
0x26,0xFB, //BNE mov
0xA6,0xA, //LDA #$A
0x4A, //10us DECA
0x26,0xFD, //BNE 10us
0xA6,0x0E, //LDA #$0E
0xC7,0xFE,0x08, //STA $FE08 ;set ERASE and MASS and HVEN bit
//waiting 4ms;
0xAE,0x0, //LDX #$0
0xA6,0xFF, //LDA #$FF
0x4A, //1ms DECA
0x21,0x0, //BRN
0x21,0x0, //BRN
0x26,0xF9, //BNE 1ms
0x5C, //INCX
0xA3,0x4, //CPX #$4
0x25,0xF2, //BLO #rep
0xA6,0x0C, //LDA #$0C
0xC7,0xFE,0x08, //STA $FE08 ;clear ERASE bit
0xA6,0x64, //LDA #$64
0x4A, //10us DECA
0x26,0xFD, //BNE 10us
0xA6,0x04, //LDA #$04
0xC7,0xFE,0x08, //STA $FE08 ;clear HVEN bit
0x83 }; //SWI ;return monitor ROM model
#endif // !defined(AFX_PROGRAMER_H__8BCD0D24_CE0E_4ABA_8F09_79C0798F6DA1__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -