w78e58isp.c

来自「w78e58b isp 源程序,keil v7。10调试通过并应用。」· C语言 代码 · 共 202 行

C
202
字号

//w78e58b
sfr CHPCON	= 0XBF;
sfr CHPENR	= 0XF6;
sfr SFRAL	= 0XC4;
sfr SFRAH	= 0XC5;
sfr SFRFD	= 0XC6;
sfr SFRCN	= 0XC7;

byte ReadAPROM(word addr16)
{
	byte tmp;
	byte val;
	addr16 = addr16;
	CHPENR = 0x87;
	CHPENR = 0x59;
	CHPCON = 0x03;
	SFRCN = 0x00;
	CHPENR = 0;
	TR2 = 0;
	TH2 = (byte)(__1_5us/256);
	TL2 = (byte)(__1_5us%256);
	tmp = IE;
	IE = 0x00;
	ET2 = EA =1;
	TR2 = 1;
	PCON = 0x1;
	
	SFRAH = (byte)(addr16/256);
	SFRAL = (byte)(addr16%256);
	SFRCN = 0x00;
	TR2 = 0;
	TH2 = (byte)(__50us/256);
	TL2 = (byte)(__50us%256);
	IE = 0x00;
	ET2 = EA =1;
	TR2 = 1;
	
	PCON = 0x1;
	val = SFRFD;
	IE = tmp;
	return val;
}
//
void WriteAPROM(word addr16,byte data8)
{
	byte tmp;
	addr16 = addr16+0x8000;
	CHPENR = 0x87;
	CHPENR = 0x59;
	CHPCON = 0x03;
	SFRCN = 0x00;
	CHPENR = 0;
	TR2 = 0;
	TH2 = (byte)(__1_5us/256);
	TL2 = (byte)(__1_5us%256);
	tmp = IE;
	IE = 0x00;
	ET2 = EA =1;
	TR2 = 1;
	PCON = 0x1;
	
	SFRAH = (byte)(addr16/256);
	SFRAL = (byte)(addr16%256);
	SFRFD = data8;
	SFRCN = 0x21;
	TR2 = 0;
	TH2 = (byte)(__50us/256);
	TL2 = (byte)(__50us%256);
	IE = 0x00;
	ET2 = EA =1;
	TR2 = 1;
	PCON = 0x1;
	IE = tmp;
}
//
void EraseAPROM()
{
	byte tmp;
	CHPENR = 0x87;
	CHPENR = 0x59;
	CHPCON = 0x03;
	SFRCN = 0x22;
	CHPENR = 0;
	TR2 = 0;
	TH2 = (byte)(__1_5us/256);
	TL2 = (byte)(__1_5us%256);
	tmp = IE;
	IE = 0x00;
	ET2 = EA =1;
	TR2 = 1;
	
	PCON = 0x1;
	
	SFRCN = 0x22;
	TR2 = 0;
	TH2 = (byte)(__15ms/256);
	TL2 = (byte)(__15ms%256);
	IE = 0x00;
	ET2 = EA =1;
	TR2 = 1;
	
	PCON = 0x1;
	IE = tmp;
}
//
byte ReadLDROM(word addr16)
{
	byte tmp;
	byte val;
	addr16 = addr16+0x8000;
	CHPENR = 0x87;
	CHPENR = 0x59;
	CHPCON = 0x1;
	SFRCN = 0x40;
	CHPENR = 0;
	TR2 = 0;
	TH2 = (byte)(__1_5us/256);
	TL2 = (byte)(__1_5us%256);
	tmp = IE;
	IE = 0x00;
	ET2 = EA =1;
	TR2 = 1;
	PCON = 0x1;
	
	SFRAH = (byte)(addr16/256);
	SFRAL = (byte)(addr16%256);
	SFRCN = 0x40;
	TR2 = 0;
	TH2 = (byte)(__50us/256);
	TL2 = (byte)(__50us%256);
	IE = 0x00;
	ET2 = EA =1;
	TR2 = 1;
	
	PCON = 0x1;
	val = SFRFD;
	IE = tmp;
	return val;
}
//
void WriteLDROM(word addr16,byte data8)
{
	byte tmp;
	addr16 = addr16+0x8000;
	CHPENR = 0x87;
	CHPENR = 0x59;
	CHPCON = 0x1;
	SFRCN = 0x40;
	CHPENR = 0;
	TR2 = 0;
	TH2 = (byte)(__1_5us/256);
	TL2 = (byte)(__1_5us%256);
	tmp = IE;
	IE = 0x00;
	ET2 = EA =1;
	TR2 = 1;
	PCON = 0x1;
	
	SFRAH = (byte)(addr16/256);
	SFRAL = (byte)(addr16%256);
	SFRFD = data8;
	SFRCN = 0x61;
	TR2 = 0;
	TH2 = (byte)(__50us/256);
	TL2 = (byte)(__50us%256);
	IE = 0x00;
	ET2 = EA =1;
	TR2 = 1;
	PCON = 0x1;
	IE = tmp;
}
//
void EraseLDROM()
{
	byte tmp;
	CHPENR = 0x87;
	CHPENR = 0x59;
	CHPCON = 0x1;
	SFRCN = 0x62;
	CHPENR = 0;
	TR2 = 0;
	TH2 = (byte)(__1_5us/256);
	TL2 = (byte)(__1_5us%256);
	tmp = IE;
	IE = 0x00;
	ET2 = EA =1;
	TR2 = 1;
	
	PCON = 0x1;
	
	SFRCN = 0x62;
	TR2 = 0;
	TH2 = (byte)(__15ms/256);
	TL2 = (byte)(__15ms%256);
	IE = 0x00;
	ET2 = EA =1;
	TR2 = 1;
	
	PCON = 0x1;
	IE = tmp;
}

⌨️ 快捷键说明

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