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

📄 globals.c

📁 51单片机加rt8019硬件平台,上web方案及详细代码
💻 C
字号:
#define  GLOBALS  

#include "h\globals.h" 


void delay_us(uint  us)
{
    while(--us);
}

void clean_buf(uchar *buf,uint  len)
{
	while(len)
	{
		len--;
	 	*buf=0;
		buf++;
	}
}
/*****************************************
校验和计算
把要校验的数据分成N个16位的段,把每个段相加
若有落单的则把落单的8位放到高8位作一个16位段
最后把和的高16位和低16位相加再加上进位
该函数没作取反是为了方便检验校验和
*****************************************/
uint cksum(uchar *check,uint len) //计算校验和
{
	uint data i;
	uint xdata *ptr;
	ulong data sum=0;	 

    ptr=(uint xdata *)check;//分成16位的段

	for (i = 0;i <(len >> 1);i++ )
	{
		sum+=*ptr++;
	}

	if (len&0x01)//表示长度为单数
	{
		sum=sum+((*ptr)&0xff00);
	}
	sum=(sum&0xffff)+((sum>>16)&0xffff);//高16位和低16位相加

	if(sum&0xffff0000)	//表示有进位
	{
		sum++;
	}
	return ( (uint)((sum)&0xffff));	 
}

/*****************************************
在字符串s1中查找字符串set,找到后返回
set在s1中的第一个字符的指针,否则返回NULL
******************************************/
uchar * strfind(uchar * s1, uchar * set)
{
	uchar *ptr1, *ptr2;	
	

	if (*set == 0) return(s1);
	for( ; *s1; s1++ )
	{ 	
		for(ptr1 = set, ptr2 = s1; *ptr1 && (*ptr1 == *ptr2); ++ptr1, ++ptr2);		
			if(*ptr1 == 0) return(s1);	
	}
	return NULL;		
}

/*****************************************
 INT型数据转换成ASCII码,转换后的数据放到BUF
******************************************/
itoa(uint value, char * buf, uchar radix)
{
	uint i;
	char * ptr;
	char * temphold;
	char arry[8];

  	temphold = buf;
	ptr = arry + 7;
	*--ptr = 0;		// Insert NULL char
	do
	{
	   // First create string in reverse order
	   i = (value % radix) + 0x30;
		if(i > 0x39) i += 7;
		*--ptr = i;
      value = value / radix;
  	} while(value != 0); 	
	
	for( ; (*buf++ = *ptr++); );
}
/*****************************************
 
******************************************/
void replace_tag(uchar * start, char * tag, char * sub,unsigned char Replacelength) 
{ 
   uchar idata i, flg;
   uchar xdata * ptr;
   
   // Find tag.  If not found - just return
   ptr = strfind(start, tag);
	if (ptr == NULL) return;
   
	flg = TRUE;

   // Replace the 8 char tag with the substitute text
	// Pad on the right with spaces
   for (i=0; i < Replacelength; i++)
	{
   		if (sub[i] == 0) 
			flg = FALSE;
   		if (flg)
			ptr[i] = sub[i];
		else 
			ptr[i] = SPACE;
	}
}

⌨️ 快捷键说明

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