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

📄 programer.h

📁 MC6808系列单片机程序下载软件底层,加界面可以使用
💻 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 + -