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

📄 gather.c

📁 多路数据采集 +lcd +菜单功能显示 max485通信
💻 C
📖 第 1 页 / 共 2 页
字号:
        check();
        point2++;

        eepwrite(point2/256,point2%256,'0');
        check();

     }


}




void time0() interrupt 1
{
      uchar y,a;
      uint b,c;
      TR0=1;
      TL0=0x00;
      TH0=0x4c;

      dog=1;
      nop();
      dog=0;
      nop();    //喂狗
      ms2=1;
       count++;
      if(count==19)
      { ms50=1;        // 1s 时间到了 开始发送
        count=0;       //恢复准备
        ms2=1;         //还不知道用来干什么
        
        address=0;
        qi=0;
      }
       if(ms50==1)
      {
         for(y=0;y<2;y++)
           { se=0;
             qi=0; //发送前把接收的位置清零 从高位其接收存到addate中
             send(address); //收回来的是哪一路 共有四路模拟量
             delay6ms(10);         //延时需要7MS 发送1 接收3个 用了4 在给出一半的冗余时间
             if(se==1)
               {  se=0;
                  break ;
               }
            }






         address++;
         
         if((address==4))
          
          {
             b=point1;
             c=point2;
             point1=(point1+12)%0x7fef;

             point2=(point2+12)%0x7fef;
             for(a=0;a<4;a++)
              {
                    eepwrite(c/256,c%256,adtemp[0][a].adh);
                    //addate[9][a].adh=adtemp[0][a].adh;
                    check();

                    c=c++;
                    c=c%0x7fef;
                    //if(c==0x7fef)
                    //  c=0;

                    eepwrite(c/256,c%256,adtemp[0][a].adl);
                    //addate[9][a].adl=adtemp[0][a].adl;
                    check();

                    c++;
                    c=c%0x7fef;
                    //if(point2==0x7fef)
                    //  point2=0;

                    eepwrite(c/256,c%256,adtemp[0][a].adig);
                    //addate[9][a].adig=adtemp[0][a].adig;
                    check();
                    c++;
                    //if(point2==0x7fef)
                     // point2=0;
                     c=c%0x7fef;
               }





            address=0;
            ms50=0;
            //adp1++;
            //adp2++;
            //adp1=adp1%10;  //十路中的循环
            //adp2=adp2%10;//十路循环
          }

      }

    

}



void ext1() interrupt 2
{
}

void time1() interrupt 3
{
}

void serial() interrupt 4   //串行中断 接收数据
{

//读回来的数据还没有保存到eeprom
    uchar ud=0;
    if(TI==1)
       ;
    else
    { if(RI==1)
       {


             switch(qi)
             {
               case 0:
                    adtemp[0][address].adh=SBUF;   //这里应该与上一个数

                    se=0;
                    break;
               case 1:
                    adtemp[0][address].adl=SBUF;
                    se=0;

                    break;
               case 2:
                    adtemp[0][address].adig=SBUF;
                    se=0;

                    break;
               case 3:
                    ud=SBUF;
                    if(adtemp[0][address].adh+adtemp[0][address].adl+adtemp[0][address].adig==ud)
                    {
                       se=1;
                       ms6=1;
                    }

                    qi=0;


                    break;
             }

       qi++;
      RI=0;



        }







    }

}







