📄 scan.c
字号:
#include<stdio.h>
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define P8255CW 0xffe0
#define P8255IA 0xff20
#define P8255IB 0xff60
#define P8255IC 0xffa0
unsigned char xdata pa[18][8]=0x0000;
unsigned char xdata pb[18][8]=0x0090;
unsigned char xdata pc[18][8]=0x0120;
unsigned char a[18],b[18],c[18];
unsigned char temp0,temp1,d=0;
unsigned short xdata *s=0x01b0;
void initialize8255(void)
{
unsigned char k;
for(k=0;k<18;k++)
{
XBYTE[P8255CW+k]=0x80;
}
}
void mapping(void)
{
unsigned char k,l;
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;
}
}
}
void two_pnts_conn1(void)
{
unsigned char i,j;
for(j=temp1+1;j<8;j++)
{
if(pa[temp0][j]==1)
{
s+=d;
*s=8*temp0+temp1+1;
s++;
d++;
*s=8*temp0+j+1;
s+=2;
d+=2;
}
else continue;
}
for(i=temp0+1;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pa[i][j]==1)
{
s+=d;
*s=8*temp0+temp1+1;
s++;
d++;
*s=8*i+j+1;
s+=2;
d+=2;
}
else continue;
}
}
for(i=0;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pb[i][j]==1)
{
s+=d;
*s=8*temp0+temp1+1;
s++;
d++;
*s=8*i+j+145;
s+=2;
d+=2;
}
else if(pc[i][j]==1)
{
s+=d;
*s=8*temp0+temp1+1;
s++;
d++;
*s=8*i+j+289;
s+=2;
d+=2;
}
else continue;
}
}
}
void two_pnts_conn2(void)
{
unsigned char i,j;
for(j=temp1+1;j<8;j++)
{
if(pb[temp0][j]==1)
{
s+=d;
*s=8*temp0+temp1+145;
s++;
d++;
*s=8*temp0+j+145;
s+=2;
d+=2;
}
else continue;
}
for(i=temp0+1;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pb[i][j]==1)
{
s+=d;
*s=8*temp0+temp1+145;
s++;
d++;
*s=8*i+j+145;
s+=2;
d+=2;
}
else continue;
}
}
for(i=0;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pc[i][j]==1)
{
s+=d;
*s=8*temp0+temp1+145;
s++;
d++;
*s=8*i+j+289;
s+=2;
d+=2;
}
else continue;
}
}
}
void two_pnts_conn3(void)
{
unsigned char i,j;
for(j=temp1+1;j<8;j++)
{
if(pc[temp0][j]==1)
{
s+=d;
*s=8*temp0+temp1+289;
s++;
d++;
*s=8*temp0+j+289;
s+=2;
d+=2;
}
else continue;
}
for(i=temp0+1;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pc[i][j]==1)
{
s+=d;
*s=8*temp0+temp1+289;
s++;
d++;
*s=8*i+j+289;
s+=2;
d+=2;
}
else continue;
}
}
}
void thr_fou_pnts_conn1(void)
{
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[P8255IA+temp0]=_crol_(0x01,temp1)|_crol_(0x01,j);
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;
}
}
if(pa[temp0][temp1]==1)
{
for(j=temp1+1;j<8;j++)
{
if(pa[temp0][j]==1)
{
*s=8*temp0+j+1;
s++;
m++;
d++;
}
else continue;
}
for(i=temp0+1;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pa[i][j]==1)
{
*s=8*i+j+1;
s++;
m++;
d++;
}
else continue;
}
}
for(i=0;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pb[i][j]==1)
{
*s=8*i+j+145;
s++;
m++;
d++;
}
else if(pc[i][j]==1)
{
*s=8*i+j+289;
s++;
m++;
d++;
}
continue;
}
}
if(m>=2)
{
*s=8*temp0+temp1+1;
s+=2;
d+=2;
}
}
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[P8255IA+temp0]=_crol_(0x01,temp1);
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];
}
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;
}
}
if(pa[temp0][temp1]==1)
{
for(i=temp0+1;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pa[i][j]==1)
{
*s=8*i+j+1;
s++;
m++;
d++;
}
else continue;
}
}
for(i=0;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pb[i][j]==1)
{
*s=8*i+j+145;
s++;
m++;
d++;
}
else if(pc[i][j]==1)
{
*s=8*i+j+289;
s++;
m++;
d++;
}
continue;
}
}
if(m>=2)
{
*s=8*temp0+temp1+1;
s+=2;
d+=2;
}
}
else continue;
}
}
}
if(m==0)
{
for(i=0;i<18;i++)
{
for(j=0;j<8;j++)
{
for(k=0;k<18;k++)
{
XBYTE[P8255CW+k]=0x80;
}
XBYTE[P8255IA+temp0]=_crol_(0x01,temp1);
XBYTE[P8255IB+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];
}
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;
}
}
if(pa[temp0][temp1]==1)
{
for(i=0;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pb[i][j]==1)
{
*s=8*i+j+145;
s++;
m++;
d++;
}
else if(pc[i][j]==1)
{
*s=8*i+j+289;
s++;
m++;
d++;
}
continue;
}
}
if(m>=2)
{
*s=8*temp0+temp1+1;
s+=2;
d+=2;
}
break;
}
else continue;
}
}
}
if(m==0)
{
for(i=0;i<18;i++)
{
for(j=0;j<8;j++)
{
for(k=0;k<18;k++)
{
XBYTE[P8255CW+k]=0x80;
}
XBYTE[P8255IA+temp0]=_crol_(0x01,temp1);
XBYTE[P8255IC+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];
}
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;
}
}
if(pa[temp0][temp1]==1)
{
for(i=0;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pc[i][j]==1)
{
*s=8*i+j+289;
s++;
m++;
d++;
}
continue;
}
}
if(m>=2)
{
*s=8*temp0+temp1+1;
s+=2;
d+=2;
}
break;
}
else continue;
}
}
}
}
void thr_fou_pnts_conn2(void)
{
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[P8255IB+temp0]=_crol_(0x01,temp1)|_crol_(0x01,j);
for(k=0;k<18;k++)
{
b[k]=XBYTE[P8255IB+k];
c[k]=XBYTE[P8255IC+k];
}
for(k=0;k<18;k++)
{
for(l=0;l<8;l++)
{
pb[k][l]=_cror_(b[k],l)&0x01;
pc[k][l]=_cror_(c[k],l)&0x01;
}
}
if(pb[temp0][temp1]==1)
{
for(j=temp1+1;j<8;j++)
{
if(pb[temp0][j]==1)
{
*s=8*temp0+j+145;
s++;
m++;
d++;
}
else continue;
}
for(i=temp0+1;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pb[i][j]==1)
{
*s=8*i+j+145;
s++;
m++;
d++;
}
else continue;
}
}
for(i=0;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[P8255IB+temp0]=_crol_(0x01,temp1);
XBYTE[P8255IB+i]=_crol_(0x01,j);
for(k=0;k<18;k++)
{
b[k]=XBYTE[P8255IB+k];
c[k]=XBYTE[P8255IC+k];
}
for(k=0;k<18;k++)
{
for(l=0;l<8;l++)
{
pb[k][l]=_cror_(b[k],l)&0x01;
pc[k][l]=_cror_(c[k],l)&0x01;
}
}
if(pb[temp0][temp1]==1)
{
for(i=temp0+1;i<18;i++)
{
for(j=0;j<8;j++)
{
if(pb[i][j]==1)
{
*s=8*i+j+145;
s++;
m++;
d++;
}
else continue;
}
}
for(i=0;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=0;i<18;i++)
{
for(j=0;j<8;j++)
{
for(k=0;k<18;k++)
{
XBYTE[P8255CW+k]=0x80;
}
XBYTE[P8255IB+temp0]=_crol_(0x01,temp1);
XBYTE[P8255IC+i]=_crol_(0x01,j);
for(k=0;k<18;k++)
{
b[k]=XBYTE[P8255IB+k];
c[k]=XBYTE[P8255IC+k];
}
for(k=0;k<18;k++)
{
for(l=0;l<8;l++)
{
pb[k][l]=_cror_(b[k],l)&0x01;
pc[k][l]=_cror_(c[k],l)&0x01;
}
}
if(pb[temp0][temp1]==1)
{
for(i=0;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;
}
}
}
}
void thr_fou_pnts_conn3(void)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -