scan.c
来自「实验室连线监控原代码,一台主机采用485总线方式与从机通讯,可以检测学生的连线是」· C语言 代码 · 共 1,336 行 · 第 1/2 页
C
1,336 行
unsigned char i,j,k,l,m=0;
for(j=temp1+1;j<8;j++)
{
for(k=0;k<18;k++)
{
XBYTE[P8255CW+k]=0x80;
}
XBYTE[P8255IC+temp0]=_crol_(0x01,temp1)|_crol_(0x01,j);
for(k=0;k<18;k++)
{
c[k]=XBYTE[P8255IC+k];
}
for(k=0;k<18;k++)
{
for(l=0;l<8;l++)
{
pc[k][l]=_cror_(c[k],l)&0x01;
}
}
if(pc[temp0][temp1]==1)
{
for(j=temp1+1;j<8;j++)
{
if(pc[temp0][j]==1)
{
*s=8*temp0+j+289;
s++;
m++;
d++;
}
else continue;
}
for(i=temp0+1;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pc[i][j]==1)
{
*s=8*i+j+289;
s++;
m++;
d++;
}
else continue;
}
}
if(m>=2)
{
*s=8*temp0+temp1+145;
s+=2;
d+=2;
}
break;
}
else continue;
}
if(m==0)
{
for(i=temp0+1;i<18;i++)
{
for(j=0;j<8;j++)
{
for(k=0;k<18;k++)
{
XBYTE[P8255CW+k]=0x80;
}
XBYTE[P8255IC+temp0]=_crol_(0x01,temp1);
XBYTE[P8255IC+i]=_crol_(0x01,j);
for(k=0;k<18;k++)
{
c[k]=XBYTE[P8255IC+k];
}
for(k=0;k<18;k++)
{
for(l=0;l<8;l++)
{
pc[k][l]=_cror_(c[k],l)&0x01;
}
}
if(pc[temp0][temp1]==1)
{
for(i=temp0+1;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pc[i][j]==1)
{
*s=8*i+j+289;
s++;
m++;
d++;
}
else continue;
}
}
if(m>=2)
{
*s=8*temp0+temp1+289;
s+=2;
d+=2;
}
break;
}
else continue;
}
}
}
}
void main()
{
unsigned char i,j,k,f,g;
unsigned char h=0,l=0,m=0,n=0,p=0,q=0;
unsigned short e,x,y;
unsigned short xdata *w=0x0580;
unsigned short xdata *z=0x05c0;
unsigned short xdata *u=0x0600;
unsigned short xdata *v=0x0640;
unsigned short xdata *r=0x0680;
unsigned short xdata *t=0x0700;
unsigned char idata fa[10],fb[10],fc[10];
unsigned char idata ga[10],gb[10],gc[10];
for(x=0;x<1616;x++)
{
XBYTE[0x1b0+x]=0x00;
}
for(i=0;i<18;i++)
{
for(j=0;j<8;j++)
{
initialize8255();
XBYTE[P8255IA+i]=_crol_(0x01,j);
for(k=0;k<18;k++)
{
a[k]=XBYTE[P8255IA+k];
b[k]=XBYTE[P8255IB+k];
c[k]=XBYTE[P8255IC+k];
}
mapping();
switch(pa[i][j])
{
case 0:
y=8*i+j+1;
*t=8*i+j+1;
t++;
l++;
for(k=0;k<d;k++)
{
if(y==*s++)
goto exit1;
}
temp0=i,temp1=j;
thr_fou_pnts_conn1();
exit1: s=0x01b0;
break;
case 1:
temp0=i,temp1=j;
two_pnts_conn1();
s=0x01b0;
break;
default:
break;
}
}
a[i]=0x00;
}
for(i=0;i<18;i++)
{
for(j=0;j<8;j++)
{
initialize8255();
XBYTE[P8255IB+i]=_crol_(0x01,j);
for(k=0;k<18;k++)
{
b[k]=XBYTE[P8255IB+k];
c[k]=XBYTE[P8255IC+k];
}
mapping();
switch(pb[i][j])
{
case 0:
y=8*i+j+145;
*t=8*i+j+145;
t++;
l++;
for(k=0;k<d;k++)
{
if(y==*s++)
goto exit2;
}
temp0=i,temp1=j;
thr_fou_pnts_conn2();
exit2: s=0x01b0;
break;
case 1:
temp0=i,temp1=j;
two_pnts_conn2();
s=0x01b0;
break;
default:
break;
}
}
b[i]=0x00;
}
for(i=0;i<18;i++)
{
for(j=0;j<8;j++)
{
initialize8255();
XBYTE[P8255IC+i]=_crol_(0x01,j);
for(k=0;k<18;k++)
{
c[k]=XBYTE[P8255IC+k];
}
mapping();
switch(pc[i][j])
{
case 0:
y=8*i+j+289;
*t=8*i+j+289;
t++;
l++;
for(k=0;k<d;k++)
{
if(y==*s++)
goto exit3;
}
temp0=i,temp1=j;
thr_fou_pnts_conn3();
exit3: s=0x01b0;
break;
case 1:
temp0=i,temp1=j;
two_pnts_conn3();
s=0x01b0;
break;
default:
break;
}
}
c[i]=0x00;
}
t=0x0700;
for(i=0;i<l;i++)
{
for(j=0;j<d;j++)
{
if(*(t+i)==*(s+j))
goto exit4;
}
*r=*(t+i);
r++;
m++;
exit4: ;
}
r=0x0680;
if(m<10)
{
s+=d;
for(i=0;i<m;i++)
{
*s++=*r++;
}
}
else if(m>=10)
{
for(k=0;k<18;k++)
{
XBYTE[P8255CW+k]=0x80;
}
for(k=0;k<10;k++)
{
fa[k]=0;
fb[k]=0;
fc[k]=0;
ga[k]=0;
gb[k]=0;
gc[k]=0;
}
for(i=0;i<m/2;i++)
{
e=*r++;
if(e<=144)
{
f=(e-1)/8;
g=(e-1)%8;
fa[i]=f;
ga[i]=_crol_(0x01,g);
}
else if((e>144)&&(e<=288))
{
f=(e-145)/8;
g=(e-145)%8;
fb[i]=f;
gb[i]=_crol_(0x01,g);
}
else if(e>288)
{
f=(e-289)/8;
g=(e-289)%8;
fc[i]=f;
gc[i]=_crol_(0x01,g);
}
}
for(i=0;i<m/2;i++)
{
f=fa[i];
g=ga[i];
if(i>=1)
{
for(k=0;k<=i-1;k++)
{
if(f==fa[k])
{
goto exit5;
}
}
}
for(j=i+1;j<=m/2;j++)
{
if(fa[j]==fa[i])
{
g|=ga[j];
}
}
XBYTE[P8255IA+fa[i]]=g;
exit5: ;
}
for(i=0;i<m/2;i++)
{
f=fb[i];
g=gb[i];
if(i>=1)
{
for(k=0;k<=i-1;k++)
{
if(f==fb[k])
{
goto exit6;
}
}
}
for(j=i+1;j<=m/2;j++)
{
if(fb[j]==fb[i])
{
g|=gb[j];
}
}
XBYTE[P8255IB+fb[i]]=g;
exit6: ;
}
for(i=0;i<m/2;i++)
{
f=fc[i];
g=gc[i];
if(i>=1)
{
for(k=0;k<=i-1;k++)
{
if(f==fc[k])
{
goto exit7;
}
}
}
for(j=i+1;j<=m/2;j++)
{
if(fc[j]==fc[i])
{
g|=gc[j];
}
}
XBYTE[P8255IC+fc[i]]=g;
exit7: ;
}
for(k=0;k<18;k++)
{
a[k]=XBYTE[P8255IA+k];
b[k]=XBYTE[P8255IB+k];
c[k]=XBYTE[P8255IC+k];
}
for(k=0;k<18;k++)
{
for(l=0;l<8;l++)
{
pa[k][l]=_cror_(a[k],l)&0x01;
pb[k][l]=_cror_(b[k],l)&0x01;
pc[k][l]=_cror_(c[k],l)&0x01;
}
}
for(k=0;k<18;k++)
{
for(l=0;l<8;l++)
{
if(pa[k][l]==1)
{
*u++=8*k+l+1;
n++;
}
}
}
for(k=0;k<18;k++)
{
for(l=0;l<8;l++)
{
if(pb[k][l]==1)
{
*u++=8*k+l+145;
n++;
}
}
}
for(k=0;k<18;k++)
{
for(l=0;l<8;l++)
{
if(pc[k][l]==1)
{
*u++=8*k+l+289;
n++;
}
}
}
u=0x0600;
r=0x0680;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(*(r+i)==*(u+j))
goto exit8;
}
*v++=*(r+i);
q++;
exit8: ;
}
u=0x0600;
v=0x0640;
if(n>=q)
{
s+=d;
for(i=0;i<q;i++)
{
*s++=*v;
*v=0;
v++;
d++;
}
q=0;
}
else if(n<=q)
{
s+=d;
for(i=0;i<n;i++)
{
*s++=*u;
*u=0;
u++;
d++;
}
n=0;
}
d++;
}
s=0x01b0;
u=0x0600;
v=0x0640;
if((n+q)<10)
{
s+=d;
for(i=0;i<(n+q);i++)
{
*s++=(*u++)+(*v++);
}
}
else if((n+q)>=10)
{
for(k=0;k<18;k++)
{
XBYTE[P8255CW+k]=0x80;
}
for(k=0;k<10;k++)
{
fa[k]=0;
fb[k]=0;
fc[k]=0;
ga[k]=0;
gb[k]=0;
gc[k]=0;
}
for(i=0;i<(n+q)/2;i++)
{
e=(*u++)+(*v++);
if(e<=144)
{
f=(e-1)/8;
g=(e-1)%8;
fa[i]=f;
ga[i]=_crol_(0x01,g);
}
else if((e>144)&&(e<=288))
{
f=(e-145)/8;
g=(e-145)%8;
fb[i]=f;
gb[i]=_crol_(0x01,g);
}
else if((e>144)&&(e<=288))
{
f=(e-289)/8;
g=(e-289)%8;
fc[i]=f;
gc[i]=_crol_(0x01,g);
}
}
for(i=0;i<(n+q)/2;i++)
{
f=fa[i];
g=ga[i];
if(i>=1)
{
for(k=0;k<=i-1;k++)
{
if(f==fa[k])
{
goto exit9;
}
}
}
for(j=i+1;j<=(n+q)/2;j++)
{
if(fa[j]==fa[i])
{
g|=ga[j];
}
}
XBYTE[P8255IA+fa[i]]=g;
exit9: ;
}
for(i=0;i<(n+q)/2;i++)
{
f=fb[i];
g=gb[i];
if(i>=1)
{
for(k=0;k<=i-1;k++)
{
if(f==fb[k])
{
goto exit10;
}
}
}
for(j=i+1;j<=(n+q)/2;j++)
{
if(fb[j]==fb[i])
{
g|=gb[j];
}
}
XBYTE[P8255IB+fb[i]]=g;
exit10: ;
}
for(i=0;i<(n+q)/2;i++)
{
f=fc[i];
g=gc[i];
if(i>=1)
{
for(k=0;k<=i-1;k++)
{
if(f==fc[k])
{
goto exit11;
}
}
}
for(j=i+1;j<=(n+q)/2;j++)
{
if(fc[j]==fc[i])
{
g|=gc[j];
}
}
XBYTE[P8255IC+fc[i]]=g;
exit11: ;
}
for(k=0;k<18;k++)
{
a[k]=XBYTE[P8255IA+k];
b[k]=XBYTE[P8255IB+k];
c[k]=XBYTE[P8255IC+k];
}
for(k=0;k<18;k++)
{
for(l=0;l<8;l++)
{
pa[k][l]=_cror_(a[k],l)&0x01;
pb[k][l]=_cror_(b[k],l)&0x01;
pc[k][l]=_cror_(c[k],l)&0x01;
}
}
for(k=0;k<18;k++)
{
for(l=0;l<8;l++)
{
if(pa[k][l]==1)
{
*w++=8*k+l+1;
h++;
}
}
}
for(k=0;k<18;k++)
{
for(l=0;l<8;l++)
{
if(pb[k][l]==1)
{
*w++=8*k+l+145;
h++;
}
}
}
for(k=0;k<18;k++)
{
for(l=0;l<8;l++)
{
if(pc[k][l]==1)
{
*w++=8*k+l+289;
h++;
}
}
}
w=0x0580;
u=0x0600;
v=0x0640;
for(i=0;i<n+q;i++)
{
for(j=0;j<h;j++)
{
if(*(u+i)+*(v+i)==*(w+j))
goto exit12;
}
*z++=*(u+i)+*(v+i);
p++;
exit12: ;
}
s=0x01b0;
w=0x0580;
z=0x05c0;
s+=d;
for(i=0;i<h;i++)
{
*s++=*w++;
}
s++;
for(i=0;i<p;i++)
{
*s++=*z++;
}
}
while(1);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?