void main(void)
{    uchar i,j,led,mul,m;




//***********************************************************************************//
    {     //一般的初始化
      SP=0x60;
      con=0;         //  开液晶屏
      cs=1;          //  iic eeprom 有效
      delay(100);
      disinit();     //液晶显示初始化
      adp2=9;  //指向最后一点数据
      adp1=0;  //指向第一点数据
     }      // 一般的初始化结束











     point1=eepread(0x7f,0xff);
     point1<<=8;
     point1=point1|eepread(0x7f,0xfe);
     point2=eepread(0x7f,0xfd);
     point2<<=8;
     point2=point2|eepread(0x7f,0xfc);

     which=eepread(0x7f,0xfb); //读出上次掉电前转换的是哪一路
     select=eepread(0x7f,0xfa);//读出上次掉电前是什么模式

     move=eepread(0x7f,0xf9);

     pause=eepread(0x7f,0xf8);  //初始值可以写进去



//****************************************读出数据最后一次写入的10点数据***********************************//
       point1=0;
       for(i=0;i<4;i++)
       for(j=0;j<4;j++)
          { // addate[10][4];
            
            addate[i][j].adh=eepread(point1/256,point1%256);
            point1++;

            addate[i][j].adl=eepread(point1/256,point1%256);
            point1++;

            addate[i][j].adig=eepread(point1/256,point1%256);
            point1++ ;
          }

       for(i=7;i<13;i++)
       for(j=0;j<4;j++)
          { 
            
            addate[i][j].adh=eepread(point1/256,point1%256);
            point1++;

            addate[i][j].adl=eepread(point1/256,point1%256);
            point1++;

            addate[i][j].adig=eepread(point1/256,point1%256);
            point1++ ;
          }


           maxinit();//总线485通信初始化

           IE0=0;
           EX0=1;    //kai wai bu zhong duan
           select=0;
           pause=0;

           while(1)
           {   //which
               ms2=1;
              if(select==1)
               {


                  

                  if(ms2==1)
                   {    
                     
                     ms2=0;
                     m=(mul+adp1)%10;;
                      if(m==4||m==5||m==6)
                      m=m+6;
                   //z中断应不应该关掉呢??  不能关的
                    for(i=0;i<4;i++)
                        {
                         
                         if(i==1)
                         write(0x90,0);
                         else
                            if(i==2)
                            write(0x88,0);
                            else
                          write(0x80+i*8,0);
                          write(0x30+i,1);
                          
                          write(':',1);
                           
                          
                          write(' ',1);
                          
                          write(0x30+addate[m][i].adh/10,1);
                          
                          write('.',1);
                           
                          write(0x30+addate[m][i].adh%10,1);
                          
                          write(0x30+addate[m][i].adl/10,1);
                          
                          write(0x30+addate[m][i].adl%10,1);
                          
                          write('(',1);
                           
                          write('V',1);
                          
                          write(')',1);
                           
                          write(' ',1);
                          

                          write(0x30+addate[m][i].adig/10,1);
                          
                          write(0x30+addate[m][i].adig%10,1);
                           
                          write(' ',1);
                          
                          if(m==10||m==11||m==12)
                      
                          write(0x30+m-6,1);
                          else 
                          write(0x30+m,1);
                          
                      }  //for
                                
                   }     //ms2

                  led=key();

                  if(led!=0xff)
                  {
                    if(led==10)
                    {
                     select=0;
                    }
                    else
                      if(led==11)
                      {
                        pause=!pause;
                      }
                      else
                        mul=led;
                   }
                  

               } //select
              else
               {
                 

                  if(pause==1)
                   {

                     led=key();

                  if(led!=0xff)
                  {
                    if(led==10)
                    {
                     select=1;
                    }
                    else
                      if(led==11)
                      {
                        pause=!pause;
                      }
                      else
                        mul=led;
                   }
                      continue   ;
                   }
                  else
                   { 
                     if(ms2)
                      { ms2=0;
                        ET0=0;
                        for(i=0;i<4;i++)
                         {
                                                 
                          if(i==1)
                         write(0x90,0);
                         else
                            if(i==2)
                            write(0x88,0);
                            else
                            write(0x80+8*i,0);
                          write(0x30+i,1);
                          noop();
                          write(':',1);
                          noop();
                          //write(' ',1);
                          write(' ',1);
                          noop();
                          write(0x30+addate[adp2][i].adh/10,1);
                          noop();
                          write('.',1);
                          noop();
                          write(0x30+addate[adp2][i].adh%10,1);
                           noop();
                          write(0x30+addate[adp2][i].adl/10,1);
                           noop();
                          write(0x30+addate[adp2][i].adl%10,1);
                           noop();
                          write('(',1);
                           noop();
                          write('V',1);
                           noop();
                          write(')',1);
                           noop();
                          write(' ',1);
                           noop();
                          //write(' ',1);
                          write(0x30+addate[adp2][i].adig/10,1);
                           noop();
                          write(0x30+addate[adp2][i].adig%10,1);
                           noop();
                          write(' ',1);
                           noop();
                          write(0x30+adp2,1);
                           noop();
                         }   //for i=0
                       }     //if ms2
                       ET0=1;
                     }         //else2

                   led=key();

                  if(led!=0xff)
                  {
                    if(led==10)
                    {
                     select=1;
                    }
                    else
                      if(led==11)
                      {
                        pause=!pause;
                      }
                      else
                        mul=led;
                   }
                       
                }         // else1
           } // while

}  // main



⌨️ 快捷键说明

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