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

📄 stc读写涵数.txt

📁 STC单片机ISP内部保存数据的读写C函数
💻 TXT
字号:
 Twrite()
{   uint	i	=	0;
	uint	begin_addr	=	0;
    /* 擦除 要修改/写入 的扇区 */
	begin_addr	=	(0x2000 & 0xfe00);	/* 1111,1110,0000,0000; 取扇区地址 */
	ISP_ADDRH	=	(uchar)(begin_addr >> 8);
	ISP_ADDRL	=	0x00;
	ISP_CMD		=	ISP_CMD	&	0xf8;		/* 1111,1000 */
	ISP_CMD		=	ISP_CMD	|	0x03;	/* 0000,0011 */
	/* 打开 ISP,IAP 功能 */
    EA	=	0;	
	ISP_CONTR	=	ISP_CONTR & 0x18;       /* 0001,1000 */
	ISP_CONTR	=	ISP_CONTR | 0x01;
	ISP_CONTR	=	ISP_CONTR | 0x80;       /* 1000,0000 */
	ISP_TRIG	=	0x46;        /* 触发ISP_IAP命令 */
	ISP_TRIG	=	0xb9;        /* 触发ISP_IAP命令 */
	_nop_();
  for(i = 0; i< 17; i++)	/* 写一个字节 */
	{  
   AAA: ISP_ADDRH	=	(uchar)(begin_addr >> 8);
		ISP_ADDRL	=	(uchar)(begin_addr & 0x00ff);
		ISP_DATA	=	SaveTime[i]/256;
		ISP_CMD		=	ISP_CMD	&	0xf8;	/* 1111,1000 */
		ISP_CMD		=	ISP_CMD	|	0x02;		/* 0000,0010 */
 	    ISP_TRIG	=	0x46;	/* 触发ISP_IAP命令 */
		ISP_TRIG	=	0xb9;	/* 触发ISP_IAP命令 */
		_nop_();
	/* 读回来 */
		ISP_DATA	=	0x00;
        ISP_CMD		=	ISP_CMD	&	0xf8;	/* 1111,1000 */
		ISP_CMD     =	ISP_CMD	|	0x01;	/* 0000,0001 */
        ISP_TRIG	=	0x46;	/* 触发ISP_IAP命令 */
		ISP_TRIG	=	0xb9;	/* 触发ISP_IAP命令 */
		_nop_();
 	  if(ISP_DATA != SaveTime[i]/256)	/*  比较对错 */
	  goto AAA;
        begin_addr++;

	    ISP_ADDRH	=	(uchar)(begin_addr >> 8);
		ISP_ADDRL	=	(uchar)(begin_addr & 0x00ff);
		ISP_DATA	=	SaveTime[i]%256;
		ISP_CMD		=	ISP_CMD	&	0xf8;	/* 1111,1000 */
		ISP_CMD		=	ISP_CMD	|	0x02;		/* 0000,0010 */
 	    ISP_TRIG	=	0x46;	/* 触发ISP_IAP命令 */
		ISP_TRIG	=	0xb9;	/* 触发ISP_IAP命令 */
		_nop_();
	/* 读回来 */
		ISP_DATA	=	0x00;
        ISP_CMD		=	ISP_CMD	&	0xf8;	/* 1111,1000 */
		ISP_CMD     =	ISP_CMD	|	0x01;	/* 0000,0001 */
        ISP_TRIG	=	0x46;	/* 触发ISP_IAP命令 */
		ISP_TRIG	=	0xb9;	/* 触发ISP_IAP命令 */
		_nop_();
 	  if(ISP_DATA != SaveTime[i]%256)	/*  比较对错 */
	  { begin_addr--;
	  goto AAA;	 }
        begin_addr++;
	}
    ISP_CONTR	=	ISP_CONTR & 0x7f;	/* 0111,1111 */
	ISP_TRIG	=	0x00;
	EA			=   1;                	/* 开中断 */
}

//**********************************/
Tread()
{	uint	i	=	0,TT;
	uint	begin_addr	=	0;
	/* 打开 ISP,IAP 功能 */
	begin_addr	=	(0x2000 & 0xfe00);
    EA	=	0;	
	ISP_CONTR	=	ISP_CONTR & 0x18;       /* 0001,1000 */
	ISP_CONTR	=	ISP_CONTR | 0x01;
	ISP_CONTR	=	ISP_CONTR | 0x80;       /* 1000,0000 */
  for(i = 0; i< 17; i++)	/* 写一个字节 */
	{  
        ISP_ADDRH	=	(uchar)(begin_addr >> 8);
		ISP_ADDRL	=	(uchar)(begin_addr & 0x00ff);
		ISP_CMD		=	ISP_CMD	&	0xf8;	/* 1111,1000 */
		ISP_CMD		=	ISP_CMD	|	0x01;		/* 0000,0010 */
 	    ISP_TRIG	=	0x46;	/* 触发ISP_IAP命令 */
		ISP_TRIG	=	0xb9;	/* 触发ISP_IAP命令 */
		_nop_();
	  // SaveTime[i]=ISP_DATA;
	  TT=ISP_DATA;
	   _nop_();
	   ISP_DATA=0x00;
	    begin_addr++;

		ISP_ADDRH	=	(uchar)(begin_addr >> 8);
		ISP_ADDRL	=	(uchar)(begin_addr & 0x00ff);
		ISP_CMD		=	ISP_CMD	&	0xf8;	/* 1111,1000 */
		ISP_CMD		=	ISP_CMD	|	0x01;		/* 0000,0010 */
 	    ISP_TRIG	=	0x46;	/* 触发ISP_IAP命令 */
		ISP_TRIG	=	0xb9;	/* 触发ISP_IAP命令 */
		_nop_();
	  // SaveTime[i]=ISP_DATA;
	  SaveTime[i]=TT*256+ISP_DATA;
	   _nop_();
	   ISP_DATA=0x00;
	    begin_addr++;
      }
	ISP_CONTR	=	ISP_CONTR & 0x7f;	/* 0111,1111 */
	ISP_TRIG	=	0x00;
	EA			=   1;                	/* 开中断 */




}

⌨️ 快捷键说明

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