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

📄 pol.c

📁 用CS5532做的无线吊钩称的吊称端程序
💻 C
字号:
#include <reg52.h>


///////////////////////////////////////////////////////////////
#define  fash                 6          //第一滤波区间大小
#define  fash1                16         //第二滤波区间大小
#define  mer1                 200  
#define  mer2                 80
#define  mer3                 18         //
#define  wtime0               5          //
#define  wtime1               5          //
#define  wtime2               20         //30
#define  wtime3               1
#define  wtime4               5
#define  wdtm                 20         //稳定次数,35
//////////////////////////////

/*#define fash 6
#define fash1 16
#define mer1 200		//300	//400	//650				//200
#define mer2 80		//350	//200	//350			//100
#define mer3 18				//45
#define wtime0 5		//5
#define wtime1 5		//5
#define wtime2 20	 	//20			//30
#define wtime3 1
#define wtime4 5		//10		//5
#define wdtm 20		//22			//20			//10*/

//unsigned char bit_4,bit_5;
//extern unsigned char ad_flag;		//BIT4 -- bit_4,BIT5 -- bit_5
						//BIT6 -- c_f0

extern bit pick,stab1;

unsigned long int xdata adbuff[24];		//from 28h

unsigned long int xdata i1c,i21;
unsigned char xdata c1f,c12,c13,c14,c15,c16,c17,c11,c_f0;		//c_f0;

  signed long data ad_out;		//POL输出的内码


void InitPol(void)
{
	c13 = 1;
	c14 = 1;
	c17 = wtime2;
	c1f = 1;
}

unsigned long int madd(unsigned char n1,unsigned char n2)
{
	unsigned char loop;
	unsigned long int i0b;
	i0b = 0;
	for (loop = 0; loop<n2; loop++,n1++)
	{
		i0b = i0b + adbuff[n1];
	}
	return(i0b);
}

void move(unsigned char dest,unsigned char num)
{
	unsigned char loop,sour;
	sour = dest + 1;
	for (loop = 0; loop < num; loop++,dest++,sour++)
	{
		adbuff[dest] = adbuff[sour];
	}
}

void gal(unsigned long int li1)
{	
	unsigned long int i08;
	unsigned char cc;

	move(0,2);
	adbuff[1] = li1;		//mr;
//	madd(0,2);
//	li1 = i0b;
	li1 = madd(0,2);
	i08 = li1;


	i08 = i08 - i21;
	if (i08 > 0x80000000 ) i08 = ~i08;

	if (i08 > mer1) goto cal3;
	goto cal5;
//cal2:	c1f = wtime3;
cal3:	
	c13--;
	if (c13!=0) return;
	c13 = 1;
	c14 = 1;
	c15 = 1;
	c11 = 1;
	goto cal6;
cal5:
	if ( (c14 ^ fash) !=0 ) {c14++;}
	else c13 = wtime0;
//	if (c14 != fash){c13=wtime0;}
//	else c14++;
cal6:	move(2,6);
	adbuff[7] = li1;

//	madd(8-c14,c14);
	li1 = madd(8-c14,c14);
	li1 = li1 / c14;

//	li1 = i0b/c14;
	i08 = li1;
	c_f0 = 0;
//	ad_flag &= ~BIT6;
	i08 = i08 - i21;
	if ( i08 > 0x80000000 )
	{
		i08 = ~i08;
		c_f0 = 1;
//		ad_flag |= BIT6;
	}
/*	if (i08 > i21)
	{
		i08 = i08 - i21;
		c_f0 = 0;
	}
	else
	{
		i08 = i21 - i08;
		c_f0 = 1;
	}*/
	i21 = li1;
//cal7:
/*	if (i08 >= 0x100) goto cal8;
	if (i08 >= mer2) goto cal8;
	goto cal10;*/
	if (i08 < mer2) goto cal10;

//cal8:	
	c15--;
	if (c15 != 0) return;
	c15 = 1;
	c16 = 1;
	c11 = 1;
	goto cal14;
cal10:
	if ( (c14 ^ fash) != 0) {goto cal14;}
	c1f--;
	if (c1f!=0) 
	{
		i08 = i08 >> 1;

		if (c_f0 != 0 ) li1 = li1 - i08;		//????
//		if ( (ad_flag & BIT6) != 0) li1 = li1 - i08;
		else li1 = li1 + i08;
	}
	c1f=1;
	if ((c16 ^ fash1) !=0) {c16++;}

cal14:	move(8,16);

	adbuff[23] = li1;
//	madd(24-c16,c16);
	li1 = madd(24-c16,c16);
	li1 = li1 / c16;
	
//	li1 = i0b / c16;
	i21 = li1;
	i08 = li1;

	i08 = i08 - ad_out;
	if (i08 > 0x80000000) i08 = ~i08;

/*	if (i08 < 0x100)
	{
		li1 = (unsigned long) mer3;
		if (i08 < li1) goto cal17;
	}*/
	if (i08 > mer3) goto cal16;
	goto cal17;
cal16:	c11--;
	if (c11!=0) return;
	c11=1;
//	bit_5 = 0;
//	ad_flag &= ~BIT5;
	stab1 = 0;
	c12=wdtm;
	goto cal18;

cal17:	if ((c16 ^fash1) !=0) goto cal16;

	cc = c1f;
	cc--;
	if (cc!=0) goto cal16;
	c15 = wtime1;
	c11 = wtime4;
//	if (movebit != 2) c11 = 12;			//add
	c12--;
	if (c12 != 0) goto cal18;
	c12 =1;
//	bit_5 = 1;
//	ad_flag |= BIT5;
	stab1 = 1;

	i1c = i1c + li1;

	c17--;
	if (c17!=0) return;

//	i0b = i1c;

//	li1 = i0b/wtime2;	

	li1 = i1c / wtime2;
	
	ad_out = ad_out + li1;
	ad_out = ad_out >> 1;			//note

	i21 = ad_out;
cal18:
	ad_out = i21;
	i1c = 0;
//	bit_4 = 1;
//	ad_flag |= BIT4;
	pick = 1;
	c17 = wtime2;
}
  

⌨️ 快捷键说明

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