flasheraseprogram.c

来自「一个关于51单片机的双串口转换程序」· C语言 代码 · 共 55 行

C
55
字号
#include "STC12C5410AD.H"

void FlashErase(unsigned int FlashAddress);
unsigned char FlashRead(unsigned int FlashAddress);
void FlashProgram(unsigned int FlashAddress,unsigned char FlashData);
//----------------------------------------------------------------//
//Flash擦除扇区,地址在FlashAddress中-----------------------------//
//----------------------------------------------------------------//
void FlashErase(unsigned int FlashAddress)
{
	ISP_CONTR = 0x83;//系统工作时钟<12M
	ISP_CMD   = 0x03;
	ISP_ADDRH = FlashAddress / 256;
	ISP_ADDRL = FlashAddress % 256;
	ISP_TRIG  = 0x46;
	ISP_TRIG  = 0xB9;
	ISP_CONTR = 0;
	ISP_CMD   = 0;
	ISP_TRIG  = 0;
}
//----------------------------------------------------------------//
//Flash写扇区,地址在FlashAddress,需要写的字节是FlashData--------//
//----------------------------------------------------------------//
void FlashProgram(unsigned int FlashAddress,unsigned char FlashData)
{
	ISP_CONTR = 0x83;//系统工作时钟<12M
	ISP_CMD   = 0x02;
	ISP_ADDRH = FlashAddress / 256;
	ISP_ADDRL = FlashAddress % 256;
	ISP_DATA  = FlashData;
	ISP_TRIG  = 0x46;
	ISP_TRIG  = 0xB9;
	ISP_CONTR = 0;
	ISP_CMD   = 0;
	ISP_TRIG  = 0;
}
//----------------------------------------------------------------//
//Flash读扇区,地址在FlashAddress中-------------------------------//
//----------------------------------------------------------------//
unsigned char FlashRead(unsigned int FlashAddress)
{
	unsigned char FlashData;
	ISP_CONTR = 0x83;//系统工作时钟<12M
	ISP_CMD   = 0x01;
	ISP_ADDRH = FlashAddress / 256;
	ISP_ADDRL = FlashAddress % 256;
	ISP_TRIG  = 0x46;
	ISP_TRIG  = 0xB9;
	FlashData = ISP_DATA;
	ISP_CONTR = 0;
	ISP_CMD   = 0;
	ISP_TRIG  = 0;
	return (FlashData);
}

⌨️ 快捷键说明

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