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

📄 scan.c

📁 实验室连线监控原代码,一台主机采用485总线方式与从机通讯,可以检测学生的连线是否正常,那些线没有连好,非常好的教学实验检测.
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -