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

📄 stcisp.c

📁 用KEILC 编的充电器程序。自动调节充电电压。需要电路资料与我联系
💻 C
字号:
#include <stcad.c>

// 打开 ISP,IAP 功能 //
void ISP_IAP_enable(void)
{
	EA	=	0;	// 关中断 //
	ISP_CONTR	=	ISP_CONTR & 0x18;       // 0001,1000 //
	ISP_CONTR	=	ISP_CONTR | WAIT_TIME;
	ISP_CONTR	=	ISP_CONTR | 0x80;       // 1000,0000 //
}

// 关闭 ISP,IAP 功能 //
void ISP_IAP_disable(void)
{
	ISP_CONTR	=	ISP_CONTR & 0x7f;	// 0111,1111 //
	ISP_TRIG	=	0x00;
	EA			=   1;                // 开中断 //
}

// 字节读 //
uchar byte_read(uint byte_addr)
{
	ISP_ADDRH	=	(uchar)(byte_addr >> 8);
	ISP_ADDRL	=	(uchar)(byte_addr & 0x00ff);

	ISP_CMD		=	ISP_CMD	&	0xf8;        // 1111,1000 //
	ISP_CMD		=	ISP_CMD	|	READ_AP_and_Data_Memory_Command;        // 0000,0001 //

	ISP_IAP_enable();

	ISP_TRIG	=	0x46;
	ISP_TRIG	=	0xb9;
	_nop_();

	ISP_IAP_disable();
	return (ISP_DATA);
}

// 扇区擦除 //
sector_erase (uint sector_addr)
{
	uint get_sector_addr	=	0;
	get_sector_addr			=(sector_addr & 0x2e00); // 0010,1110,0000,0000; 取扇区地址 //
	ISP_ADDRH        		=	(uchar)(get_sector_addr >> 8);
	ISP_ADDRL		        =	0x00;

	ISP_CMD	=	ISP_CMD	&	0xf8;	// 1111,1000 //
	ISP_CMD	=	ISP_CMD	|	SECTOR_ERASE_AP_and_Data_Memory_Command;	// 0000,0011 //

	ISP_IAP_enable();
	ISP_TRIG	=	0x46;        // 触发ISP_IAP命令 //
	ISP_TRIG	=	0xb9;        // 触发ISP_IAP命令 //
	 _nop_();

	ISP_IAP_disable();
	return OK;
}

// 字节编程 //
uchar byte_program(uint byte_addr, uchar original_data)
{
	ISP_ADDRH	=	(uchar)(byte_addr >> 8);
	ISP_ADDRL	=	(uchar)(byte_addr & 0x00ff);

	ISP_CMD		=	ISP_CMD	&	0xf8;        // 1111,1000 //
	ISP_CMD		=	ISP_CMD	|	PROGRAM_AP_and_Data_Memory_Command;		// 0000,0010 //
	ISP_DATA	=	original_data;

	ISP_IAP_enable();
	ISP_TRIG	=	0x46;        // 触发ISP_IAP命令 //
	ISP_TRIG	=	0xb9;        // 触发ISP_IAP命令 //
	_nop_();

	ISP_IAP_disable();
	return	OK;
}

⌨️ 快捷键说明

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