📄 globals.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 + -