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

📄 misc.c

📁 手机充电器的电路板的测试机架的测试程序,利用AVR的AD转换器测试各点的电压.
💻 C
字号:

#include "extern.h"
RS232ST Rs232;

void Delay(unsigned char ms)
{
	DelayCount=ms;
	while(DelayCount) DispChange();
}
void GetKey(void)
{
	Key.hz=Key.Code;
	Key.Code=0;
}
void gSet(unsigned char st)
{
	g.State=st;
//	g.Flag.DISP=1;
	g.ADTime=0;
	g.ms100=0;
}
void Div(unsigned long Div0,unsigned int radix,unsigned char Wei,unsigned char *ptr)
{//Div0 被除数。radix 除数。Wei 小数位数。*ptr 存放结果的地址。
	unsigned char uc0;
	unsigned int ut;
	ut=Div0/radix;
	ptr=BinToStr(ut,10,ptr);
	*ptr++ ='.';
	*ptr='0';
	
	for(uc0=0;uc0<Wei;uc0++){
		Div0=Div0%radix;
		if(!Div0) break;
		Div0*=10;
		ut=Div0/radix;
		*ptr++=ut+'0';
		*ptr=0;
	}
	*(ptr+uc0)=0;
}
unsigned int Mul(unsigned char *ptr,unsigned int Ref)
{//ptr 指向字符.Ref为进制数.
	unsigned int uint[3];
	uint[0]=0;
	while(*ptr!='.'){
		uint[0] *=10;
		uint[0] +=*ptr-'0';
		ptr++;
	}
	ptr++;
	uint[0] *=Ref;
	uint[1]=1;
	uint[2]=0;
	while(*ptr){
		uint[2] *=10;
		uint[2] +=*ptr-'0';
		uint[1] *=10;
		ptr++;
	}
	uint[2] *=Ref;
	uint[2] /=uint[1];
	return(uint[0]+uint[2]);
}

unsigned int StrToBin(unsigned char *ptr,unsigned char ch)
{//把一字符串变为二进制.当指针遇见ch时退出.
	unsigned int us0;
	us0=0;
	while(*ptr!=ch){
		us0 *=10;
		us0+=(*ptr)-'0';
		ptr++;
	}
	return(us0);
}

unsigned char * BinToStr(unsigned long d,unsigned int radix,unsigned char *ptr)
{
	unsigned char buf[10];
	unsigned char uc1, *q;
   	q=(unsigned char *)&buf[9];
   	*q=0;
   	do{
		uc1 = (d % radix) + '0';
		if( uc1 > '9' )
			uc1+='A'-'0'-10;
		*--q = uc1;
	} while( d /= radix );
	for(;(*ptr++ = *q++););
	ptr--;
	return (ptr);
}

void StrCopy(unsigned char *to,unsigned char *from) 
{
	for(;(*to++ = *from++););
}
  /*
unsigned int Average(unsigned int *ptr,unsigned char num)
{
	unsigned char i,max,min;
	unsigned int sum;
	max=0;
	min=1;
	if(ptr[max]<ptr[min]){
		max=1;
		min=0;
	}
	for(i=2;i<num;i++){
		if(ptr[i]>ptr[max]) max=i;
		if(ptr[i]<ptr[min]) min=i;
	}
	ptr[max]=0;
	ptr[min]=0;
	sum=0;
	for(i=0;i<num;i++){
		sum +=ptr[i];
	}
	i=num-2;
	sum /=i;
	return(sum);
}	
   */
void Rs232Service(void)
{
	switch(Rs232.State){
		case 0:
			PutCh('A');
			Rs232.State=1;
		case 1:
			Rs232.Count=0;
			Rs232.Flag.Rx=0;
			Rs232.State++;
		case 2:
			if(!Rs232.Flag.Rx) break;
			Rs232.Flag.Rx=0;
			Rs232.Buf[Rs232.Count++]=Rs232.Ch;
			Rs232.Buf[Rs232.Count]=0;
			if(Rs232.Ch==0x0A){
				Rs232.State=3;
				break;
			}
			PutCh(Rs232.Ch);
			break;
		case 3:
			for(uc[1]=0;uc[1]<2;uc[1]++) Buf[uc[1]]=Rs232.Buf[uc[1]];
			Buf[uc[1]]=0;
			uc[2]=StrToBin(Buf,0);		//Address.
			uc[2] <<=4;
			uc[1]=3;
			for(uc[0]=0;uc[0]<4;uc[0]++){	//Minmin.
				EEPromWrite(uc[2],Rs232.Buf[uc[1]]);
				uc[2]++;
				uc[1]++;
			}
			uc[1]=8;
			for(uc[0]=0;uc[0]<4;uc[0]++){	//Minmax.
				EEPromWrite(uc[2],Rs232.Buf[uc[1]]);
				uc[2]++;
				uc[1]++;
			}
			uc[1]=13;
			for(uc[0]=0;uc[0]<4;uc[0]++){	//Maxmin.
				EEPromWrite(uc[2],Rs232.Buf[uc[1]]);
				uc[2]++;
				uc[1]++;
			}
			uc[1]=18;
			for(uc[0]=0;uc[0]<4;uc[0]++){	//Maxmax.
				EEPromWrite(uc[2],Rs232.Buf[uc[1]]);
				uc[2]++;
				uc[1]++;
			}
			Rs232.State=1;
			PutCh(Rs232.Ch);
			break;
	}
}

⌨️ 快捷键说明

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