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